Защита от роботов. Руководство разработчика
Авторами поисковых запросов могут быть не только пользователи, но и роботы. При большом потоке запросов от роботов могут быть превышены ограничения, наложенные на использование Яндекс.XML.
Для предотвращения несанкционированных обращений роботов к поиску используется алгоритм защиты. Если предполагается, что запрос задан роботом, вместо результатов поиска возвращается CAPTCHA (статья в Википедии про CAPTCHA).
Для использования алгоритма защиты от роботов партнер должен передавать сведения об IP-адресе и куке spravka автора запроса. Кука spravka формируется на стороне Яндекс.XML и возвращается при первом обращении пользователя за результатами поиска. В полученном значении партнер должен заменить домен на свой, а затем добавить следующую строку к поисковому ответу:
Set-Cookie: spravka=...
Сведения об IP-адресе и куке spravka передаются в заголовке запроса в формате:
X-Real-Ip: 99.999.999.99 Cookie: spravka=<значение, переданное от Яндекса>
Диаграмма последовательности действий, выполняемых для защиты от роботов, приведена на рисунке ниже.
Пользователь отправляет запрос партнеру Яндекс.XML.
Поисковый запрос отправляется сервису Яндекс.XML. Запрос должен соответствовать заданному формату.
Яндекс.XML инициирует выполнение алгоритмов защиты от роботов. Для проверки используются значения IP-адреса и куки spravka (если ранее выставлена).
Возможные результаты проверки:
Предположительно, запрос отправлен не роботом. Выполняется переход к пункту 13.
Предположительно, запрос отправлен роботом. Принимается решение об отображении CAPTCHA.
Яндекс.XML возвращает партнеру XML-файл следующего формата:
<?xml version="1.0" encoding="utf-8"?> <yandexsearch version="1.0"> <response> <error code="100">Robot request</error> </response> <captcha-img-url>http://captcha. image.gif</captcha-img-url> <captcha-key>Идентификационный номер CAPTCHA</captcha-key> <captcha-status>Статус</captcha-status> </yandexsearch>
Пользователю возвращается страница, содержащая CAPTCHA.
Пользователь отправляет значение CAPTCHA партнеру.
Партнер отправляет полученное от пользователя значение CAPTCHA GET-запросом следующего формата:
https://yandex.ru/xcheckcaptcha?key=<идентификационный номер CAPTCHA>
&
rep=<введеное пользователем значение CAPTCHA>Полученное значение проверяется сервисом Яндекс.XML. Если введено некорректное значение CAPTCHA, выполняется переход к пункту 4. При этом в параметре
передается значение «failed».Если введено корректное значение CAPTCHA, Яндекс.XML выставляет пользователю куку spravka и передает ее партнеру в заголовке следующего формата:
HTTP/1. 1 200 OK Set-Cookie: spravka=
<
значение куки>
Если запрос, переданный в Яндекс.XML на шаге 1 был успешно сохранен, выполняется переход к шагу 12.
Партнер предлагает пользователю ввести запрос.
Пользователь отправляет запрос партнеру Яндекс.XML.
Поисковый запрос отправляется сервису Яндекс.XML. С запросом передается IP-адрес пользователя и кука spravka.
Яндекс.XML обрабатывает поисковый запрос и формирует результаты.
XML-файл с результатами поиска возвращается партнеру.
Партнер возвращает обработанный ответ пользователю. Если на шаге 9 Яндекс.XML выставил куку spravka, она сохраняется у пользователя.
Совет. Для ознакомления с реализацией приведенной схемы используйте данный скрипт.
Для ознакомления с форматом ответа, возвращаемого Яндекс.XML в случае отображения CAPTCHA, необходимо отправить в качестве запроса (значение параметра query
поискового запроса) следующую строку: «e48a2b93de1740f48f6de0d45dc4192a».
Следующий GET-запрос может быть использован пользователем «xml-search-user» для ознакомления с форматом ответа, возвращаемым в случае отображения CAPTCHA:
wget -q --header="X-Real-Ip: 127.0.0.1" -SO- 'https://yandex.ru/search/xml?user=xml-search-user&key=03.44583456:c876e1b098gh65khg834ggg1jk4ll9j8&query=e48a2b93de1740f48f6de0d45dc4192a&showmecaptcha=yes'
Обход Yandex Captcha с помощью API сервиса по решению капч 2Captcha
Процесс решения обычной капчи заключается в следующем: мы забираем изображение капчи со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи
API демонстрацияКак решитьПроцесс решения текстовой капчи заключается в следующем: мы забираем текстовый вопрос капчи со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ, который необходимо ввести в соответствующее поле для решения капчи
API демонстрацияКак решитьПроцесс решения заключается в следующем: мы забираем изображение капчи со страницы ее размещения и инструкцию, по каким картинкам необходимо кликать и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде набора координат точек на изображении, по которым необходимо кликнуть для решения капчи
API демонстрацияКак решитьПроцесс решения Rotate Captcha заключается в следующем: мы забираем изображение капчи со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде значения угла поворота изображения, на который необходимо повернуть изображение для решения капчи
API демонстрацияКак решитьПроцесс решения reCAPTCHA V2 заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи
API демонстрацияКак решитьПроцесс решения reCAPTCHA V2 Callback не отличается от аналогичного процесса решения reCAPTCHA V2: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи. Иногда вы не найдете кнопки, отправляющей форму. Вместо нее может использоваться callback-функция. Эта функция выполняется, когда капча распознана. Обычно callback-функция определена в параметре data-callback или как параметр callback у функции grecaptcha.render
API демонстрацияКак решитьПроцесс решения невидимой капчи reCAPTCHA V2 Invisible аналогичен распознаванию reCAPTCHA V2 и заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи
API демонстрацияКак решитьПроцесс решения reCAPTCHA V3 следующий: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey, параметра action и адреса страницы размещения капчи и передаем их в сервис 2Captcha, где ее решает работник с соответствующим рейтингом «человечности”, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи. Во многом новый вид капчи похож на reCAPTCHA V2, т.е. основной принцип остался тем же — пользователь получает от API 2Captcha токен, который отправляется в POST-запросе к сайту, а сайт верифицирует токен через API reCAPTCHA
API демонстрацияКак решитьПроцесс решения reCAPTCHA Enterprise заключается в следующем: определяем тип reCAPTCHA, он может быть V2 или V3, после чего мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи и передаем их в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи
Как решитьПроцесс решения KeyCaptcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи
API демонстрацияКак решитьПроцесс решения GeeTest Captcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи
API демонстрацияКак решитьПроцесс решения заключается в следующем: мы забираем параметры капчи, необходимые для ее решения в виде параметра data-sitekey и адреса страницы размещения капчи 2Captcha и передаем их в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде токена, который необходимо ввести в соответствующее поле для решения капчи
API демонстрацияКак решитьПроцесс решения FunCaptcha Arkose Labs заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи
Как решитьПроцесс решения Capy Puzzle Captcha заключается в следующем: мы забираем набор необходимых параметров со страницы ее размещения и передаем в сервис 2Captcha, где ее решает работник, после чего нам возвращается ответ в виде набора уже других параметров, который необходимо передать в соответствующие поля для решения капчи
Как решитьПроцесс решения TikTok Captcha основан на cookies, которые нужно использовать не позднее трех секунд после решения капчи нашими работниками. Необходимо собрать все cookies со страницы, где размещена капча, передать в сервис 2Captcha, где произойдет решение, а полученный в ответ набор cookies применить перед совершением действия, защищенного капчей на странице размещения капчи
Как решитьБлокировка поиска и капча — Капча. Обратная связь
- Почему блокируется поиск?
- Как другие люди могут получить доступ в Интернет с моего IP-адреса?
- Как вернуться в поиск со страницы с капчей?
- Я не вижу капчи. Что я должен делать?
- Ошибка 403. Что делать?
- Связаться со службой поддержки
Поиск Яндекса может быть заблокирован, если с одного IP-адреса поступает несколько одновременных запросов. В этой ситуации трудно понять, являются ли поисковые запросы автоматическими или отправляются реальными людьми. Это может произойти, если несколько пользователей заходят на сервис Яндекса с устройств, подключенных к интернету, с одного IP-адреса. В таких случаях Яндекс интерпретирует их всех как одного пользователя и показывает капчу — тест на распознавание символов.
Пример капчи:
Запросы, полученные с вашего IP-адреса, не обязательно отправляются с вашего устройства. Интернет-провайдеры иногда выделяют один и тот же IP-адрес нескольким абонентам.
Если вы используете общедоступную сеть, например сеть Wi-Fi в кафе, то вы используете один и тот же IP-адрес со всеми другими людьми, использующими ту же точку доступа Wi-Fi.
Также возможно, что ваш компьютер заражен вирусом, который отправляет автоматические запросы. Мы рекомендуем запускать проверку на вирусы с помощью программы Dr.Web CureIt! программу или средство удаления вирусов от «Лаборатории Касперского».
Чтобы вернуться на страницу поиска, введите символы, показанные на изображении с картинки, и нажмите «Отправить».
Чтобы получить новое изображение с картинки, нажмите .
Вместо символов с картинки можно вводить цифры из аудио капчи. Для этого нажмите → Воспроизвести и прослушайте аудио.
Внимание. Яндекс только просит вас ввести символы с изображения и никогда не просит вас ввести номер телефона, отправить текстовое сообщение или повторно ввести имя пользователя и пароль. Если вас попросят сделать это, значит, вы зашли на поддельную страницу. Пожалуйста, сообщите нам об этом через форму обратной связи.
Если вы введете символы правильно, Яндекс надолго запомнит ваш браузер как надежный источник (при условии, что в вашем браузере включены файлы cookie).
Если вам нужно отправлять автоматические запросы в Яндекс, рассмотрите возможность использования сервиса Яндекс.XML.
Убедитесь, что в вашем браузере включена загрузка изображений.
Если вы видите логотип Яндекса, но не видите изображение с символами, убедитесь, что загрузка изображения не блокируется плагинами вашего браузера или настройками брандмауэра.
Если вы столкнулись с этой проблемой на работе, обратитесь к сетевому администратору.
Ошибка 403 означает, что доступ к сервисам Яндекса запрещен. Это происходит, когда автоматическая программа (бот) пытается обойти капчу и отправляет слишком много одновременных запросов с выделенных IP-адресов или через открытые прокси. Иногда боты могут использовать IP-адреса, принадлежащие реальным людям. В этом случае блокируется и доступ к сервисам.
Если вы столкнулись с этой ошибкой, воспользуйтесь формой обратной связи внизу страницы. Специалист рассмотрит вашу жалобу и разблокирует IP-адрес раньше, если запросы к сервисам не были автоматическими.
Вопрос по капче или ошибка 403Другие вопросы по сервису Яндекса
Обратитесь в службу поддержки этого сервиса напрямую. Для этого нужно зайти в соответствующую справку и воспользоваться там формой обратной связи (формы обычно расположены внизу страниц или доступны из оглавления). Так ваше сообщение сразу попадет к нужным специалистам и вы быстрее получите ответ.
Услуги, о которых часто спрашивают:
Если вам нужна помощь с Яндекс.Деньгами, заполните форму на странице Службы поддержки.
Чтобы сообщить о проблеме с вашим сайтом, перейдите в раздел Обратная связь справки Яндекс. Вебмастера.
Защита от роботов. Руководство разработчика
Поисковые запросы могут отправлять не только пользователи, но и роботы. При потоке запросов от роботов вы можете превысить ограничения на использование Яндекс.XML.
Для предотвращения несанкционированного доступа к поиску роботами используется алгоритм безопасности. Если есть подозрение, что запрос был отправлен роботом, вместо результатов поиска возвращается CAPTCHA (см. эту статью в Википедии о CAPTCHA).
Для использования алгоритма защиты от роботов партнер должен передать информацию об IP-адресе и файле cookie «справка» для автора запроса. Файл cookie «справка» формируется на стороне Яндекс.XML и возвращается при первом доступе пользователя к результатам поиска. В полученном значении партнер должен заменить домен на свой, а затем добавить в поисковый ответ следующую строку:
Set-Cookie: spravka=...
Информация об IP-адресе и «справке куки передаются в заголовке запроса в формате:
X-Real-IP: 99. 999.999.99 Cookie: spravka=<значение передано от Яндекса>
На приведенной ниже схеме показаны шаги, выполняемые для защиты от роботов.
Пользователь отправляет запрос партнеру Яндекс.XML.
Поисковый запрос отправляется в сервис Яндекс.XML. Запрос должен соответствовать указанному формату.
Яндекс.XML запускает алгоритм защиты от роботов. Значения IP-адреса и cookie-файла «справка» (если они были выпущены ранее) используются для проверки.
Возможные результаты проверки:
Яндекс.XML возвращает партнеру файл XML в следующем формате:
<ответ> Запрос робота ответ>http://captcha.image.gif Идентификатор CAPTCHA Статус Пользователю возвращается страница, содержащая CAPTCHA.
Пользователь отправляет значение CAPTCHA партнеру.
Партнер отправляет полученное от пользователя значение CAPTCHA через GET-запрос в следующем формате:
https://yandex.ru/xcheckcaptcha?key=<номер CAPTCHA>
&
rep=<введенное значение CAPTCHA by user>Полученное значение проверяется сервисом Яндекс.XML. Если значение CAPTCHA было введено неправильно, процесс переходит к шагу 4. Кроме того,
параметр captcha-status
передан со значением «failed».Если значение CAPTCHA введено правильно, Яндекс.XML выдает пользователю cookie-файл «справка» и передает его партнеру в шапке в следующем формате:
HTTP/1.1 200 OK Set-Cookie: spravka=
<
cookie value>
Если запрос, переданный в Яндекс.XML на шаге 1, был успешно сохранен, процесс продолжается до шага 12.