Działanie na stronie przez program

0

Witam, piszę tutaj z pewnym problemem. Postawiłem sobie za cel napisanie programu. Nie za bardzo tylko wiem jak on działa... Może inaczej, mam program (ogólnodostępny) który loguje się na postać w pewnej grze przeglądarkowej i może w niej robić wszystko tak jakbym to ja robił, lecz on to robi po ustawieniu bez mojego udziału. Czyli innymi słowy jest to bot, działa w tle, więc taskero'podobne programy odpadają. Na jakiej zasadzie i w jakim języku może działać ten program? Poniżej załączam :

SS: http://img17.imageshack.us/img17/3070/52907588.png
Download : http://sourceforge.net/projects/sfbot/files/v2.1.0/SFBot_v2.1.0.zip/download

GUI mógłbym zrobić w Javie ale nie wiem jak oni to zrobili że przez ten program postać loguje się na postać i może tam wszystko robić...

Proszę o pomoc.

@Edit
Chciałbym jeszcze dodać że ilość tych kont jest niemalże nieograniczona, kiedyś sam używałem 15 kont jednocześnie i o dziwo program wciąż pobierał bardzo mało z pamięci komputera. Jakbym odpalił z 5 kont w osobnych kartach przeglądarki to komputer by ledwo chodził, a tutaj 15 i wszystko chodzi bez problemów...

0

nie wiem jak oni to zrobili że przez ten program postać loguje się na postać i może tam wszystko robić...

Zastanów się. Jak to jest, że przeglądarka loguje się na postać i może tam wszystko robić... (oczywiście nie automatycznie)

0

No dzieje się tak poprzez jakąś akcje która wprowadza dane konta na stronę, ale gdzie się to dzieje? U mnie na komputerze w tle czy na jakimś VPS tego programu?

0

Poczytaj o protokole http. Musisz podejrzeć, co wysyła i odbiera przeglądarka i zrobić dokładnie to samo w swoim programie. Język wybierz ten, który Ci najbardziej odpowiada.

0

Programy takie działają jak przeglądarka, czyli wysyłają żądania HTTP i odbierają kod strony, który odpowiednio parsują. Tu nie ma żadnej magii. Jedynie ewentualny kod js może powodować jakieś kłopoty.

PS. Czy wiesz, że używanie takich programów jest zwykle zabronione przez regulamin i grozi banem?

0

@up Zdaję sobie sprawę że jest to zabronione lecz powyższy program który przedstawiłem w pierwszym poście, działa już od niemalże 3 lat i żadne z moich kilkunastu kont nie zostało zbanowane. Niektórym po prostu bardziej zależy na ilości graczy niż na tym czy przestrzegają oni regulaminu.

Mógłby mi ktoś podsunąć jakąś frazę, czego mam szukać? Na razie piszecie jedynie o protokole HTTP, poszukałem trochę w internecie i znalazłem coś takiego jak HTTP GET i CONNECT, to w tym kierunku mam iść?

0

@Sevox łatwiej będzie ci chyba napisać takiego bota za pomocą selenium. Szczególnie że nie będziesz musiał rozkminiać jakie requesty http trzeba w tej aplikacji przesyłać.

0

Z tego co widzę Selenium działa jak tasker, i nie w tle... Co wiąże się z dużym obciążeniem procesora. Nie wiem może się mylę, ale tak wnioskuję po tym filmie :

0

Tak, selenium odpala przeglądarkę i z niej korzysta. Przy czym można odpalić go w wersji grid i mieć wiele przeglądarek jednocześnie. Ale tak, to będzie generowało obiciążenie. Plusem jest jednak to że stworzenie takiego "testu" w selenium to jest kilka minut roboty...

0

No tak, ale ja mam czas. No nic, poczytam trochę o tym HTTP, POST i GET...

0

Próbuje zrobić żeby kod mi robił konto na pewnej stronie, czy idę w dobrym kierunku? Znalazłem pewien kod, próbuje go teraz przystosować do tej strony na której chce zrobić konto. Poniżej kod :

import java.net.*;
import java.io.*;

