Вернуться   Форум SAPE.RU > Практика оптимизации > Софт для оптимизаторов и вебмастеров

-->
Ответ
 
Опции темы
Старый 24.01.2011, 11:53   #11
Специалист
 
Регистрация: 15.07.2008
Сообщений: 375
Вес репутации: 202
Deicider - как роза среди колючекDeicider - как роза среди колючекDeicider - как роза среди колючек
По умолчанию

Цитата:
Сообщение от volkovysk Посмотреть сообщение
Чем проверяли, Оперой? Пустой реферер браузера это совсем другое, чем например отсутствующий реферер скрипта. А antigate не пояснили как у вас припаян.

Проблема в совокупности поведенчески неправильно посылаемых запросов. Яндекс вас определяет как робота, а он не школьнегами стряпан и сопоставляет все параметры, в том числе и referer, с поведением запросов
Блин, да в этом-то и загвоздка, что можно задать запрос в скрипте, а по урлу в редиректе заходить через браузер и всё будет ОК. Тут без всякий хитростей видно, что капчу давали одному клиенту, а получили ввод от совсем другого, и ничё, кушает.

zhegloff, после ввода капчи редирект ведет как раз на исходный урл, то есть на него мы и идем.

volkovysk, метод отарвки GET. Временной промежуток 10-15 секунд, быстрее ответ от антигейта и не приходит. И не надо переходить на личности и высказываться о моем уровне.
Deicider вне форума   Ответить с цитированием
Старый 24.01.2011, 12:23   #12
Специалист
 
Регистрация: 28.09.2010
Сообщений: 258
Вес репутации: 0
volkovysk не любят в этих краяхvolkovysk не любят в этих краяхvolkovysk не любят в этих краяхvolkovysk не любят в этих краях
По умолчанию

Цитата:
Сообщение от Deicider Посмотреть сообщение
И не надо переходить на личности и высказываться о моем уровне.
Ладно, пардон.
Короче чё гадать, скрипт надо в студию. На каком он языке писан?
volkovysk вне форума   Ответить с цитированием
Старый 25.01.2011, 10:59   #13
Специалист
 
Регистрация: 15.07.2008
Сообщений: 375
Вес репутации: 202
Deicider - как роза среди колючекDeicider - как роза среди колючекDeicider - как роза среди колючек
По умолчанию

Привожу фрагмент кода, который отвечает за получение страниц серпа. Для примера кокрентый поисковый запрос захардкоден. Код доступа к антигейту не палю. Если кто-то вызовется помочь со скриптом, но не имеет акка на антигейте, то могу скинуть в личку.

PHP код:
<?
require_once 'antigate.php'// взято отсюда -> http://antigate.com/curl.txt

$ch curl_init();

$query "Mercedes";

$url "http://yandex.ru/yandsearch?text=" $query ."&lr=213";

$page get_serp_page($url);


function 
get_serp_page($url)
{
    
$page get_webpage($url);
    if (
stripos($page'введите цифры с картинки') > 0)
        
$page break_captcha($page);    

    return 
$page;
}

function 
break_captcha($page)
{
    
$n preg_match_all("/name=\"key\" type=\"hidden\" value=\"([^\"]+)\"/"$page$matches);
    
$key $matches[1][0];

    
$n preg_match_all("/name=\"retpath\" type=\"hidden\" value=\"([^\"]+)\"/"$page$matches);
    
$retpath $matches[1][0];
    
    
$n preg_match_all("/<img src=\"([^\"]+)\"class=\"b-captcha__image\" /"$page$matches);
    
$captcha file_get_contents($matches[1][0]);
    
file_put_contents('ya_cap.gif'$captcha);
    
    
$text=recognize("ya_cap.gif","КОД ДОСТУПА",false,"antigate.com");
    
    echo 
"http://yandex.ru/checkcaptcha?key=$key&retpath=$retpath&rep=$text";

    
$page get_webpage("http://yandex.ru/checkcaptcha?key=$key&retpath=$retpath&rep=$text");
    
    if (
stripos($page'введите цифры с картинки') > 0)
    {
        echo 
"<br>Снова капча :-( <br>";
        exit();
    }

    
    return 
$page;
}


