sadrix logoSadriX
Минцифры готовит обязательную регистрацию IMEI смартфонов, купленных за границей
Сравнения

GPTBot в логах: как отличить настоящего краулера OpenAI от подделки

011 301 просмотров2 мин
0
Поделиться:TelegramVK

Проблема: user agent ничего не доказывает

Когда речь заходит об AI-краулерах, почти все материалы ограничиваются тем, что прописать в robots.txt. Гораздо реже проверяют, приходят ли эти краулеры вообще и совпадает ли трафик, представляющийся GPTBot, с реальной инфраструктурой OpenAI.

Ключевая мысль: строка user agent сама по себе не является доказательством. Любой скрипт может отправить произвольный UA. Проверка строится из двух шагов — найти в логах токены ботов и сверить IP каждого запроса с диапазонами, которые публикует вендор.

Шаг 1. Считаем, кто называет себя ботом

Важная деталь: имя вендора спрятано внутри длинной строки user agent. В документации OpenAI, например, OAI-SearchBot обёрнут в полную строку Chrome — точное совпадение по полю ничего не найдёт. Искать нужно по токену, а не по всей строке.

Автор приводит пример с grep по токенам вида GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, Claude-SearchBot, PerplexityBot, Perplexity-User с последующей сортировкой и подсчётом. На демонстрационном логе это дало 6 GPTBot, 3 OAI-SearchBot, 3 ClaudeBot, 2 ChatGPT-User и 1 PerplexityBot.

Но это пока лишь заявки, а не факты: подсчёт показывает, кто *представляется* ботом, а не кто им является.

Кто что публикует

OpenAI, Anthropic и Perplexity разделяют краулинг на отдельные агенты и публикуют списки IP в формате JSON:

  • OpenAI: GPTBot (обучение), OAI-SearchBot (поиск в ChatGPT), ChatGPT-User (пользователь спросил о странице). Списки — на openai.com (gptbot.json, searchbot.json, chatgpt-user.json).

  • Anthropic: ClaudeBot, Claude-User, Claude-SearchBot — всё покрыто одним списком на claude.com.

  • Perplexity: PerplexityBot и Perplexity-User с отдельными JSON-файлами.

Списки устаревают с разной скоростью. По данным автора, файл ChatGPT-User содержал 234 префикса с датой 7 октября 2026 года, а два файла Perplexity датировались февралём и октябрём 2025 года. Вывод: обновлять их нужно по расписанию, а не один раз копировать диапазоны в фаервол.

Отдельно OpenAI отмечает, что её боты могут добавлять маркер robots.txt в user agent при запросе этого файла — это помогает, если в логах не сохраняются пути.

Шаг 2. Проверяем IP

Все пять файлов используют одну схему, поэтому один скрипт на стандартной библиотеке Python покрывает всех вендоров. Логика простая: собрать сети из поля с префиксами (ipv4Prefix или ipv6Prefix), распарсить строку лога, вытащить IP и user agent, а затем проверить принадлежность адреса нужной сети.

На демонстрационном логе из 15 запросов все строки ChatGPT-User, OAI-SearchBot и PerplexityBot подтвердились, 4 из 6 GPTBot и 2 из 3 ClaudeBot — тоже. А 3 запроса пришли с адресов из документационных диапазонов, которыми не владеет ни один вендор, — это подделки.

Техническая тонкость: проверять принадлежность нужно через ip in network, а не арифметикой по адресам. У Anthropic в списке много одиночных записей /32, и арифметика на таких ломается.

Чего в логах не увидеть

Google-Extended не появляется ни в одном логе. По документации Google у него нет отдельного user agent: краулинг идёт под существующими агентами Google, а токен — это лишь переключатель в robots.txt, разрешающий или запрещающий использование контента для обучения Gemini. Его можно задать, но измерить нельзя.

Что это значит на практике

Проверка логов даёт то, чего не даёт настройка robots.txt: понимание, кто реально приходит на сайт и не маскируется ли под известного бота кто-то другой. Подход не требует сторонних сервисов — достаточно доступа к логам, официальных JSON-списков вендоров и небольшого скрипта.

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

Комментарии

Комментарии доступны только зарегистрированным пользователям. Войти

  • Пока нет комментариев. Будьте первым.