Ключевое отличие от GPTBot и OAI-SearchBot: это не автоматический краулер, который планово обходит сайты, а реактивный агент — он появляется в логах непредсказуемо, всплесками, коррелирующими с объёмом пользовательских запросов, а не с расписанием индексации. OpenAI отдельно подчёркивает: ChatGPT-User не используется ни для обучения моделей, ни для формирования поискового индекса ChatGPT Search.
1. Что такое ChatGPT-User
| Параметр | Значение |
|---|---|
| User-Agent (токен) | ChatGPT-User |
| Полная строка UA | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot |
| Оператор | OpenAI |
| Назначение | Разовая выдача страницы по прямому запросу пользователя ChatGPT / Custom GPT / GPT Actions |
| Официальная документация | openai.com/bot |
| Список IP-адресов | openai.com/chatgpt-user.json |
| Используется для обучения моделей | Нет |
| Влияет на попадание в ChatGPT Search | Нет — за это отвечает OAI-SearchBot |
| Автоматическое сканирование | Нет — только по прямому запросу пользователя |
2. О версии в UA-строке (важное уточнение)
В логах можно встретить не только ChatGPT-User/1.0, но и более новые версии — ChatGPT-User/2.0, а в отдельных наблюдениях сообщества и /3.0. Важно понимать: это не отдельные, самостоятельно задокументированные боты, а версии одного и того же агента ChatGPT-User. Официальная документация OpenAI называет единый токен ChatGPT-User без разбивки по версиям в robots.txt — то есть правило User-agent: ChatGPT-User должно применяться к запросам независимо от номера версии в строке UA.
| Утверждение | Статус |
|---|---|
| ChatGPT-User — реактивный (user-triggered) агент, не автоматический краулер | ✅ Достоверно, подтверждено OpenAI |
| Номер версии в UA (1.0 / 2.0 / 3.0) означает изменения в самом продукте ChatGPT со временем | ✅ Достоверно наблюдается в логах |
| Версии 2.0 / 3.0 требуют отдельного правила в robots.txt, отличного от базового ChatGPT-User | ⚠️ Нет официального подтверждения; практика показывает, что правило по токену ChatGPT-User распространяется на все версии |
| robots.txt в принципе применяется к ChatGPT-User так же строго, как к автоматическим краулерам | ⚠️ OpenAI отдельно отмечает, что реакция на прямой пользовательский запрос — не то же самое, что автоматическое сканирование, и трактовка правил может отличаться |
Практическая рекомендация: настраивайте правила в robots.txt на базовый токен
ChatGPT-Userбез указания версии — это соответствует официальной документации OpenAI. Отдельная строка видаUser-agent: ChatGPT-User/2.0не описана в первоисточнике и, по имеющимся данным, не требуется.
3. Как работает ChatGPT-User
- Срабатывает только когда пользователь в ChatGPT задаёт вопрос, требующий свежих данных с конкретной страницы, или использует Custom GPT / GPT Actions, обращающийся к внешнему API/сайту;
- Не является плановым краулером — не «обходит» сайт целиком, а запрашивает конкретные URL, релевантные текущему диалогу;
- Появляется в логах непредсказуемыми всплесками, синхронизированными с объёмом пользовательских запросов, а не с расписанием индексации;
- OpenAI отдельно указывает: из-за реактивной природы этого агента трактовка robots.txt может отличаться от строгого применения к автоматическим краулерам — это ближе к «браузеру по запросу человека», чем к боту-паучку.
4. Нагрузка на сервер
По данным мониторинга bot-трафика pbnshield (ClickHouse, 696 доменов, 161 уникальный бот, март–июнь 2026) реактивные пользовательские агенты вроде ChatGPT-User дают принципиально другой профиль нагрузки по сравнению с плановыми краулерами — трафик распределён неравномерно и зависит от того, насколько часто пользователи ChatGPT интересуются конкретным сайтом или доменной тематикой, а не от объёма страниц на сайте. Резких скачков, характерных для агрессивных SEO-парсеров, для этого агента не характерно.
5. Обнаружение в логах
Поиск по User-Agent
# Все запросы от ChatGPT-User (любая версия)
grep "ChatGPT-User" /var/log/nginx/access.log
# Разбивка по версии агента
grep -oE "ChatGPT-User/[0-9.]+" /var/log/nginx/access.log | sort | uniq -c
# Уникальные IP-адреса
grep "ChatGPT-User" /var/log/nginx/access.log | awk '{print $1}' | sort -u
# Какие страницы запрашивались чаще всего (что именно спрашивали пользователи ChatGPT)
grep "ChatGPT-User" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
Верификация IP через официальный список
#!/bin/bash
# Верификация IP ChatGPT-User через официальный JSON-список OpenAI
LOG_FILE="/var/log/nginx/access.log"
IP_LIST_URL="https://openai.com/chatgpt-user.json"
curl -s "$IP_LIST_URL" -o /tmp/chatgptuser_ranges.json
echo "IP-адрес | Принадлежит официальному диапазону ChatGPT-User"
echo "------------------------------------------------------------"
IPS=$(grep "ChatGPT-User" "$LOG_FILE" | awk '{print $1}' | sort -u)
for ip in $IPS; do
match=$(python3 -c "
import json, ipaddress, sys
try:
data = json.load(open('/tmp/chatgptuser_ranges.json'))
prefixes = data.get('prefixes', [])
ip = ipaddress.ip_address('$ip')
for p in prefixes:
net = p.get('ipv4Prefix') or p.get('ipv6Prefix')
if net and ip in ipaddress.ip_network(net):
print('да')
sys.exit()
print('нет')
except Exception as e:
print('ошибка проверки')
")
echo "$ip | $match"
done
6. robots.txt
# Разрешить обработку прямых пользовательских запросов ChatGPT
User-agent: ChatGPT-User
Allow: /
# Полная блокировка — ChatGPT не сможет получить страницу по запросу пользователя
User-agent: ChatGPT-User
Disallow: /
# Точечное ограничение — закрыть личный кабинет и оформление заказа
User-agent: ChatGPT-User
Disallow: /account/
Disallow: /checkout/
Allow: /
Правило применяется к токену ChatGPT-User целиком, без необходимости отдельно прописывать версии вида ChatGPT-User/2.0.
7. Управление на уровне сервера
Nginx
if ($http_user_agent ~* "ChatGPT-User") {
return 403;
}
# Более мягкий вариант — ограничение частоты вместо полной блокировки
limit_req_zone $binary_remote_addr zone=chatgptuser:10m rate=20r/m;
location / {
if ($http_user_agent ~* "ChatGPT-User") {
limit_req zone=chatgptuser burst=40 nodelay;
}
}
Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ChatGPT-User [NC]
RewriteRule ^ - [F,L]
8. Рекомендации по оптимизации
- Блокировка ChatGPT-User напрямую мешает пользователям ChatGPT получать актуальную информацию с вашего сайта в моменте — это отдельная функциональная потеря, не связанная с индексацией или обучением;
- Не пытайтесь блокировать отдельно версии 2.0/3.0 — используйте базовое правило по токену
ChatGPT-User, оно должно покрывать все версии согласно документации OpenAI; - Учитывайте нестрогую трактовку robots.txt для этого агента — раз запрос инициирован человеком, а не автоматическим сканированием, поведение может отличаться от строгих краулеров;
- Держите контент, важный для прямых ответов, доступным без JS-рендеринга — реактивные запросы часто требуют быстрого получения конкретной информации;
- Мониторьте всплески, а не средний трафик — характер нагрузки неравномерный и зависит от популярности темы у пользователей ChatGPT.
9. Сравнение с похожими ботами
| Агент | Оператор | Триггер | Используется для обучения |
|---|---|---|---|
| ChatGPT-User | OpenAI | Прямой запрос пользователя / GPT Actions | Нет |
| GPTBot | OpenAI | Плановое сканирование | Да |
| OAI-SearchBot | OpenAI | Плановая индексация для поиска | Нет |
| Perplexity-User | Perplexity | Прямой запрос пользователя | Нет |
| Claude-User | Anthropic | Прямой запрос пользователя | Нет |
10. Сводная таблица стратегии
| Цель сайта | Рекомендация |
|---|---|
| Хочу, чтобы ChatGPT мог получать актуальные данные по запросу пользователя | Allow для ChatGPT-User (единое правило для всех версий) |
| Не хочу, чтобы ChatGPT обращался к сайту даже по прямому запросу пользователя | Disallow для ChatGPT-User |
| Хочу закрыть только личный кабинет / чувствительные разделы | Точечный Disallow по путям в правиле User-agent: ChatGPT-User |
| Вижу версии 2.0/3.0 в логах и не понимаю, нужно ли отдельное правило | Нет, базового правила по токену ChatGPT-User достаточно |