Коротко: строка User-Agent «Googlebot» ничего не доказывает, её может написать любой скрипт. Настоящего бота подтверждает IP-адрес: обратный DNS должен вести на домен Google, а прямой запрос по этому имени должен вернуть тот же IP. Проверить это можно командой host или в бесплатной проверке User-Agent и IP.

В логах и в Метрике нередко видно «Googlebot» или «YandexBot» с огромным числом запросов. Блокировать их страшно: вдруг это настоящие. Не блокировать тоже плохо: парсеры и спам-боты специально представляются поисковыми роботами, чтобы их не трогали. Разбираем, как отличить одно от другого.

Почему User-Agent нельзя считать доказательством

User-Agent это текстовый заголовок запроса, который отправляет сам клиент. В нём можно написать что угодно: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) подойдёт и для curl. Подделку используют парсеры цен, спам-боты и накрутчики статистики: им выгодно выглядеть как «хороший» бот.

Как проверить бота: обратный и прямой DNS

Метод, который описывают сами поисковые системы, называется проверкой по обратному DNS с подтверждением прямым запросом (FCrDNS). Идея в двух шагах:

  1. Обратный запрос. По IP из лога узнаём имя хоста (запись PTR).
  2. Прямой запрос. По этому имени узнаём IP и убеждаемся, что он совпадает с исходным.

Чем это защищает: владелец любого IP может записать в PTR что угодно, в том числе «crawl-….googlebot.com». Но прямую запись для чужого домена он создать не может, и без совпадения проверка не проходит.

Пример для настоящего Googlebot:

$ host 66.249.66.1
1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.

$ host crawl-66-249-66-1.googlebot.com
crawl-66-249-66-1.googlebot.com has address 66.249.66.1

Имя заканчивается на googlebot.com, прямой запрос вернул тот же адрес: бот подтверждён.

Домены, на которые должны вести имена

  • Google: googlebot.com, google.com (для некоторых служебных роботов также googleusercontent.com). Google ещё публикует официальные списки диапазонов своих краулеров.
  • Яндекс: yandex.ru, yandex.net, yandex.com.
  • Bing: search.msn.com.

Актуальные списки доменов и диапазонов смотрите в документации поисковиков: они могут меняться. На странице «Официальные домены ботов» мы собрали домены, по которым проверяет Bot Guard.

Бесплатная проверка в один клик

Открывать терминал необязательно. На странице проверки User-Agent и IP введите строку User-Agent и IP-адрес запроса (или только IP). Сервис проверит:

  • принадлежит ли адрес сети датацентра или облака;
  • обратный DNS (PTR) и совпадение с прямой записью;
  • если в User-Agent заявлен поисковый или ИИ-бот, совпадает ли IP с доменами или диапазонами его владельца.

Результат: «подтверждённый бот», «подделка» или «подозрительный адрес», с объяснением. Например, адрес 66.249.66.1 с User-Agent Googlebot подтверждается (PTR ведёт на googlebot.com), а тот же User-Agent с адреса 8.8.8.8 определяется как подделка: этот адрес принадлежит не Google-краулеру.

Важные оговорки

  • Нет PTR или DNS не ответил. Это не значит, что бот поддельный: DNS иногда отвечает медленно. Мы в таких случаях пишем, что проверить не удалось, и советуем повторить. Блокировать на таком основании нельзя.
  • Только IPv4. Обратный DNS в проверке выполняется для IPv4; для IPv6 показываются только сети и списки диапазонов.
  • Чистый адрес не гарантирует человека. Проверка отвечает на вопрос «настоящий ли это Googlebot», а не «человек ли за этим запросом».

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

  1. Блокируйте по IP и поведению, а не только по User-Agent.
  2. Для поисковых ботов сначала проверяйте FCrDNS, а потом решайте: пропустить или закрыть.
  3. Не выносите вердикт по единичному сбою DNS: он может быть временным.

Так работает Bot Guard: на каждый запрос с User-Agent известного бота выполняется проверка подлинности по IP, а подделки блокируются. Чтобы увидеть, сколько таких запросов у вас, загрузите лог в анализатор access-лога, подробнее об этом в статье как найти ботов в access-логе nginx.

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

Как быстро проверить, настоящий ли Googlebot?

Возьмите IP из лога и выполните host IP, затем host по полученному имени. Имя должно заканчиваться на googlebot.com или google.com, а прямой запрос должен вернуть исходный IP. Либо введите User-Agent и IP в бесплатную проверку на bot-guard.ru.

Что, если IP из диапазонов Google, а UA другой?

Диапазоны Google включают разные сервисы, не только поисковый краулер. По User-Agent и документации Google определите, что это за робот, и сверяйтесь с его описанием.

Можно ли блокировать Googlebot, если он создаёт нагрузку?

Лучше ограничить скорость обхода через настройки Search Console и robots.txt, чем блокировать: закрытый для бота сайт пропадёт из выдачи.

Чем отличается проверка Яндекса и Bing?

Метод тот же (обратный DNS и прямой запрос), отличаются только домены, на которые должны вести имена: у Яндекса это yandex.ru, yandex.net и yandex.com, у Bing search.msn.com.

Нужен ли мне для этого сервис защиты?

Для разовой проверки достаточно команды host или бесплатного инструмента. Если запросов много, ручная проверка не справляется: нужна автоматическая проверка на каждый запрос.

Защитите свой сайт от ботов прямо сейчас

Подключение занимает несколько минут — вставьте один PHP-сниппет, и Bot Guard начнёт фильтровать ботов, скрейперов и попытки SQL-инъекций автоматически.

Зарегистрироваться бесплатно
Заказать звонок

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

Что такое Ransomware и как защитить сайт от программ-вымогателей
Узнайте, что такое программы-вымогатели, как они работают и какие методы защиты помогут об…
Плагин Bot Guard для WordPress: защита от ботов за 2 минуты
Бесплатный плагин bot-guard для WordPress: отсекает ботов, парсеры и спам-отправки в формы…
Защита сайта через User-Agent: Самый быстрый первый уровень безопасности. Полное руководство
Исчерпывающее руководство по защите веб-сайта через анализ User-Agent. От базовой фильтрац…