Собсно разбираюсь с курлом и хочу сделать парсер яндекса и появилась проблема с обходом капчи. на странице с капчей вот такая вот форма: HTML: <form action="/send.xml" method="post"> <input type="hidden" name="key" value="85a5da55b9ef9c640cddb52f56ac8822"> <input type="hidden" name="retpath" value="http://yandex.ru/yandsearch?numdoc=50&text=текст+запроса2&pag=d&rd=0&lr=187"> <input name="rep" id="rep-id" style="width:123px;" autocomplete="off"> <input type="submit" value="Я не робот" style="font-size:20px;"> <form> разгадываем капчу, хидден поля, с этим все понятно, делаем строку пост вида: Code: key=85a5da55b9ef9c640cddb52f56ac8822&retpath=http://yandex.ru/yandsearch?numdoc=50&text=текст+запроса2&pag=d&rd=0&lr=187&rep=644767 а что делать дальше с таким обработчиком action="/send.xml" ?
http://geforse.name/coding/avtoreger-e-mail-sajtov-narod-ru/ (на главной странице есть и полуавтоматический) теперь видно ? )
Если вы об этом http://geforse.name/coding/polyavtomaticheskij-registrator-email-yandeks/ - то не совсем то, я имею в виду страницу Я не робот, там другая форма и обработчик
С кодировкой сам разберись, $result = iconv("Windows-1251","UTF-8",$result); у меня что-то не корректно отображается Действительно, тут немного другая чем на почте... PHP: <?php @set_time_limit(0); //-----------------// $zapros = 'http://yandex.ru/yandsearch?text=antichat&stpar2=%2Fh1%2Ftm4%2Fs2&stpar4=%2Fs2&stpar1=%2Fu0'; //-----------------// function post($url,$post,$refer) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_COOKIEJAR, "./cook"); curl_setopt($ch, CURLOPT_COOKIEFILE, "./cook"); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); return $result; } if($_POST['captcha']) { $result = post('http://captcha.yandex.net/send.xml','key='.$_POST['key'].'&retpath='.$zapros.'%26stpar4%3D%252F+s1&rep='.trim($_POST['captcha']),$zapros); if(preg_match('#>Вы (.*?) у#i',$result,$end)) { echo '<script>alert(\'Не правильный код!\')</script>'; echo '<meta http-equiv="Refresh" content="0; url=index.php">'; } else { echo $result; } } else { $result = post('http://captcha.yandex.net/',null,'http://yandex.ru/'); preg_match('#y" value="(.*?)"#i',$result,$key); echo '<img class="captcha-img" name="captcha" src="http://captcha.yandex.net/image?key='.$key[1].'" alt=""><br> <form name="captcha_form" action="index.php" method="POST"> <input type="text" name="captcha" value="" /><br> <input type="hidden" name="key" value="'.$key[1].'" /> <input type="submit" value="ok"> </form>'; } /* geforse.name */ ?>
Code: &retpath='.$zapros.'%26stpar4%3D%252F+s1 а почему так? Это критически важно? У меня урл не такой.
Какой я post запрос снифером поймал, такой и написал в скрипте, а почему так или не так это вопросы не ко мне, а к Яндексу )