Боты и защита

Роботы Яндекса: кто ходит на сайт и как отличить настоящего

В логах сайта Яндекс представлен десятками роботов: один индексирует страницы, другой проверяет рекламу, третий делает снимки для выдачи. Разбираем, кто есть кто, каких роботов нельзя блокировать и как отличить настоящего робота от подделки.

Обновлено 11 ноября 20264 мин чтенияКоманда nbots

Содержание
  1. Зачем Яндексу столько роботов
  2. Главные роботы Яндекса
  3. Каких роботов нельзя блокировать
  4. Как отличить настоящего робота от подделки
  5. Как найти роботов Яндекса в логах
  6. Как управлять роботами через robots.txt
  7. Частые вопросы

Коротко

  • У Яндекса больше 40 роботов, у каждого своя задача: поиск, картинки, Директ, Метрика.
  • Часть роботов не читает общие правила robots.txt — для них нужна отдельная секция.
  • User-Agent «YandexBot» может подделать кто угодно. Настоящего робота выдаёт обратный и прямой DNS.
  • Основного робота не блокируют: если он нагружает сервер, снижают скорость обхода в Вебмастере.

Зачем Яндексу столько роботов

У каждого сервиса Яндекса свои задачи, поэтому и роботы разные. Основной индексирующий робот собирает страницы для поиска, робот Картинок — изображения, робот Директа проверяет посадочные страницы объявлений, робот Метрики — доступность сайта и страницы для Вебвизора. Все они представляются в заголовке User-Agent строкой вида:

Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

Важное слово здесь — название робота: YandexBot, YandexImages, YandexMetrika и так далее. Но написать такую строку может кто угодно, поэтому одного User-Agent для доверия мало — о проверке ниже.

Главные роботы Яндекса

Полный список есть в справке Вебмастера, в нём больше 40 названий. На практике в логах небольшого сайта чаще всего встречаются эти:

РоботЗачем приходитЧитает общие правила robots.txt
YandexBotОсновной робот поиска: скачивает страницы для индексаДа
YandexImagesИндексирует картинки для Яндекс КартинокДа
YandexRenderResourcesBotЗагружает скрипты и стили, чтобы отрисовать страницу с JavaScriptУчитывает правила страницы, которая использует ресурсы
YandexMetrikaПроверяет доступность страниц, сохраняет стили для ВебвизораНет
YaDirectFetcherЗагружает посадочные страницы объявлений ДиректаНет
YandexDirectИзучает содержание сайтов-партнёров РСЯ для подбора рекламыНет
YandexAccessibilityBotПроверяет, открываются ли страницы у пользователейНет
YandexMobileBotОпределяет страницы с мобильной вёрсткойНет
YandexFaviconsЗагружает фавикон для выдачиНет
YandexAdditionalНе ходит на сайт сам. Это название для robots.txt, которым можно запретить показ текстов сайта в быстрых ответах YandexGPT и в ответах Поиска с Алисой—

«Нет» в последнем столбце не значит, что робот вредный. Он просто не следует правилам из секций User-agent: * и User-agent: Yandex. Если нужно ограничить именно его, пишите отдельную секцию с его названием.

Каких роботов нельзя блокировать

  • YandexBot и YandexRenderResourcesBot — без них страницы выпадут из поиска или будут отрисованы с ошибками.
  • YaDirectFetcher, если вы даёте рекламу в Директе: объявления с недоступной посадочной страницей останавливаются.
  • YandexMetrika, если пользуетесь Вебвизором и мониторингом доступности.
  • YandexImages, если вам нужен трафик из Картинок — например, интернет-магазину или сайту с фотографиями работ.

Если нагрузку создаёт именно основной робот, не закрывайте его, а уменьшите скорость обхода в Вебмастере: «Индексирование» → «Скорость обхода». Директиву Crawl-delay Яндекс больше не учитывает.

Как отличить настоящего робота от подделки

