Коротко: строка 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). Идея в двух шагах:
- Обратный запрос. По IP из лога узнаём имя хоста (запись PTR).
- Прямой запрос. По этому имени узнаём 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», а не «человек ли за этим запросом».
Как не заблокировать настоящих ботов
- Блокируйте по IP и поведению, а не только по User-Agent.
- Для поисковых ботов сначала проверяйте FCrDNS, а потом решайте: пропустить или закрыть.
- Не выносите вердикт по единичному сбою 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-инъекций автоматически.