Вернуться   SEO форум - оптимизация и продвижение сайтов > Web разработки > Программирование

Важная информация
Программирование - PHP, MySQL, JavaScript, CSS, HTML верстка и т.д.

Ответ
 
Опции темы Оценить тему Опции просмотра
Старый 20.11.2012, 18:01   #1
 
Аватар для Elias
 
Сообщений: 13
FR (активность): 0

Доп. информация
Восклицание Автор темы cURL и яндекса капча

Доброго времени суток!
пытаюсь написать парсер поисковой выдачи яндекс, пишу следующий код:
[PHP]$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);[/PHP]
причем после каждого запроса ставлю тайм аут:
[PHP]sleep = rand(3, 7);
sleep($sleep);[/PHP]
но яндекс все равно выдает капчу
у кого есть какие-нибудь соображения по данному поводу? может быть еще написать несколько строк USERAGENT и рандомно их подставлять: [PHP]curl_setopt($ch, CURLOPT_USERAGENT, СЮДА);[/PHP] ?
Elias вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 20.11.2012, 20:12   #2
 
Аватар для Vladimir-AWM
 
Сообщений: 14
FR (активность): 78

Доп. информация
По умолчанию

Проще распознователь капчи через антикапчу дописать. После ввода правильной капчи Яша долго не будет выдавать ее снова. Юзерагент и удаление кук не помогает. Задержку можно будет не ставить.
Vladimir-AWM вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 21.11.2012, 13:48   #3
 
Аватар для komyak
 
Сообщений: 1,178
FR (активность): 32,790

Доп. информация
По умолчанию

Как практика отлично подойдет, но проще будет сделать через xml выдачу. И по времени экономия, и по средствам.


Сео
komyak вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 22.11.2012, 07:06   #4
 
Аватар для mrmixsun
 
Сообщений: 95
FR (активность): 3,760

Доп. информация
По умолчанию

komyak, ну вот смотрите - очевидно же, что сделать через xml проще. Но ТС не стал делать так, наверное, потому что очевидно и другое - а именно разница между выдачей через XML и выдачей в браузере, не? Я вот прекрасно ощущаю разницу. Имею парсер, который как раз парсит выдачу из XML - ну, он практически бесполезен. Во всяком случае, позиции расходятся. Сильно.


Любители состязаются друг с другом, профессионалы - сами с собой
mrmixsun вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 22.11.2012, 14:32   #5
 
Аватар для hurt
 
Сообщений: 359
FR (активность): 11,770

Доп. информация
По умолчанию

да все верно, пишу анализатор поисковой выдачи, xml блин вобще хрень показывает, ну и 1000 запросов в сутки бред, а ошибка у вас в парсере, потому что куккисы вы не передаете дальше. яндекс это пол беды, вот гугл...) удачи

Сообщение добавлено 22.11.2012 в 14:35

а да вот еще что от 3 до 7 что? секунд??? задержка вы представьте себе с какой скоростью должен пользователь работать что бы так яндекс читать, и еще по личным наблюдениям если время задержки совпадает- капча, не забываем обрабатывать 500 ошибки и прочее
hurt вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 22.11.2012, 15:59   #6
 
Аватар для gunya
 
Сообщений: 144
FR (активность): 2,529

Доп. информация
По умолчанию

Цитата:
Сообщение от hurt Посмотреть сообщение
вот гугл
Сделал себе парсилку для гугла. Работает отлично. Единственное задержка у мну редомно от 200 до 600 секунд. Не быстро, зато за 4 дня ни одной капчи не было.
Цитата:
Сообщение от Elias Посмотреть сообщение
несколько строк USERAGENT
В своем парсере вообще написал "Site.ru" Gunya Project" - для гугла канает.
Цитата:
Сообщение от Elias Посмотреть сообщение
sleep|=|rand(3,|7);
Слишком мало. Надо от 2 мин и больше.
gunya вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 22.11.2012, 16:51   #7
 
Аватар для Puppeteer
 
Сообщений: 555
FR (активность): 16,789

Доп. информация
По умолчанию

Для яндекса просто нужно ставить куки, недавно такое делал, но все равно через 400-500 запросов вылазит капча и я тупо одну куку ставил. Делал так ради развлечения, будет еще время надо до конца разобраться.
Puppeteer вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 22.11.2012, 22:18   #8
 
Аватар для hurt
 
Сообщений: 359
FR (активность): 11,770

Доп. информация
По умолчанию

gunya, для гугла используете прокси? обращаетесь напрямую адресом-запросом к гуглу?
hurt вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 22.11.2012, 23:47   #9
 