function 
get_webpage($url)
{
    global 
$ch;
    
curl_setopt($chCURLOPT_URL$url);
    
curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6');
    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
curl_setopt($chCURLOPT_TIMEOUT_MS'10000');
    
curl_setopt($chCURLOPT_FOLLOWLOCATIONTRUE);
    
curl_setopt($chCURLOPT_FRESH_CONNECTFALSE);
    
curl_setopt($chCURLOPT_AUTOREFERERTRUE);

    
$data curl_exec($ch);
    if (
$data)
        return 
$data;
    else
    return 
'CURL failed';
}

?>

Последний раз редактировалось Deicider; 25.01.2011 в 11:05.
Deicider вне форума   Ответить с цитированием
Старый 25.01.2011, 12:02   #14
Злой модератор
 
Аватар для Wink
 
Регистрация: 25.03.2007
Адрес: Deep forest
Сообщений: 5,343
Вес репутации: 503
Wink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущееWink - прекрасное будущее
По умолчанию

Deicider, $retpath кодировать в urlencode() надо, когда капчу отправляете. Ну и полученные куки сохранять само собой.
Wink вне форума   Ответить с цитированием
Старый 25.01.2011, 13:15   #15
Специалист
 
Регистрация: 28.09.2010
Сообщений: 258
Вес репутации: 0
volkovysk не любят в этих краяхvolkovysk не любят в этих краяхvolkovysk не любят в этих краяхvolkovysk не любят в этих краях
По умолчанию

Deicider, тебе яндекс всегда капчу заставляет вводить или как когда? А то я ща с локалхоста стал яндекс бомбить этим скриптом, он мне не предлагает. А urlencode() так это ясно надо.

Добавлено через 20 минут
... или $retpath уже обкодированый находится в форме input name="retpath" ?

Последний раз редактировалось volkovysk; 25.01.2011 в 13:15. Причина: Добавлено сообщение
volkovysk вне форума   Ответить с цитированием
Старый 25.01.2011, 16:31   #16
Новичок
 
Регистрация: 14.07.2008
Сообщений: 3
Вес репутации: 0
coodix скоро станет известен
По умолчанию

В свое была такая же проблема. Суть в том, что после ввода капчи Яндекс вешал куку и без нее как раз был такой эффект - постоянная капча.
Если говорить, о том что можно взять этот урл (который после рекогнайза капчи получается) и вставить в браузер и все заработает, то вот мнение: яндекс отличит, что запрос от другого "клиента" пришел. Не только по ip же ему классифицировать пользователей. В этом случае выходит, что и без капчи через браузер получится работать. (При том что с того же компа, скриптованные запросы будут получать ее)
coodix вне форума   Ответить с цитированием
Старый 25.01.2011, 17:37   #17
Специалист
 
Регистрация: 15.07.2008
Сообщений: 375
Вес репутации: 202
Deicider - как роза среди колючекDeicider - как роза среди колючекDeicider - как роза среди колючек
По умолчанию

Wink, volkovysk, retpath в форме уже урл-кодированный по самое нехочу ))

Насчет кук надо будет поглубже покопаться. Документация PHP говорит:
Цитата:
By default, libcurl always stores and loads all cookies
То есть вроде как все куки должны приниматься и передаваться как положено. Надо будет поснифать траф, и посмотреть, как оно там на самом деле происходит. Может быть, libcurl всё-таки не совсем правильно с куками работает.

Добавлено через 40 минут
Изучение http-заголовков показало, что при вводе капчи действительно устанавливается дополнительная кука (кука по имени "spravka", см. код). Теперь нужно проверить, передает ли эту куку КУРЛ.

Код:
http://yandex.ru/yandsearch?p=32&text=sony&text=213&lr=213