Парсеры и боты часто представляются YandexBot: их реже блокируют. Настоящего робота Яндекса выдают не слова в User-Agent, а адрес, с которого он пришёл. Проверка в два шага:

  1. Обратный DNS-запрос по IP. Имя хоста настоящего робота заканчивается на yandex.ru, yandex.net или yandex.com.
  2. Прямой DNS-запрос по полученному имени. Он должен вернуть тот же IP. Если адрес другой, имя подделано.
# 1. Обратный запрос: имя хоста по IP из логов
host 203.0.113.10
# ответ должен заканчиваться на yandex.ru, yandex.net или yandex.com

# 2. Прямой запрос: IP по полученному имени
host имя-из-ответа.yandex.com
# адрес должен совпасть с исходным 203.0.113.10

Команда host есть в Linux и macOS. В Windows то же делает nslookup.

Проверять каждый запрос вручную неудобно, поэтому антиботы, в том числе nbots, делают это автоматически и запоминают результат. «Яндекс», который не прошёл проверку, считается обычным ботом.

Проверка поискового роботаВведите IP из логов — инструмент сделает обратный и прямой DNS-запрос и скажет, настоящий ли это Яндекс или Google.Открыть

Как найти роботов Яндекса в логах

Поищите в access.log строки с Yandex и сгруппируйте по IP. Настоящие роботы приходят из сетей Яндекса и проходят проверку DNS. Если «YandexBot» приходит с домашнего провайдера, из облака или хостинга — это подделка. Быстрее всего это видно в анализаторе логов: он сам разделит поисковых роботов, SEO-сервисы и подозрительных ботов.

Нужно ли ограничивать этого робота?Ответьте на 2 вопроса
Кто приходит на сайт?
Что беспокоит?
Выберите ответы — подскажем решение

Как управлять роботами через robots.txt

  • Секция User-agent: Yandex действует на всех роботов Яндекса, которые читают общие правила. Если она есть, секцию User-agent: * Яндекс не читает.
  • Секция с конкретным названием, например User-agent: YandexImages, важнее обеих.
  • Директива Clean-param подсказывает Яндексу, какие параметры адреса не меняют страницу, например метки рекламы. Это экономит обход.
  • Директиву Host Яндекс не использует с 2018 года, главное зеркало задаётся 301-редиректом.

Проверить, что правила работают как задумано, можно в проверке robots.txt: вставьте файл и адреса — инструмент покажет, какой робот какую страницу увидит.

Частые вопросы

Как понять, что на сайт заходил робот Яндекса?

Откройте логи сервера и найдите строки, где в User-Agent есть Yandex. Затем проверьте IP этих запросов обратным и прямым DNS-запросом: у настоящего робота имя хоста заканчивается на yandex.ru, yandex.net или yandex.com.

Почему робот Яндекса заходит на закрытые в robots.txt страницы?

Часть роботов Яндекса не следует общим правилам: например, роботы Метрики, Директа и проверки доступности. Чтобы ограничить их, нужна отдельная секция с названием конкретного робота. А если «робот» вообще не проходит проверку DNS, это не Яндекс.

Как уменьшить нагрузку от YandexBot?

Не блокируйте его, а снизьте скорость обхода в Яндекс Вебмастере: «Индексирование» → «Скорость обхода». Директиву Crawl-delay Яндекс не учитывает.

Что такое YandexAdditional в robots.txt?

Это не отдельный робот, а название, которым можно запретить использовать тексты сайта в быстрых ответах YandexGPT и в ответах Поиска с Алисой. На индексацию сайта в обычном поиске такой запрет не влияет.

С каких IP-адресов приходят роботы Яндекса?

Из сетей Яндекса, но фиксированного публичного списка адресов нет. Поэтому проверка делается не по списку IP, а по DNS: имя хоста должно заканчиваться на yandex.ru, yandex.net или yandex.com и вести обратно на тот же IP.

Работает ли Clean-param для Google?

Нет, это директива только Яндекса. Google её игнорирует. Для Google дубли с параметрами убирают с помощью канонических адресов.

Можно ли запретить Яндексу индексировать сайт, но оставить рекламу?

Да. Закройте сайт для YandexBot, а YaDirectFetcher и робот Метрики продолжат проверять посадочные страницы, потому что они не используют общие правила robots.txt.

Читайте также