Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] automatyczne głosowanie na zdjęcia (wp.pl)
Forum PHP.pl > Forum > PHP
Lejto
Zastanawiałem się ostatnio czy można napisać jakiegoś bota który będzie głosował na galerie na wp.pl. Myślałem tu o crul, zajrzałem w źródło strony chciałem zobaczyć jaka jest wartość action="" ale ta wartość jest pusta haha.gif. Dane przekazywane są chyba poprzez javascript. Tylko jak to odgadnąć. Przykładowe zdjęcie i sposób głosowania http://www.afrin.wp.pl/zdjecie/id,4291.html

Pozdrawiam
Fifi209
Firebug i zobacz gdzie i co skrypt js przesyła. ;]
Lejto
patrzałem, ale nie mogę odnaleźć
nie znam aż tak dobrze javascript
Fifi209
To liveheaders, mi pokazał przykładowo:

Kod
http://www.afrin.wp.pl/zdjecie/id,5168.html

POST /zdjecie/id,5168.html HTTP/1.1
Host: www.afrin.wp.pl
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: pl,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.afrin.wp.pl/zdjecie/id,5168.html
Cookie: statid=83.143.99.79.1212:1258321986:1547703461:v1; OAX=U49jT0sAeEcACy0P; RMAM=01TFSM_1700.4bXd0MdG|; PHPSESSID=5uqeoqu91daqsp982bkh3uuno0
Content-Type: application/x-www-form-urlencoded
Content-Length: 80
event=1&formname=oceny&ocenaPomyslowosc=10&ocenaProfesjonalizm=10&ocenaJakosc=10
HTTP/1.x 200 OK
Date: Fri, 20 Nov 2009 21:26:48 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Last-Modified: Fri, 20 Nov 2009 21:27:02 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
Lejto
ok, ale nie widzę tu docelowego adresu który wysyła dane i potem dodaje je do bazy
Wicepsik
Zainteresuj się cURL jeśli chcesz zrobić automatyczne głosowanie...
Lejto
no to ja wiem ze curl trzeba użyc ale nie mam adresu na który wysyłany jest formularz
a nie umiem napisać bota który wchodzi na stronę i "naciska przycisk głosuj"
black.old.cat
  1. <form action="http://www.afrin.wp.pl/zdjecie/id,4291.html" method="post">
  2. <pre>
  3. event : <input type="text" name="event" value="1">
  4. formname : <input type="text" name="formname" value="oceny">
  5. Pomyslowosc : <input type="text" name="ocenaPomyslowosc" value="10">
  6. Profesjonalizm : <input type="text" name="ocenaProfesjonalizm" value="10">
  7. Jakosc : <input type="text" name="ocenaJakosc" value="10">
  8. <input type="submit" value="send">
  9. </pre>
  10. </form>
Fifi209
Cytat(Lejto @ 20.11.2009, 22:42:01 ) *
ok, ale nie widzę tu docelowego adresu który wysyła dane i potem dodaje je do bazy


Druga linijka, zaczynająca się od POST, właściwie w pierwszej masz cały adres...
Lejto
myślałem że przekierowywuje na inny adres i tam dodaje dane do bazy
to jak napisać kod który wejdzie na stronę i automatycznie odda głos?
Wicepsik
cURL
Lejto
bawiłem się cURL ale nie wiem za bardzo jak wykorzystać go do kliknięcia w przycisk głosuj, używałem go tylko do pobierania danych ze strony
Wicepsik
Trudno poszukać w internecie?

http://wortal.php.pl/wortal/artykuly/php/b...http/formularze
Lejto
ok, dzięki przeczytam
może się dowiem jak automatycznie przesłać dane w POST i zagłosować
mam jeszcze jedno pytanie, czy da się ukryć adres ip przy wchodzeniu na stronę z poziomu curl?