GET /yandsearch?p=32&text=sony&text=213&lr=213 HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://yandex.ru/yandsearch?p=31&text=sony&text=213&lr=213
Cookie: t=p; yandexuid=5055334331295965359

HTTP/1.1 302 Found
Via: 1.1 MSK01AN016S
Connection: close
Proxy-Connection: close
Location: http://yandex.ru/showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb&
----------------------------------------------------------
http://yandex.ru/showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb&

GET /showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb& HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://yandex.ru/yandsearch?p=31&text=sony&text=213&lr=213
Cookie: t=p; yandexuid=5055334331295965359

HTTP/1.1 200 OK
Via: 1.1 MSK01AN016S
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 8564
----------------------------------------------------------
http://yandex.ru/captcha/_index.css

GET /captcha/_index.css HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: text/css,*/*;q=0.1
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://yandex.ru/showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb&
Cookie: t=p; yandexuid=5055334331295965359
If-Modified-Since: Tue, 18 Jan 2011 16:42:20 GMT

HTTP/1.1 200 OK
Via: 1.1 MSK01AN016S
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 9705
Content-Type: text/css
Last-Modified: Tue, 18 Jan 2011 16:42:20 GMT
----------------------------------------------------------
http://u.captcha.yandex.net/image?key=40CWWLTBioEIj9IdJc2zpfP1I3lq9BWx

GET /image?key=40CWWLTBioEIj9IdJc2zpfP1I3lq9BWx HTTP/1.1
Host: u.captcha.yandex.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://yandex.ru/showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb&

HTTP/1.1 200 OK
Via: 1.1 MSK01AN016S
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
Date: Tue, 25 Jan 2011 14:27:29 GMT
Content-Type: image/gif
Server: nginx
----------------------------------------------------------
http://yandex.ru/favicon.ico

GET /favicon.ico HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: t=p; yandexuid=5055334331295965359

HTTP/1.1 302 Found
Via: 1.1 MSK01AN016S
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 238
Date: Tue, 25 Jan 2011 14:27:29 GMT
Location: http://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico
Content-Type: text/html; charset=iso-8859-1
Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
Vary: Accept-Encoding
----------------------------------------------------------
http://yandex.ru/favicon.ico

GET /favicon.ico HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: t=p; yandexuid=5055334331295965359

HTTP/1.1 302 Found
Via: 1.1 MSK01AN016S
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Content-Length: 238
Date: Tue, 25 Jan 2011 14:27:59 GMT
Location: http://yandex.st/lego/_/pDu9OWAQKB0s2J9IojKpiS_Eho.ico
Content-Type: text/html; charset=iso-8859-1
Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
Vary: Accept-Encoding
----------------------------------------------------------
http://yandex.ru/checkcaptcha?key=40CWWLTBioEIj9IdJc2zpfP1I3lq9BWx_03723d02215ac748d062f4d16125203fb_62afd8464b3952fe92b9f24205027ed2&retpath=http%253A%2F%2Fyandex.ru%2Fyandsearch%253Fp%253D32%2526text%253Dsony%2526text%253D213%2526lr%253D213&rep=624662

GET /checkcaptcha?key=40CWWLTBioEIj9IdJc2zpfP1I3lq9BWx_03723d02215ac748d062f4d16125203fb_62afd8464b3952fe92b9f24205027ed2&retpath=http%253A%2F%2Fyandex.ru%2Fyandsearch%253Fp%253D32%2526text%253Dsony%2526text%253D213%2526lr%253D213&rep=624662 HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://yandex.ru/showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb&
Cookie: t=p; yandexuid=5055334331295965359

HTTP/1.1 302 Found
Via: 1.1 MSK01AN016S
Connection: close
Proxy-Connection: close
Location: http://yandex.ru/yandsearch?p=32&text=sony&text=213&lr=213
Set-Cookie: spravka=dD0xMjk1OTY1Njg4O2k9ODIuMTQyLjE1MC4yNTA7dT0xMjk1OTY1Njg4NDgzNjE3Nzg4O2g9MzU4YWU4Yjk5ZTQxZjE2ODdkZjg0MmE0N2E4OGQyOTY=; domain=yandex.ru; path=/; expires=Thu, 24-Feb-2011 14:28:08 GMT
----------------------------------------------------------
http://yandex.ru/yandsearch?p=32&text=sony&text=213&lr=213

GET /yandsearch?p=32&text=sony&text=213&lr=213 HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://yandex.ru/showcaptcha?retpath=http%3A//yandex.ru/yandsearch%3Fp%3D32%26text%3Dsony%26text%3D213%26lr%3D213&t=03723d02215ac748d062f4d16125203fb&
Cookie: t=p; yandexuid=5055334331295965359; spravka=dD0xMjk1OTY1Njg4O2k9ODIuMTQyLjE1MC4yNTA7dT0xMjk1OTY1Njg4NDgzNjE3Nzg4O2g9MzU4YWU4Yjk5ZTQxZjE2ODdkZjg0MmE0N2E4OGQyOTY=

HTTP/1.1 200 OK
Via: 1.1 MSK01AN016S
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
Expires: Tue, 25 Jan 2011 15:28:08 GMT
Date: Tue, 25 Jan 2011 14:28:08 GMT
Content-Type: text/html; charset=utf-8
Server: Apache/2.2.9 (Unix) mod_perl/2.0.4 Perl/v5.8.8
Cache-Control: private, max-age=3600
Vary: Accept-Encoding

Последний раз редактировалось Deicider; 25.01.2011 в 17:37. Причина: Добавлено сообщение
Deicider вне форума   Ответить с цитированием
Старый 25.01.2011, 18:14   #18
Специалист
 
Регистрация: 28.09.2010
Сообщений: 258
Вес репутации: 0
volkovysk не любят в этих краяхvolkovysk не любят в этих краяхvolkovysk не любят в этих краяхvolkovysk не любят в этих краях
По умолчанию

точно, яндекс падла с сзади как ножом в спину куку spravka подсовывает. Deicider, попробуй теперь с помощью CURLOPT_COOKIE обработать.

Добавлено через 10 минут
Да я понял, скорей всего, у тебя курл не реагировал на установку куки spravka, в результате чего терялась имитация браузера (нормальный браузер регирует , он отказ шлёт, если выключить приём кукиес). Тебе надо эту куки принять и например так curl_setopt($ch, CURLOPT_COOKIE, $cookie) куку посслать дальше яндексу.

Последний раз редактировалось volkovysk; 25.01.2011 в 18:14. Причина: Добавлено сообщение
volkovysk вне форума   Ответить с цитированием
Старый 26.01.2011, 14:22   #19
Специалист
 
Регистрация: 15.07.2008
Сообщений: 375
Вес репутации: 202
Deicider - как роза среди колючекDeicider - как роза среди колючекDeicider - как роза среди колючек
По умолчанию

Собственно, подозрения подтвердились. Просмотр с помощью CURLINFO_HEADER_OUT сделанных курлом запросов показал, что ни хрена никакие куки не передаются. Пришлось немного заморочиться. Я доработал эту функцию, чтобы она сохраняла и передавала куки, и проблема решилась. Правда, яша выдает капчу на каждый запрос серпа (в браузере же капча вновь появляется только после 30-50 запросов), но при текущих тарифах на антигейт это пустяки.

Теперь возникает вопрос, а не взбредёт ли Яшке в голову пессимизировать мой сайт, висящий на ip, с которого я буду атаковать его этим роботом.
Deicider вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как побороть в себе лень? ma0 Курилка 24 20.10.2010 23:12
Как обойти капчу? Aston Софт для оптимизаторов и вебмастеров 3 17.08.2010 21:18
Как побороть лень? Никола Курилка 61 27.05.2010 18:20
Поменяйте капчу на форуме! Leminov Курилка 20 05.06.2009 11:28
Не могу побороть ERRORы b166ar Вопросы от новичков 3 08.12.2007 12:25


Часовой пояс GMT +3, время: 16:52.