Аватар для gunya
 
Сообщений: 144
FR (активность): 2,529

Доп. информация
По умолчанию

Цитата:
Сообщение от hurt Посмотреть сообщение
gunya, для гугла используете прокси? обращаетесь напрямую адресом-запросом к гуглу?
Нет. Проксю не использую, подключаюсь на прямую. Просто скопировал строку адреса и только меняю ключевые слова. Выдается по 100 результатов на страницу - 10 страниц загружается сразу, потом рэндом перекур и снова запрос 100 рез/стр - 10 страниц.
Единственное меняю непонятный параметр ei, для чего он не знаю, но на всякий случай раз в день меняю.
gunya вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.11.2012, 09:38   #10
 
Аватар для specialist-seo
 
Сообщений: 2,416
FR (активность): 63,156

Доп. информация
По умолчанию

Цитата:
Сообщение от mrmixsun Посмотреть сообщение
Имею парсер, который как раз парсит выдачу из XML - ну, он практически бесполезен. Во всяком случае, позиции расходятся. Сильно.
Пример региона в котором позиции расходятся сильно. Давно работаю через XML - отличия если и есть, то они минимальны и их наличие вполне допустимо.

То что через браузер отличается =
1) Какой регион в браузере, такой же код подставляете или он сам должен определить местное поселение? (у яндекса сейчас в поиске большое количество не только крупных, но и уже достаточно мелких городов, в том числе и крупных поселений)
2) Что за парсер такое кривой, все ли настройки правильно сделаны?

Цитата:
Сообщение от hurt Посмотреть сообщение
ишу анализатор поисковой выдачи, xml блин вобще хрень показывает, ну и 1000 запросов в сутки бред
что такое анализатор выдачи, позиции проверяете или хрень ищете?

Выставляем в отдаче XML 100 ответов (сайтов), глубже 100 позиции проверять позиции бредово, все равно кроме вас туда никто не ходит, за исключением некоторых уников.

Получаем что каждый день свой сайт можем мониторить по 1000 запросов, это минимум 1000 человек в день должно быть на сайте, если нет,
то нафиг такие запросы проверять, по которым даже раз в сутки никто не приходит.

По гуглу = у него нет даже 1000 запросов которые можно делать автоматически и получить тоже что в браузере, хотя API есть, тут хочешь или нет если важны позиции придется парсить выдачу.
specialist-seo вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.11.2012, 09:41   #11
 
Аватар для Elias
 
Сообщений: 13
FR (активность): 0

Доп. информация
По умолчанию Автор темы

Цитата:
Сообщение от Personality Посмотреть сообщение
Для яндекса просто нужно ставить куки, недавно такое делал, но все равно через 400-500 запросов вылазит капча и я тупо одну куку ставил. Делал так ради развлечения, будет еще время надо до конца разобраться.
куку я поставил

Сообщение добавлено 23.11.2012 в 12:46

прикрутил распознавание капчи с помощью antigate.com, но скрипт часто выдает:
504 Gateway Time-out
я так понимаю нужно менять:
php.ini: max_execution_time
nginx.conf: proxy_read_timeout
client_header_timeout
client_body_timeout
send_timeout

или ошибаюсь?
Elias вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.11.2012, 09:48   #12
 
Аватар для specialist-seo
 
Сообщений: 2,416
FR (активность): 63,156

Доп. информация
По умолчанию

Цитата:
Сообщение от Elias Посмотреть сообщение
куку я поставил
я тоже, наверное, а может и нет - а может лучше ответить на вопросы
1) Назначение парсера, образовательная цель или практика
2) Расположение сервер или настольный компьютер
3) Почему не используется эмулятор браузера
4) С другим (человеческим) запросом капча вылезает или одним долбится на проверку ссылок?
specialist-seo вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 23.11.2012, 14:15   #13
 
Аватар для gunya
 
Сообщений: 144
FR (активность): 2,529

Доп. информация
По умолчанию

Цитата:
Сообщение от Elias Посмотреть сообщение
max_execution_time
Можно вместо в пхп использовать set_time_limit();
gunya вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 26.11.2012, 08:35   #14
 
Аватар для mrmixsun
 
Сообщений: 95
FR (активность): 3,760

Доп. информация
По умолчанию

Цитата:
Сообщение от specialist-seo Посмотреть сообщение
Пример региона в котором позиции расходятся сильно. Давно работаю через XML - отличия если и есть, то они минимальны и их наличие вполне допустимо.

