Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyciąganie danych ze strony po zalogowaniu
Forum PHP.pl > Forum > PHP
MaciekDZN
Witam, chce wyciągnąć dane ze strony, ale żeby je zobaczyć muszę się najpierw na niej zalogować

Skleiłem coś takiego ale nie loguje...

  1. <?php
  2.  
  3. $login = "maciekdzn@gmail.com";
  4. $haslo = "haslodologowania";
  5.  
  6. $plik = 'cookie.txt'; //Plik z ciasteczkiem
  7. $f = curl_init();
  8. curl_setopt($f, CURLOPT_URL, 'http://torrki.pl/torrenty?category=5'); // adres skryptu odbierającego dane
  9. curl_setopt($f, CURLOPT_HEADER, 0); // nie chcę nagłówków w odpowiedzi
  10. curl_setopt($f, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; pl-PL; rv:1.9) Gecko/2008061015 Firefox/3.0)'); //robimy ala przeglądarka
  11. curl_setopt($f, CURLOPT_POST, 1); //jakoś zalogować się trzeba:)
  12. curl_setopt($f, CURLOPT_POSTFIELDS, 'uid='.urlencode($login).'&pwd='.urlencode($haslo));
  13. curl_setopt($f, CURLOPT_RETURNTRANSFER, 1); // chcę otrzymać stronę
  14. curl_setopt($f, CURLOPT_COOKIEFILE, $plik); //Ustawiamy ciasteczka
  15. curl_setopt($f, CURLOPT_COOKIEJAR, $plik);
  16. $file = curl_exec($f);
  17.  
  18. preg_match_all('[<table class="lista" cellpadding="0" cellspacing="0" width="97%" align="center">(.+?)<\/table>]', $file, $wynik);
  19. print_r($wynik);
  20.  
  21. ?>


Ktoś wie jak to zrobić by zadziałało ?
Daimos
w programowaniu nie ma "nie działa". Ktoś, kto się nie zna na komputerach, może w serwisie powiedzieć, że nie działa komputer.
Tutaj się pisze jakie są błedy, jakie objawy, co zwraca skrypt i wszystko, co może naprowadzić wink.gif
PS. logowania zazwyczaj robią przekierowanie po wysłaniu formularza, więc dodaj sobie opt FOLLOWLOCATION
MaciekDZN
Dodałem, nic nie pomaga, nadal nie loguje...

dodałem na początku
  1. <?php
  2. ini_set('error_reporting', E_ALL | E_STRICT);
  3. ini_set('display_errors', 'On');

ale nie ma żadnych błędów

W sumie już jakoś się udało, tzn, FOLLOWLOCATION nic a nic nie pomogło, jedynie wprowadziłem źle dane do logowania blink.gif sciana.gif

jakim programem sprawdzić co jest wysyłane na serwer??

nie mogę znaleźć a pamietam że jest taka wtyczka o podobnej nazwie: "who send to webserver"

bo mam problem nadal z tym curlem, tzn ten kod do góry działa ale nie ze wszystkimi stronami i stad moje pytanie

tzn nie mogę się zalogować ...
kapslokk
To co jest wysyłane możesz sprawdzić np wtyczką Live HTTP Headers do firefoxa
MaciekDZN
Co jest nie tak?


kod z mojej strony:
Kod
GET /~torki/pl3.php HTTP/1.1
Host: 127.0.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: pl
Cookie: PHPSESSID=3fd0ced5ef3e1a9c74292ffe4871349a; __utma=96992031.887802130.1449842263.1449855006.1449915689.4; __utmb=96992031.4.10.1449915689; __utmc=96992031; __utmz=96992031.1449842263.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36

HTTP/1.1 200 OK
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 8675
Content-Type: text/html; charset=utf8
Date: Sat, 12 Dec 2015 10:37:37 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=15, max=100
Pragma: no-cache
Server: Apache/1.3.31 (Win32) PHP/5.2.17 mod_gzip/1.3.26.1a
X-Powered-By: PHP/5.2.17



kody jakie są wysylane ze strony na której ma byc logowanie:
Login:
Kod
POST /login.php HTTP/1.1
Host: stronawww.pl
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: pl
Content-Type: application/x-www-form-urlencoded
Cookie: lasttorrentcomment=1449783486; __utmt=1; __utma=238801941.418801519.1448467245.1449912670.1449916844.12; __utmb=238801941.1.10.1449916844; __utmc=238801941; __utmz=238801941.1449855391.10.3.utmcsr=127.0.0.1|utmccn=(referral)|utmcmd=referral|utmcct=/~torki/pl3.php
Origin: http://stronawww.pl
Referer: http://stronawww.pl/
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36

HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 139
Content-Type: text/html
Date: Sat, 12 Dec 2015 10:38:07 GMT
Server: Apache
Set-Cookie: hashx=9c17784ffdb13725ec42fa1e1e653da2; expires=Tue, 19-Jan-2038 03:14:07 GMT; path=/
Set-Cookie: pass=8813b538898d56361472d9c92a987efb; expires=Tue, 19-Jan-2038 03:14:07 GMT; path=/
Set-Cookie: uid=121718; expires=Tue, 19-Jan-2038 03:14:07 GMT; path=/
Vary: Accept-Encoding,User-Agent
Via: 1.1 varnish
X-Powered-By: PHP/5.3.28
X-Varnish: 411451199


index:
Kod
GET /index.php HTTP/1.1
Host: stronawww.pl
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: pl
Cookie: lasttorrentcomment=1449783486; __utmt=1; __utma=238801941.418801519.1448467245.1449912670.1449916844.12; __utmb=238801941.1.10.1449916844; __utmc=238801941; __utmz=238801941.1449855391.10.3.utmcsr=127.0.0.1|utmccn=(referral)|utmcmd=referral|utmcct=/~torki/pl3.php; uid=121718; pass=8813b538898d56361472d9c92a987efb; hashx=9c17784ffdb13725ec42fa1e1e653da2
Referer: http://stronawww.pl/login.php
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36

HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 0
Connection: keep-alive
Content-Encoding: gzip
Content-Length: 6405
Content-Type: text/html; charset=ISO-8859-2
Date: Sat, 12 Dec 2015 10:38:07 GMT
Server: Apache
Vary: Accept-Encoding,User-Agent
Via: 1.1 varnish
X-Powered-By: PHP/5.3.28
X-Varnish: 411451208


Dobra, sam doszedłem do rozwiązania - zrobiłem cookie z wszystkimi danymi i przeszło - jak ktoś szuka to tak recznie zrobić ciastko w curl (znalezione na PHP.PL)

  1. <?
  2. $cookie = 'c1=' . urlencode('wartość1') . '; c2=' . urlencode('wartość2');
  3. $ch = curl_init('http://localhost/curl/site.php');
  4. curl_setopt($ch, CURLOPT_HEADER, 1);
  5. curl_setopt($ch, CURLOPT_COOKIE, $cookie);
  6. ?>
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.