przeczytałem, zrobiłem ale nic ;/
wyświetla mi całą stronę zamiast przesłać dane i zagłosować
  1. <?
  2.  
  3. function createPostString($aPostFields) {
  4. foreach ($aPostFields as $key => $value) {
  5. $aPostFields[$key] = urlencode($key) . '=' . urlencode($value);
  6. }
  7. return implode('&', $aPostFields);
  8. }
  9.  
  10. $postFields['ocenaPomyslowosc'] = '10';
  11. $postFields['ocenaProfesjonalizm'] = '10';
  12. $postFields['ocenaJakosc'] = '10';
  13. $ch = curl_init('http://www.afrin.wp.pl/zdjecie/id,4291.html');
  14. curl_setopt($ch, CURLOPT_POSTFIELDS, createPostString($postFields));
  15. curl_exec($ch);
  16. curl_close($ch);
  17.  
  18.  
  19. ?>
black.old.cat
Zapomniales o przeslaniu event i formname.
Fifi209
dodaj jeszcze:

CULROPT_RETURNTRANSFER - true
CURLOPT_FOLLOWLOCATION - true
CURLOPT_HEADER - true
CURLOPT_POST - true

wywal tą funkcję createPostString i po prostu przekaż tam tablicę...
Lejto
nadal nic
  1. <?
  2. $postFields['ocenaPomyslowosc'] = '10';
  3. $postFields['ocenaProfesjonalizm'] = '10';
  4. $postFields['ocenaJakosc'] = '10';
  5. $ch = curl_init('http://www.afrin.wp.pl/zdjecie/id,4291.html');
  6. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  7.  
  8. curl_setopt($ch, CULROPT_RETURNTRANSFER, true);
  9. curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
  10. curl_setopt($ch, CURLOPT_HEADER, true);
  11. curl_setopt($ch, CURLOPT_POST , true);
  12.  
  13.  
  14. curl_exec($ch);
  15. curl_close($ch);
  16.  
  17. ?>
Fifi209
Cytat(Lejto @ 21.11.2009, 13:49:28 ) *
nadal nic
  1. <?
  2. $postFields['ocenaPomyslowosc'] = '10';
  3. $postFields['ocenaProfesjonalizm'] = '10';
  4. $postFields['ocenaJakosc'] = '10';
  5. $ch = curl_init('http://www.afrin.wp.pl/zdjecie/id,4291.html');
  6. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  7.  
  8. curl_setopt($ch, CULROPT_RETURNTRANSFER, true);
  9. curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
  10. curl_setopt($ch, CURLOPT_HEADER, true);
  11. curl_setopt($ch, CURLOPT_POST , true);
  12.  
  13.  
  14. curl_exec($ch);
  15. curl_close($ch);
  16.  
  17. ?>


Wynik curl_exec przypisz sobie do jakiejś zmiennej, którą potem sobie wyświetlisz.

Poza tym...
Cytat(black.old.cat @ 21.11.2009, 12:52:02 ) *
Zapomniales o przeslaniu event i formname.

Czytaj co kolega napisał.

Jeżeli dalej nie będzie działało dodaj:
CURLOPT_COOKIEJAR
CURLOPT_COOKIEFILE
Lejto
ok ale z tym event i formname to jak mam to przesłać, nie mogę znaleźć tych funkcji w manualu
Fifi209
Cytat(Lejto @ 21.11.2009, 14:00:47 ) *
ok ale z tym event i formname to jak mam to przesłać, nie mogę znaleźć tych funkcji w manualu


Tak samo jak inne pola w post, normalnie w tej tablicy post...

$postFields['event'] = 'wartosc';
Lejto
aha to o to chodziło smile.gif
niestety nic z tego ;/
  1. <?
  2. $cookie_file = "cookie.txt";
  3. $postFields['event'] = '1';
  4. $postFields['formname'] = 'oceny';
  5. $postFields['ocenaPomyslowosc'] = '10';
  6. $postFields['ocenaProfesjonalizm'] = '10';
  7. $postFields['ocenaJakosc'] = '10';
  8. $ch = curl_init('http://www.afrin.wp.pl/zdjecie/id,4291.html');
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  10.  
  11. curl_setopt($ch, CULROPT_RETURNTRANSFER, true);
  12. curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
  13. curl_setopt($ch, CURLOPT_HEADER, true);
  14. curl_setopt($ch, CURLOPT_POST , true);
  15. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  16. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  17.  
  18. curl_exec($ch);
  19. curl_close($ch);
  20.  
  21. ?>
