Просмотр полной версии : взлом капчи яндекса/
Serg0007
27.08.2009, 12:55
Собсно разбираюсь с курлом и хочу сделать парсер яндекса и появилась проблема с обходом капчи.
на странице с капчей вот такая вот форма:
<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>
разгадываем капчу, хидден поля, с этим все понятно, делаем строку пост вида:
key=85a5da55b9ef9c640cddb52f56ac8822&retpath=http://yandex.ru/yandsearch?numdoc=50&text=текст+запрос 2&pag=d&rd=0&lr=187&rep=644767
а что делать дальше с таким обработчиком action="/send.xml" ?
programming
27.08.2009, 13:02
На хабре выложено полное решение..
Я тут (http://geforse.name/) писал регеры для Яндекса, там код хорошо прокомментирован
Serg0007
27.08.2009, 13:27
искал на хабре, не нашел буду очень благодарен за урл
http://geforse.name/coding/avtoreger-e-mail-sajtov-narod-ru/ (на главной странице есть и полуавтоматический)
теперь видно ? )
Serg0007
27.08.2009, 13:57
Я тут (http://geforse.name/) писал регеры для Яндекса, там код хорошо прокомментирован
Если вы об этом http://geforse.name/coding/polyavtomaticheskij-registrator-email-yandeks/ - то не совсем то, я имею в виду страницу Я не робот, там другая форма и обработчик
Капча у Яндекса везде одинаковая...покажите урл
мб ошибаюсь )
Serg0007
27.08.2009, 14:21
http://captcha.yandex.net/
С кодировкой сам разберись, $result = iconv("Windows-1251","UTF-8",$result); у меня что-то не корректно отображается
Действительно, тут немного другая чем на почте...
<?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 */
?>
Serg0007
27.08.2009, 18:12
&retpath='.$zapros.'%26stpar4%3D%252F+s1
а почему так? Это критически важно? У меня урл не такой.
Какой я post запрос снифером поймал, такой и написал в скрипте, а почему так или не так это вопросы не ко мне, а к Яндексу )
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot