Fake Bot: Как KillBot определяет фейковых ботов

KillBot умеет отличать настоящих ботов (поисковые системы, сервисы) от фейковых, которые маскируются под них.

Отдельно про пропуск нейросетей и официальных ботов по IP описано здесь: https://killbot.ru/node/64


В чем проблема

Большинство ботов легко подделывают User-Agent. Например, любой скрипт может отправить запрос с User-Agent:

Googlebot/2.1 (+http://www.google.com/bot.html)

Если проверять только User-Agent — такой бот будет считаться настоящим.

Поэтому одного User-Agent недостаточно.


Как KillBot определяет фейкового бота

KillBot использует проверку через обратный DNS (PTR) и прямой DNS (A).

Логика следующая:

1. Проверяется User-Agent
Если он похож на известного бота (например Google, Yandex, Bing), включается дополнительная проверка.

2. Выполняется обратный DNS-запрос (PTR)
KillBot получает доменное имя, связанное с IP-адресом.

Пример нормального результата:

crawl-66-249-66-1.googlebot.com

3. Проверяется домен
Домен должен относиться к официальной зоне (например .googlebot.com, .yandex.ru и т.д.).

4. Выполняется прямой DNS-запрос
Полученный домен снова резолвится в IP.

5. Сравниваются IP
Если IP совпадает — бот считается настоящим.

Если хотя бы один из этапов не проходит — это фейковый бот.


Как выглядит фейковый бот

Фейковый бот обычно имеет:

  • правильный User-Agent
  • неправильный или отсутствующий PTR
  • или несоответствие IP при обратной проверке

Пример:

User-Agent: Googlebot
IP: 1.2.3.4
PTR: отсутствует или не связан с google

Такой бот будет определён как фейковый.


Что происходит с фейковым ботом

Если бот не прошёл проверку, KillBot не отдаёт ему реальный сайт и показывает специальную страницу Fake Bot.

Эта страница:

  • блокирует доступ к контенту
  • не даёт собрать данные сайта
  • визуально выглядит как отказ в доступе

IP и User-Agent на странице Fake Bot

KillBot специально выводит в заголовке страницы и внутри неё:

IP-адрес клиента и User-Agent

Пример:

Fake Bot [1.2.3.4] [Googlebot/2.1 ...]

Это сделано для того, чтобы можно было быстро понять:

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

Если вы уверены, что это реальный бот, достаточно добавить его IP в разрешённые.


Почему это надежно

User-Agent подделать легко.
DNS-проверку подделать практически невозможно.

Поэтому KillBot использует именно связку:

  • User-Agent
  • обратный DNS
  • прямой DNS

Это позволяет точно отличать реальных ботов от подделок.


Коротко

Если у бота User-Agent настоящий, но DNS не подтверждает его — это фейковый бот.

KillBot блокирует его и показывает страницу Fake Bot с IP и User-Agent для быстрого анализа.