То что через браузер отличается =
1) Какой регион в браузере, такой же код подставляете или он сам должен определить местное поселение? (у яндекса сейчас в поиске большое количество не только крупных, но и уже достаточно мелких городов, в том числе и крупных поселений)
2) Что за парсер такое кривой, все ли настройки правильно сделаны?
например, Москва = 213 регион в Яндексе. Позиции различаются в пределах +- 5.
Поясню цель - это используется для отчетов перед клиентами - то есть, клиент не проверяет через Яндекс позиции своего сайта, а идет на наш сайт, там логинится, и получает отчет по позициям, посещалке, и т.п. - соответственно, точность выдачи позиций должна быть идеальной, иначе замучаешься объяснять, зачем это вообще, если по факту позиции отличаются.
Иными словами - парсер должен выдать позицию, которую может увидеть клиент в своем браузере. Для этих целей XML не подходит, имхо. Можем в качестве примера рассмотреть реальные запросы, ежели хотите, но я не вижу необходимости.

По теме - да, антигейт - лучшее решение. Во всяком случае, самое быстрое, простое и не дорого и выйдет.


Любители состязаются друг с другом, профессионалы - сами с собой
mrmixsun вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Старый 27.11.2012, 13:08   #15
 
Аватар для Elias
 
Сообщений: 13
FR (активность): 0

Доп. информация
По умолчанию Автор темы

Цитата:
Сообщение от specialist-seo Посмотреть сообщение
я тоже, наверное, а может и нет - а может лучше ответить на вопросы
1) Назначение парсера, образовательная цель или практика
2) Расположение сервер или настольный компьютер
3) Почему не используется эмулятор браузера
4) С другим (человеческим) запросом капча вылезает или одним долбится на проверку ссылок?
1) и образовательная и практика
2) сервер(хостинг у best-hoster)
3) пока что хочется без него
4) с другими запросами тоже

сейчас прикрутил антигейт
строку с текстом капчи формирую так:
[php]$url = 'http://yandex.ru/checkcaptcha?key='.$key.'&retpath='.$retpath.'&rep ='.$text;[/php]
до сегодняшнего дня переходил с помощью cURL по такой ссылке и получал страницу выдачи, а сегодня переходя по этой ссылке снова получаю капчу, снова разгадываю и снова капча и т.д.
если руками перейти, то получаю страницу с выдачей
подскажите, с чем связано может быть?

насчет кук, делаю так:
[php]$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/cookies.txt';
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); [/php]

Сообщение добавлено 27.11.2012 в 20:21

Цитата:
Сообщение от specialist-seo Посмотреть сообщение
Почему не используется эмулятор браузера
какую библиотеку посоветуете?
слышал только о snoopy, но не использовал

Сообщение добавлено 27.11.2012 в 20:27

Цитата:
Сообщение от Vladimir-AWM Посмотреть сообщение
Проще распознователь капчи через антикапчу дописать. После ввода правильной капчи Яша долго не будет выдавать ее снова.
в этом посте описал проблему связанную с антигетом

Сообщение добавлено 27.11.2012 в 20:28

Цитата:
Сообщение от hurt Посмотреть сообщение
а да вот еще что от 3 до 7 что? секунд??? задержка вы представьте себе с какой скоростью должен пользователь работать что бы так яндекс читать
тогда какое оптимальное время задержки?

Сообщение добавлено 27.11.2012 в 20:30

Цитата:
Сообщение от Personality Посмотреть сообщение
Для яндекса просто нужно ставить куки, недавно такое делал, но все равно через 400-500 запросов вылазит капча и я тупо одну куку ставил.
я даже с помощью антигейта разгадываю, но яндекс все равно капчу выдает
подскажите, тогда как вы куки получаете и отдает? с помощью cURL?
Elias вне форума  
Ответить с цитированием Сказать Плохо за это бесполезное сообщение Быстрый ответ на это сообщение
Ответ

Быстрый ответ
Ваше имя пользователя: Регистрация. Для входа нажмите здесь
Случайный вопрос

Сообщение:
Опции
Внимание!
Этой теме более 3581 дней. Вы можете оставить сообщение здесь. Но, обращаем внимание. Возможно, рациональней создать новую тему (найти свежее обсуждение)?


Опции темы
Опции просмотра Оценка этой теме
Оценка этой теме:

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Curl PHP + Meta Refresh gunya Программирование 7 22.11.2012 15:53
К - капча, клоакинг, клик, комьюнити, конверсия, контент, контекстная реклама Jokeron SEO словарь 4 19.06.2011 14:26
Капча gruz Беседка 5 19.11.2009 02:51

Текущее время: 21:15. Часовой пояс GMT +3.