cURL и яндекса капча

12
E2
На сайте с 20.11.2012
Offline
4
9540

Доброго времени суток!

пытаюсь написать парсер поисковой выдачи яндекс, пишу следующий код:

$refer ="http://ya.ru/";

$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://www.yandex.ru");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
$codePage = curl_exec($ch);
curl_close($ch);

причем после каждого запроса ставлю тайм аут:

sleep = rand(3, 7);

sleep($sleep);

но яндекс все равно выдает капчу :(

у кого есть какие-нибудь соображения по данному поводу? может быть еще написать несколько строк USERAGENT и рандомно их подставлять:

curl_setopt($ch, CURLOPT_USERAGENT, СЮДА);
?
AK
На сайте с 23.02.2009
Offline
117
#1

Куки-прокси

E2
На сайте с 20.11.2012
Offline
4
#2
ant_key:
Куки-прокси

что Вы имеете ввиду?

я пробовал делать с помощью прокси, но слишком долгий ответ от них и сложно найти качественные :(

W
На сайте с 10.05.2009
Offline
114
#3

вы бы хоть исходный код ya.ru открыли чтоли...

<iframe frameBorder="0"src="http://kiks.yandex.ru/su/"style="width:40px;height:40px;overflow:hidden;position:absolute;left:-40px;top:0;opacity:0"></iframe>

Не забудьте кукис сохранить :)

E2
На сайте с 20.11.2012
Offline
4
#4
wolfston:
вы бы хоть исходный код ya.ru открыли чтоли...

<iframe frameBorder="0"src="http://kiks.yandex.ru/su/"style="width:40px;height:40px;overflow:hidden;position:absolute;left:-40px;top:0;opacity:0"></iframe>

Не забудьте кукис сохранить :)

причем здесь код ya.ru, я переменную $refer не использую для подключения?

---------- Добавлено 21.11.2012 в 08:18 ----------

может есть другие варианты замаскировать скрипт?

W
На сайте с 10.05.2009
Offline
114
#5

потому что яндекс во фремей куку ставит и проверяет ее, если ее нету тогда выдает капчу, но вы все же можете искать другие варианты :)

E2
На сайте с 20.11.2012
Offline
4
#6
wolfston:
потому что яндекс во фремей куку ставит и проверяет ее, если ее нету тогда выдает капчу, но вы все же можете искать другие варианты :)

что то я не совсем понимаю :(

мне в строку

curl_setopt($ch, CURLOPT_REFERER, "http://www.yandex.ru");

вместо http://www.yandex.ru подставить http://ya.ru и потом сохранять так же куки:

curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);  

curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);

?

или я не так понял?

W
На сайте с 10.05.2009
Offline
114
#7

Если вы не поняли не чего, то обратитесь к php программисту, иначе это бесполезно, невозможно написать парсер понадергивая куски кода из интернета.

Куку кстати надо брать здесь - http://kiks.yandex.ru/su/ это вобщето и слепому понятно, но думаю вы даже не представляете как работать с куками в php, потому как взяли код курла из примера мануала на php.ru

E2
На сайте с 20.11.2012
Offline
4
#8
wolfston:
Если вы не поняли не чего, то обратитесь к php программисту, иначе это бесполезно, невозможно написать парсер понадергивая куски кода из интернета.

Куку кстати надо брать здесь - http://kiks.yandex.ru/su/ это вобщето и слепому понятно, но думаю вы даже не представляете как работать с куками в php, потому как взяли код курла из примера мануала на php.ru

могли бы объяснить, а не отправлять к php программистам или промолчать...

я же не прошу вас за меня все это написать...

D
На сайте с 04.08.2009
Offline
39
#9

Пример рабочего кода:

<?php

function get_cpage($url, $cookies, $uagent)
{
ob_start();
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
if(!empty($cookies))
curl_setopt ($ch, CURLOPT_COOKIE,$cookies);
else
{
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
}

curl_exec($ch);
$result = ob_get_contents();
curl_close ($ch);
ob_end_clean();
return $result;
}
$q = "123";
$url = "http://yandex.ua/yandsearch?text=".$q;
$uagent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)";
$page = get_cpage($url, "", $uagent);
echo $page;

?>
fsou1
На сайте с 17.07.2012
Offline
45
#10

Может я немножко не в тему, но для парсинга выдачи намного удобнее Yandex XML

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий