Официальные IP-сети краулеров OpenAI (GPTBot, SearchBot)
Официальные IP-сети краулеров OpenAI (GPTBot, SearchBot) — Официальные подсети компании OpenAI, из которых осуществляют запросы краулер сбора обучающих датасетов GPTBot, пользовательский агент взаимодействия в реальном времени ChatGPT-User и поисковый индексатор OAI-SearchBot. OpenAI публикует точный список IP в едином файле gptbot.json.
1. Общие сведения и профиль сетевой активности
Диапазоны адресов закреплены за автономной системой Microsoft Azure Hosted (OpenAI Dedicated Blocks). Запросы из этих сетей генерируются официальными роботами и сервисами индексации. При настройке фаерволов и WAF рекомендуется вносить эти адреса в белый список (Whitelist), чтобы избежать блокировки поисковой индексации и генерации сниппетов.
Важное правило безопасности:
Никогда не разрешайте доступ только по строке User-Agent. Спам-боты и скрипты кликфрода свободно подставляют User-Agent поисковых роботов. Надежная фильтрация требует сопоставления IP-клиента с приведенным ниже списком подсетей либо выполнения процедуры обратного DNS-запроса (rDNS).
2. Диапазоны IPv4 (CIDR)
Актуальный перечень подтвержденных IPv4-подсетей вендора для белого списка:
| Подсеть (CIDR) | Сетевая маска | Количество IP-адресов | Действие |
|---|---|---|---|
| 20.15.240.64/28 | 255.255.255.240 | 16 | |
| 20.15.240.80/28 | 255.255.255.240 | 16 | |
| 20.15.240.96/28 | 255.255.255.240 | 16 | |
| 20.15.240.112/28 | 255.255.255.240 | 16 | |
| 20.15.241.0/28 | 255.255.255.240 | 16 | |
| 20.15.241.16/28 | 255.255.255.240 | 16 | |
| 20.15.241.32/28 | 255.255.255.240 | 16 | |
| 20.15.241.48/28 | 255.255.255.240 | 16 | |
| 20.15.242.128/25 | 255.255.255.128 | 128 | |
| 20.15.243.0/24 | 255.255.255.0 | 256 | |
| 20.15.244.0/23 | 255.255.254.0 | 512 | |
| 23.98.142.176/28 | 255.255.255.240 | 16 | |
| 40.84.180.128/28 | 255.255.255.240 | 16 | |
| 172.203.149.192/27 | 255.255.255.224 | 32 | |
| 172.203.150.0/25 | 255.255.255.128 | 128 |
3. Диапазоны IPv6 (CIDR)
Для веб-серверов с активированным IPv6 добавьте следующие диапазоны:
| IPv6 подсеть (CIDR) | Длина префикса | Действие |
|---|---|---|
| 2603:1030:f000::/44 | 44 бит | |
| 2603:1040:f000::/44 | 44 бит |
4. Проверка подлинности (Reverse DNS / PTR)
Краулеры OpenAI не используют единую PTR-зону. Верификация производится сопоставлением IP-адреса источника с официальным опубликованным списком CIDR OpenAI и проверкой заголовка User-Agent. Если трафик с User-Agent GPTBot исходит с адреса, не входящего в данные подсети, запрос является фальшивкой и подлежит немедленной блокировке.
# 1. Получаем PTR запись проверяемого IP:
$ dig -x <IP-АДРЕС> +short
# 2. Проверяем прямую A-запись полученного хоста:
$ dig <ПОЛУЧЕННЫЙ_ХОСТ> +short
# Если возвращенный IP совпадает с исходным и хост оканчивается на Сверка по официальному JSON OpenAI — бот подлинный.
5. Конфигурации для веб-серверов
Используйте готовые директивы для добавления диапазонов в белый список вашего веб-сервера или WAF:
geo $is_openai {
default 0;
20.15.240.64/28 1;
20.15.240.80/28 1;
20.15.240.96/28 1;
20.15.240.112/28 1;
20.15.241.0/28 1;
20.15.241.16/28 1;
20.15.241.32/28 1;
20.15.241.48/28 1;
20.15.242.128/25 1;
20.15.243.0/24 1;
20.15.244.0/23 1;
23.98.142.176/28 1;
40.84.180.128/28 1;
172.203.149.192/27 1;
172.203.150.0/25 1;
2603:1030:f000::/44 1;
2603:1040:f000::/44 1;
}
Поместите блок geo в контекст http { ... } (например, в /etc/nginx/conf.d/search_bots.conf) и используйте переменную для снятия rate-limit ограничений.
<RequireAny>
Require ip 20.15.240.64/28
Require ip 20.15.240.80/28
Require ip 20.15.240.96/28
Require ip 20.15.240.112/28
Require ip 20.15.241.0/28
Require ip 20.15.241.16/28
Require ip 20.15.241.32/28
Require ip 20.15.241.48/28
Require ip 20.15.242.128/25
Require ip 20.15.243.0/24
Require ip 20.15.244.0/23
Require ip 23.98.142.176/28
Require ip 40.84.180.128/28
Require ip 172.203.149.192/27
Require ip 172.203.150.0/25
Require ip 2603:1030:f000::/44
Require ip 2603:1040:f000::/44
</RequireAny>
Директива <RequireAny> разрешает доступ клиентам, чей IP-адрес входит в любую из указанных подсетей.
(ip.src in {
20.15.240.64/28 20.15.240.80/28 20.15.240.96/28 20.15.240.112/28
20.15.241.0/28 20.15.241.16/28 20.15.241.32/28 20.15.241.48/28
20.15.242.128/25 20.15.243.0/24 20.15.244.0/23 23.98.142.176/28
40.84.180.128/28 172.203.149.192/27 172.203.150.0/25 2603:1030:f000::/44
2603:1040:f000::/44
})
Создайте Custom Rule в Cloudflare Dashboard: Security → WAF → Custom rules с действием: Skip / Allow (Пропуск без проверки).