Строка openai в логах — не имя одного конкретного бота, а, скорее всего, результат слишком широкого поиска: у OpenAI нет краулера, который официально называл бы себя просто «OpenAI». Компания задокументировала три отдельных агента с разными именами и разными задачами, и все три содержат в полной строке UA ссылку вида +https://openai.com/... — именно на эту подстроку и срабатывает поиск по токену openai. Разбираемся, что реально стоит за находкой и почему объединять всех троих в один бот — ошибка, от которой прямо предостерегает сама компания.
Что такое «OpenAI» на самом деле — три разных агента
OpenAI официально документирует три независимых краулера, каждый со своей ролью и собственной строкой UA:
| Агент | Назначение | Полная строка UA |
| GPTBot | Сбор публичного контента для обучения будущих моделей GPT | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.1; +https://openai.com/gptbot |
| OAI-SearchBot | Индексация для функции ChatGPT Search — показов сайта в поисковых ответах | содержит токен OAI-SearchBot и ссылку на openai.com |
| ChatGPT-User | Разовая подгрузка конкретной страницы, когда пользователь ChatGPT или кастомного GPT прямо просит открыть ссылку | содержит токен ChatGPT-User и ссылку на openai.com |
Ключевое отличие от черновика: единой «пометки TrafficVeil» для всех троих быть не может — правила allow/deny у них принципиально разные, и это явно закреплено в официальной документации OpenAI.
Почему нельзя решать за всех троих сразу
Блокировка GPTBot исключает будущий публичный контент сайта из обучающих датасетов, но не влияет ни на показ сайта в ChatGPT Search, ни на способность ChatGPT открыть конкретную страницу по прямой просьбе пользователя — за это отвечают OAI-SearchBot и ChatGPT-User соответственно. OpenAI прямо документирует независимые комбинации правил: можно разрешить показ в поиске, но запретить обучение, или разрешить точечную подгрузку по запросу пользователя, но заблокировать и обучение, и поисковую индексацию. Одна общая директива User-agent: openai ничего из этого не различает и не сработает как задумано, поскольку такого токена в реальных UA-строках нет.
Как найти всех троих агентов в логах
# Правильный поиск — по каждому агенту отдельно
grep -Ei "gptbot|oai-searchbot|chatgpt-user" /var/log/nginx/access.log
# Топ URL по каждому
grep -i "gptbot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
grep -i "oai-searchbot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
grep -i "chatgpt-user" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
OpenAI официально публикует JSON-списки IP-адресов для верификации каждого из трёх агентов — это редкость среди ботов в этой энциклопедии и надёжнее любой проверки по одной строке UA:
IP="1.2.3.4"
whois -h whois.cymru.com " -v $IP"
robots.txt для каждого агента отдельно
# Разрешить показ в ChatGPT Search и точечные запросы пользователей,
# но запретить использование контента для обучения моделей
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ChatGPT-User
Allow: /
# Полностью исключить участие во всех трёх сценариях
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
Настройка через TrafficVeil
TrafficVeil: заведите в системе три отдельные политики — по одной на GPTBot, OAI-SearchBot и ChatGPT-User — вместо одной общей записи «openai». Для ChatGPT-User учитывайте, что это разовый пользовательский запрос: заметной систематической нагрузки он не создаёт, а блокировка лишает сайт шанса быть открытым напрямую по ссылке в ответе ChatGPT.
Что в итоге делать
| Цель | Настройка |
| Не участвовать в обучении, но быть видимым в ChatGPT Search и по прямым ссылкам | GPTBot: Disallow; OAI-SearchBot: Allow; ChatGPT-User: Allow |
| Полностью исключить участие во всех сценариях OpenAI | Disallow для всех трёх агентов по отдельности |
| Разрешить всё без ограничений | Allow для всех трёх — стандартный вариант, если видимость в AI-поиске важна |
| Подозрение на спуфинг UA | Сверять IP с официальными JSON-списками OpenAI, а не доверять строке UA |