Привет всем... писал вот регер акков для почты.ру но возникла трабла... и не пойму в чем дело... каптча качается.. потом вводишь каптчу.. пост запрос шлешь - и в ответ - неверно введена каптча... Заголовки смотрел в LiveHTTP Headers, все совпадает.. а почему то не пашет... Кто подскажет в чем трабла? Вот основная часть скрипта PHP: <?php $pass="123123";/*пасс */ /*Get запросы */ function getzapros($host, $path) { $res=""; $sock=fsockopen($host, 80, $errno, $errstr, 30); if(!$sock){ echo $errstr($errno); }else{ $headers = "GET $path HTTP/1.1\r\n"; $headers .="Host: $host\r\n"; $headers .="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\r\n"; $headers .="Accept-Language: ru,ru-RU;q=0.9,en;q=0.8\r\n"; $headers .="Connection: Close\r\n\r\n"; } fwrite($sock, $headers); while(!feof($sock)){ $res .=fgets($sock, 1024); } fclose($sock); return $res; } /* POST запрос */ function postzapros($host, $script, $cont){ $respons=""; $postsock=fsockopen($host, 80, $errno, $errstr, 30); if(!$postsock){ echo $errstr($errno); }else{ $head ="POST $script HTTP/1.1\r\n"; $head .="Host: $host\r\n"; $head .="User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14\r\n"; $head .="Accept-Language: ru,ru-RU;q=0.9,en;q=0.8\r\n"; $head .="Connecion: Close\r\n"; $head .="Referer: http://www.pochta.ru/register/?$id\r\n"; $head .="Content-Type: application/x-www-form-urlencoded\r\n"; $head .="Content-Length: ".strlen($cont)."\r\n"; $head .="\r\n$cont\r\n"; } fwrite($postsock, $head); while(!feof($postsock)){ $respons .=fgets($postsock, 1024); } fclose($postsock); return $respons; } $host="www.pochta.ru"; $path="/register/"; $get=getzapros($host, $path); //запрашиваем страницу реги preg_match("%Location: (/register/\S+)%i", $get, $math); //выдираем заголовок Location $id=substr($math[1], 11); // Id шник echo $id; $post=getzapros($host, $math[1]);//запрашиваем страницу из заголовка Location //echo $post; //preg_match("/register\/show_captcha\/\?id=[0-9a-z]{32}&captcha_id=[0-9a-z]{22,}/", $post, $captha); preg_match("/captcha_id=[0-9a-z]{22,}/", $post, $capthaid);// Id Каптчи $caphaid=$capthaid[0]; echo <<<EOG <a href="http://localhost/mypo4tareger.php"> на главную</a><br> <form action="mypo4tareger.php" method="post"> <img src="http://www.pochta.ru/register/show_captcha/?$id&$caphaid"> <input type="text" name="capha"> <input type="submit" name="click"> </form> EOG; if($_POST['click']){ $cont="$id&from_promo=0&rid=&lng=ru&newmail=&second_name=&first_name=&sure_name=®_login=eblan2008&domain=pochta.ru&alt_captcha_id=&alt_captcha=&domain_pass=&pass1=$pass&pass2=$pass&$caphaid&rnd_img_str={$_POST['capha']}&bth_additional=&bth_finish=1"; echo $cont."<br>"; echo $caphaid; echo postzapros("www.pochta.ru", "/register/submit/", $cont); } ?>
Я думаю, что надо скачивать капчу на хост, а от туда уже читать её, потому что у твоего компа и у сервака, который шлёт запрос, разные сессии.
дык скрипт то один... я просто тестил на своем компе на локалхосте... Пробовал на хостинге -такая же ошибка...