Перейти к основному содержимому
🔌
Раздел 19

AI-краулеры и верификация ботов

Как отличить настоящего GPTBot от скрапера с поддельным User-Agent: HTTP Message Signatures и аналитика AI-краулеров

Короткий ответ

Верификация AI-агентов — это проверка криптографической подписи HTTP-запроса (HTTP Message Signatures), которую настоящие боты OpenAI, Anthropic, Perplexity и Google прикладывают к своим краулерам. Поддельный User-Agent без валидной подписи помечается как неверифицированный.

Зачем верифицировать AI-краулеров

User-Agent легко подделать: любой скрапер может назваться GPTBot и обойти ваши правила robots.txt. Настоящие AI-краулеры подписывают запросы по стандарту HTTP Message Signatures — публичный ключ лежит в /.well-known/http-message-signatures-directory. Проверка подписи позволяет точно отличить официального агента от имитатора и принимать разные решения: верифицированному боту — полный доступ, скраперу — ограничение или блок.

Что делает GEO Engine

  • Принимает события краулинга от сайта (CMS-агент или JS-сниппет) вместе с заголовками подписи
  • Проверяет подпись: keyid → directory провайдера → криптографическая верификация (Ed25519/RSA), срок действия и окно replay
  • Сохраняет результат верификации: verified / failed + причина (signature_mismatch, expired, unknown_key и т.д.)
  • Показывает в аналитике долю верифицированных хитов по каждому AI-агенту — отдельно от UA-only трафика
  • Публичный эндпоинт /bot-auth/verify позволяет агенту проверить свою подпись самостоятельно

Важное ограничение: UA-строка сама по себе не является доказательством — только валидная подпись. Трафик без заголовков подписи честно считается неверифицированным, даже если User-Agent выглядит как GPTBot.

Чем верифицированный AI-бот отличается от обычного краулера в статистике?

Верифицированный бот прошёл проверку HTTP Message Signature — это доказанный официальный агент провайдера. Обычный трафик с похожим User-Agent остаётся неверифицированным и может быть скрапером.

Нужно ли что-то настраивать на сайте для верификации?

Достаточно передавать заголовки запроса в событиях краулинга — CMS-агент и сниппеты делают это автоматически. Провайдер публикует свои ключи в well-known директории, мы проверяем их при верификации.