Chcę zalogowac się na stronę, a przy logowaniu przeglądarka z formularza wysyła taki ciąg POSTem:
$string = "$name=$value&akcja=logowanie&logowanie=true&login=$login&haslo=$password"
Zmienne $login i $password są wiadome - login i hasło, definiowane.
Problem w tym, że zmienne $name oraz $value są dynamiczne i w formularzu występują np. tak:
<input type="hidden" name="2ab8fe0bcc542898842f16fb61a72abe" value="90eab5cbb6183407d41a6cec4a379789">
I teraz pojawia się problem - gdyby nie było tej dynamicznej wartości, stronę pobrałbym za pomocą 2 prostych funkcji, które chyba zna każdy kto z Curl'em miał do czynienia - i ten poniższy kod wystarcza w zupełności na innych stronach bez takich ceregieli:
function curl_login($url,$data,$proxy,$proxystatus){ $login = curl_init(); curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($login, CURLOPT_TIMEOUT, 40); curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE); if ($proxystatus == 'on') { curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($login, CURLOPT_PROXY, $proxy); } curl_setopt($login, CURLOPT_URL, $url); curl_setopt($login, CURLOPT_HEADER, TRUE); curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($login, CURLOPT_POST, TRUE); curl_setopt($login, CURLOPT_POSTFIELDS, $data); return curl_exec ($login); // execute the curl command curl_close ($login); } function curl_grab_page($site,$proxy,$proxystatus){ $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); if ($proxystatus == 'on') { curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, TRUE); curl_setopt($ch, CURLOPT_PROXY, $proxy); } curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); curl_setopt($ch, CURLOPT_URL, $site); return curl_exec ($ch); // execute the curl command curl_close ($ch); }
Jednak jak utrzymac sesję w momencie, kiedy chcąc np. pobrac wartość $name i $value za pomoca wyrażen regularnych z kodu strony, ponowne połaczenie (nowe curl_init()) pownownie wchodzi na stronę, a w tym momencie zmienne $name i $value mają już nowe, losowo wygenerowane wartości.
Macie jakieś pomysły? Absolutnie nie licze na gotowca, chciałbym poprosić Was o możliwe najlepsze nakierowanie mnie na rozwiązanie tego problemu.
Z góry dziękuję wszystkim, którzy postarają się pomóc.
Pozdrawiam,
Łukasz