public class Program {
    public static void main(String[] args) throws Exception {
    String urlParameters = "account=555666&nick=Test2343&pass=test123&sex=1&vocation=1&city=0";
	String request = "http://wypasots.no-ip.org/index.php?body=acc";
	URL url = new URL(request); 
	HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
	connection.setDoOutput(true);
	connection.setDoInput(true);
	connection.setInstanceFollowRedirects(false); 
	connection.setRequestMethod("POST"); 
	connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
	connection.setRequestProperty("charset", "utf-8");
	connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
	connection.setUseCaches (false);

	DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
	wr.writeBytes(urlParameters);
	wr.flush();
	wr.close();
	connection.disconnect();
    }
}

Co tu jest nie tak? Może jeszcze muszę tu dodać żeby poza wpisaniem tych parametrów kliknął button "Wykonaj" ? Proszę o jakieś wskazówki.

@Edit
Przepraszam za double, nie zauważyłem.

0
Sevox napisał(a):

Co tu jest nie tak?

Zacznijmy od tego, że link http://wypasots.no-ip.org/index.php?body=acc prowadzi do strony z formularzem, nie do faktycznego miejsca, gdzie należy wykonać żądanie (czyli tam, dokąd prowadzi formularz po naciśnięciu Wykonaj).

Może jeszcze muszę tu dodać żeby poza wpisaniem tych parametrów kliknął button "Wykonaj" ?

Możesz i tak; ale najpierw musiałbyś pobrać i sparsować cały kod HTML tej strony, a od tego to są już potężne silniki (musiałbyś nota bene zawrzeć przeglądarkę internetową w swoim programie). Łatwiej będzie jednak po prostu odnaleźć ten poprawny link.

0

@Sevox zainstaluj w firefoxie TamperData jeśli chcesz się bawić w generowanie requestów imitujących te na stronie z grą ;]

0

Ustaw Referer: http://wypasots.no-ip.org/index.php?body=acc
jak nie pomoże spróbuj najpierw GET http://wypasots.no-ip.org/index.php?body=acc (być może przy pobieraniu formularza logowania zapisywane są jakieś ciacha) a dopiero później POST

0

Jedyny link oprócz tamtego to znalazłem taki : http://wypasots.no-ip.org/index.php?body=acc, przy próbie odpalenia wciąż konto nie zostało utworzone. SS z TempData po kliknięciu 'Wykonaj' w formularzu :

user image

W jaki sposób mam dodać ten GET? Bo szukam szukam i znaleźć nie mogę...

2

Warto oprócz wysłania czegoś, zobaczyć, co dostajesz z powrotem.

 
    public static void main(String[] args) throws Exception{
        String urlParameters = "account=161718&nick=hakier&pass=test123&sex=1&vocation=1&city=0";
        String request = "http://wypasots.no-ip.org/index.php?body=create";
        URL url = new URL(request); 
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setInstanceFollowRedirects(false);
        connection.setRequestProperty("Referer", "http://wypasots.no-ip.org/index.php?body=acc");
        connection.setRequestProperty("Connection", "keep-alive");
        connection.setRequestMethod("POST"); 
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
        connection.setRequestProperty("charset", "utf-8");
        connection.setRequestProperty("Content-Length", "" + Integer.toString(urlParameters.getBytes().length));
        connection.setUseCaches (false);
 
        DataOutputStream wr = new DataOutputStream(connection.getOutputStream ());
        wr.writeBytes(urlParameters);
        wr.flush();
        wr.close();
        InputStream is = connection.getInputStream();
      BufferedReader rd = new BufferedReader(new InputStreamReader(is));
      String line;
      StringBuffer response = new StringBuffer(); 
      while((line = rd.readLine()) != null) {
        response.append(line);
        response.append('\r');
      }
      rd.close();
      System.out.println( response.toString());
      connection.disconnect();
        
    }

Po 1. uderzałeś do niewłaściwej strony (body=acc zamiast body=create), po 2. nie mogłeś utworzyć nicka Test2343 (widać to w odpowiedzi od serwera).

0

Wielkie dzięki, wszystko działa. Gorzej jest trochę z zrozumieniem kodu ale to może sobie jakoś przetłumaczę.

1 użytkowników online, w tym zalogowanych: 0, gości: 1