Важно сразу разграничить: GPTBot отвечает исключительно за обучение моделей. Он не влияет на то, появится ли сайт в результатах поиска ChatGPT (за это отвечает OAI-SearchBot) и не обрабатывает запросы, инициированные пользователем в моменте (это делает ChatGPT-User). Блокировка GPTBot не блокирует остальных ботов OpenAI — каждый настраивается независимо.
1. Что такое GPTBot
| Параметр | Значение |
|---|---|
| User-Agent (токен) | GPTBot |
| Полная строка UA | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.1; +https://openai.com/gptbot |
| Оператор | OpenAI |
| Назначение | Сбор данных для обучения генеративных ИИ-моделей (foundation models) |
| Официальная документация | openai.com/gptbot |
| Список IP-адресов | openai.com/gptbot.json |
| Соблюдение robots.txt | Да, официально подтверждено |
| Влияет на ChatGPT Search | Нет — за это отвечает OAI-SearchBot |
| Первое появление | Август 2023 |
Блокировка GPTBot в robots.txt означает, что содержимое сайта не должно использоваться для обучения будущих моделей OpenAI. Важная оговорка от самого OpenAI: это ограничение действует только на будущее сканирование — контент, уже собранный до блокировки, из обученных моделей не удаляется.
2. Как работает GPTBot
- Обходит публично доступные страницы сайта по ссылкам, аналогично классическим поисковым краулерам;
- Не заходит за пейволлы, не собирает страницы, запрашивающие персональные данные, и фильтрует контент, нарушающий политики OpenAI;
- Работает по нерегулярному расписанию — интервалы между визитами могут составлять недели или месяцы в зависимости от значимости и обновляемости сайта;
- Приоритизирует полноту охвата, а не свежесть данных — в отличие от OAI-SearchBot, которому важна актуальность индекса.
3. Нагрузка на сервер
По данным мониторинга bot-трафика pbnshield (ClickHouse, 696 доменов, 161 уникальный бот, март–июнь 2026) AI-краулеры как категория — включая GPTBot — формируют заметную долю нефункционального трафика на сайтах со значительным объёмом контента, хотя отдельные представители категории (например, Meta ExternalAgent, Bytespider) генерируют кратно больше запросов, чем GPTBot. Краулер OpenAI не славится агрессивным поведением: за счёт длинных интервалов между визитами он редко становится источником заметной нагрузки на конкретный сайт в моменте, но при большом количестве страниц полный обход может занимать продолжительное время.
4. Обнаружение в логах
Поиск по User-Agent
# Все запросы от GPTBot
grep "GPTBot" /var/log/nginx/access.log
# Количество запросов за сегодня
grep "GPTBot" /var/log/nginx/access.log | grep "$(date '+%d/%b/%Y')" | wc -l
# Уникальные IP-адреса
grep "GPTBot" /var/log/nginx/access.log | awk '{print $1}' | sort -u
# Топ сканируемых разделов
grep "GPTBot" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head -20
Верификация IP через официальный список
#!/bin/bash
# Верификация IP GPTBot через официальный JSON-список OpenAI
LOG_FILE="/var/log/nginx/access.log"
IP_LIST_URL="https://openai.com/gptbot.json"
curl -s "$IP_LIST_URL" -o /tmp/gptbot_ranges.json
echo "IP-адрес | Принадлежит официальному диапазону GPTBot"
echo "----------------------------------------------------"
IPS=$(grep "GPTBot" "$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/gptbot_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
# Дополнительная проверка через reverse DNS (вспомогательный метод)
IP="1.2.3.4"
dig +short -x "$IP"
5. robots.txt
# Полная блокировка обучающего краулера
User-agent: GPTBot
Disallow: /
# Блокировка только части сайта (например, платного контента)
User-agent: GPTBot
Disallow: /premium/
Disallow: /members/
Allow: /
# Полный разрешающий доступ
User-agent: GPTBot
Allow: /
Напоминание: правило для GPTBot не распространяется автоматически на OAI-SearchBot, OAI-AdsBot и ChatGPT-User. Если цель — не попасть в обучающие данные, но остаться видимым в поиске ChatGPT, GPTBot нужно блокировать отдельно от остальных агентов.
6. Управление на уровне сервера
Nginx
if ($http_user_agent ~* "GPTBot") {
return 403;
}
# Мягкий вариант — ограничение частоты вместо полной блокировки
limit_req_zone $binary_remote_addr zone=gptbot:10m rate=10r/m;
location / {
if ($http_user_agent ~* "GPTBot") {
limit_req zone=gptbot burst=20 nodelay;
}
}
Apache (.htaccess)
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} GPTBot [NC]
RewriteRule ^ - [F,L]
7. Рекомендации по оптимизации
- Решение по GPTBot — это решение про обучение моделей, а не про видимость в ChatGPT: не путайте эти цели при настройке доступа;
- Проверяйте IP через официальный JSON-список, а не полагайтесь только на строку User-Agent — она может быть подделана сторонними скраперами;
- Проверьте WAF и CDN отдельно от robots.txt — частая причина «невидимого» блока GPTBot: правила безопасности Cloudflare/Akamai перехватывают трафик раньше, чем он доходит до robots.txt;
- Учитывайте необратимость обучения — блокировка не удаляет контент из уже обученных моделей, только предотвращает использование в будущем;
- Документируйте решение — политика по GPTBot часто пересматривается на уровне юридического/маркетингового отдела, отдельно от технической конфигурации.
8. Сравнение с похожими ботами
| Бот | Оператор | Назначение | Список IP |
|---|---|---|---|
| GPTBot | OpenAI | Обучение моделей | ✅ Есть |
| OAI-SearchBot | OpenAI | Поиск ChatGPT | ✅ Есть |
| ChatGPT-User | OpenAI | Пользовательские запросы в моменте | ✅ Есть |
| ClaudeBot | Anthropic | Обучение моделей | ✅ Есть |
| Google-Extended | Обучение моделей (Gemini) | ✅ Есть (диапазоны Googlebot) | |
| CCBot | Common Crawl | Открытый датасет для обучения (используется многими компаниями) | ✅ Есть |
| Bytespider | ByteDance | Обучение моделей | ❌ Официально не публикуется |
9. Сводная таблица стратегии
| Цель сайта | Рекомендация |
|---|---|
| Не хочу, чтобы контент использовался для обучения моделей OpenAI | Disallow для GPTBot; при этом OAI-SearchBot и ChatGPT-User можно оставить открытыми |
| Хочу максимальную видимость в экосистеме OpenAI | Allow для всех агентов: GPTBot, OAI-SearchBot, ChatGPT-User |
| Хочу закрыть только платный контент от обучения | Точечный Disallow по разделам в правиле для GPTBot |
| Подозреваю подделку User-Agent | Сверка IP с gptbot.json перед принятием решения о доверии запросу |