Fifi209
Pokombinuj...

CURLOPT_USERAGENT
CURLOPT_AUTOREFERER


W ogóle w jakim celu chcesz to napisać?
Lejto
ok zobaczę
w jakim celu?
żeby się pobawić i w końcu dobrze nauczyć się korzystać z curl.

zrobiłem
mam tak i nie chodzi, nie wiem co jeszcze zmienić, nie znam tak dobrze curl
  1. <?
  2. $cookie_file = "cookie.txt";
  3. $postFields['event'] = '1';
  4. $postFields['formname'] = 'oceny';
  5. $postFields['ocenaPomyslowosc'] = '10';
  6. $postFields['ocenaProfesjonalizm'] = '10';
  7. $postFields['ocenaJakosc'] = '10';
  8. $ch = curl_init('http://www.afrin.wp.pl/zdjecie/id,4291.html');
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
  10.  
  11. curl_setopt($ch, CULROPT_RETURNTRANSFER, true);
  12. curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
  13. curl_setopt($ch, CURLOPT_HEADER, true);
  14. curl_setopt($ch, CURLOPT_POST , true);
  15. curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
  16. curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
  17. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  18. curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.13) Gecko/20080311 Firefox/3.5");
  19.  
  20. curl_exec($ch);
  21. curl_close($ch);
  22.  
  23. ?>


dodam że cookie nie zapisuje jeszcze
Fifi209
zapisuje cookie, tylko musisz podać pełną ścieżkę np.

c:\webserv\httpd\cookie.txt
Lejto
ok teraz zapisuje cookie ale i tak nie oddaje głosu ;/

co tu można jeszcze zmienić?
Fifi209
Cytat(Lejto @ 22.11.2009, 10:56:38 ) *
ok teraz zapisuje cookie ale i tak nie oddaje głosu ;/

co tu można jeszcze zmienić?


Trochę inwencji własnej, live headers i poobserwuj dokładnie co się dzieje przy głosowaniu. Ja Ci dużo podpowiedziałem, ostatnia rada, spróbuj najpierw wywołać tą stronę z curlopt:
cookiejar, cookiefile, header, url

I potem drugi raz z tą resztą. (może potrzebuje zapisać sesję w cookie)
Lejto
analizowałem nagłówki
przesyłam wszystko to co powinienem i nic...

cookie dobrze zapisuje
# Netscape HTTP Cookie File
# http://curlm.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

www.afrin.wp.pl FALSE / FALSE 0 PHPSESSID s2ai3tok1hlbtectkcnviglcp2


header dodatkowy też przesyłam i nic

ok udało mi się smile.gif
zmieniłem
  1. $ch = curl_init('http://www.afrin.wp.pl/zdjecie/id,4291.html');
  2. $pack = "event=1&formname=oceny&ocenaPomyslowosc=10&ocenaProfesjonalizm=10&ocenaJakosc=10";
  3. curl_setopt($ch, CURLOPT_POSTFIELDS, $pack);

można jakoś w curl ukryć ip?

chodzi mi teraz o anonimowość
czy można w php podać liste serweró proxy do których ma się łączyć?

ostatnie moje pytanie smile.gif
co zrobić aby cała strona w html mi sie nie pokazywała
chce aby tylko wysyłało żądanie POST
aniolek1810
Cytat(fifi209 @ 21.11.2009, 14:48:02 ) *
W ogóle w jakim celu chcesz to napisać?


Haha, chce to napisać, żeby wygrać lustrzankę ; ) Jego zdjęcie aktualnie jest na trzecim miejscu ; )
I potem ludzie się dziwią, że normalną drogą nic nie mogą wygrać...
Fifi209
Cytat(morihei @ 23.11.2010, 11:24:48 ) *
Da się zrobić taki automacik do głosowania na tą klasę?

Odpowiedź jest pozytywna.
Cytat(morihei @ 23.11.2010, 11:24:48 ) *
Ja niestety za zielony jestem więc nawet nie próbuje

Nie ten dział.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.