ИИ-краулеры: замер визитов GPTBot и ClaudeBot и блокировка через robots.txt и nginx

ИИ-краулер — это бот, которым компании, занимающиеся ИИ, собирают веб-страницы для обучения моделей, ИИ-поиска и ответов на вопросы пользователей. Чтобы узнать, как часто эти боты заходят на сервер с конфигурацией Nginx + Apache, UA из журнала доступа исходного сервера за 14 дней были сопоставлены с диапазонами IP, которые публикует каждая компания: запросов из официальных диапазонов оказалось 18 605, а настройки блокировки и разрешения в robots.txt и nginx собраны по официальной документации.
Период — с 4 по 17 октября 2026 года; запросы, на которые ответил фронтовой кэш и которые не дошли до исходного сервера, а также запросы без записанного реального IP в цифры не вошли.
1️⃣ Как распознать ИИ-краулеров: UA в журнале доступа и опубликованные диапазоны IP
Не все запросы, записанные в журнале как GPTBot, пришли от OpenAI. UA — это текст, который запрашивающая сторона пишет и отправляет сама, поэтому кто угодно может слать запросы под именем GPTBot или ClaudeBot.
Поэтому сначала по UA считается число запросов для каждого имени бота, а затем идёт сверка с диапазонами IP, опубликованными каждой компанией. Ниже — подсчёт имён ИИ-ботов в журнале за один день.
grep -oiE '(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|Bytespider|CCBot|Amazonbot|meta-externalagent)/' access.log-20261018 | sort | uniq -c | sort -rn 2968 GPTBot/
2084 ClaudeBot/
622 meta-externalagent/
535 Amazonbot/
167 PerplexityBot/
99 OAI-SearchBot/
30 ChatGPT-User/
21 Claude-User/
17 Claude-SearchBot/
12 Meta-ExternalAgent/
10 Perplexity-User/
7 CCBot/Если считать с [/] после имени, текст, который не является именем, например контактный адрес claudebot@ в UA Claude-SearchBot, не попадает в подсчёт, а имена, записанные в другом регистре, считаются отдельно. Далее по первому столбцу проверяется, с каких IP пришли запросы GPTBot.
grep 'GPTBot/' access.log-20261018 | awk '{print $1}' | sort | uniq -c | sort -rn | head -5 2524 74.7.x.x
428 185.152.x.x
12 34.53.x.x
1 74.7.x.x
1 172.182.x.xУ запросов, прошедших через CDN или прокси, в первом столбце записан адрес промежуточного сервера, поэтому такие строки сверяются по адресу в столбце X-Forwarded-For в конце строки журнала. OpenAI публикует диапазоны IP GPTBot в виде файла JSON.
curl -s https://openai.com/gptbot.json -o gptbot.jsonЕсть ли IP в скачанном файле диапазонов, можно проверить стандартным модулем Python ipaddress.
# inrange.py — проверка, есть ли IP в файле диапазонов JSON
import json, sys, ipaddress
nets = [ipaddress.ip_network(p.get('ipv4Prefix') or p.get('ipv6Prefix')) for p in json.load(open(sys.argv[1]))['prefixes']]
for a in sys.argv[2:]:
ip = ipaddress.ip_address(a)
print(a, 'IN' if any(ip in n for n in nets) else 'OUT')После имени файла диапазонов укажите проверяемые IP.
python3 inrange.py gptbot.json 74.7.x.x 34.53.x.x74.7.x.x IN
34.53.x.x OUTIP, отправивший 2524 запроса, оказался внутри опубликованных диапазонов, а IP, отправивший 12, — вне их. Anthropic, Perplexity, Apple, Common Crawl, Google и Bing тоже публикуют файлы диапазонов в том же формате, а для Amazonbot проверялось, заканчивается ли обратная DNS-запись на crawl.amazonbot.amazon. Это как паспортный контроль в аэропорту, где сверяют паспорт, а не имя на посадочном талоне.
Сверка за 14 дней показала, что 70 IP поочерёдно использовали 23 имени ботов, включая GPTBot, ClaudeBot и Googlebot, и отправили 48 041 запрос, из которых 57% шли на адреса для поиска уязвимостей вроде .php или .env. Все 809 запросов с именем Google-Extended тоже пришли от этой группы; согласно документации Google, Google-Extended — токен только для robots.txt, у которого нет UA для HTTP-запросов.
2️⃣ Визиты по UA: замер за 14 дней и недельная динамика
В таблице ниже — число запросов за 14 дней, с 4 по 17 октября. Для ботов с опубликованными диапазонами учитывались только запросы изнутри диапазонов, а боты без сверки диапазонов посчитаны по UA за вычетом группы самозванцев.
| Бот | Компания | Запросы за 14 дней | Способ проверки | Группа самозванцев |
|---|---|---|---|---|
| ClaudeBot | Anthropic | 10,305 | Опубликованные диапазоны IP | 2,387 |
| PerplexityBot | Perplexity | 3,406 | Опубликованные диапазоны IP | 2,262 |
| GPTBot | OpenAI | 2,546 | Опубликованные диапазоны IP | 2,328 |
| OAI-SearchBot | OpenAI | 1,399 | Опубликованные диапазоны IP | 2,347 |
| ChatGPT-User | OpenAI | 334 | Опубликованные диапазоны IP | 2,409 |
| Applebot | Apple | 330 | Опубликованные диапазоны IP | 2,372 |
| CCBot | Common Crawl | 275 | Опубликованные диапазоны IP | 2,275 |
| Claude-User | Anthropic | 10 | Опубликованные диапазоны IP | 2,192 |
| Claude-SearchBot | Anthropic | 0 | Опубликованные диапазоны IP | 2,297 |
| Perplexity-User | Perplexity | 0 | Опубликованные диапазоны IP | 2,235 |
| Meta-ExternalAgent | Meta | 14,384 | UA | 2,339 |
| Bytespider | ByteDance | 6,569 | UA | 2,336 |
| Amazonbot | Amazon | 3,493 | UA · обратный DNS | 2,379 |
| Googlebot (для сравнения) | 10,545 | Опубликованные диапазоны IP | 3,951 | |
| bingbot (для сравнения) | Microsoft | 13,477 | Опубликованные диапазоны IP | 1,551 |
Среди ИИ-краулеров, подтверждённых по опубликованным диапазонам, больше всего у ClaudeBot — 10 305 запросов, за ним идут PerplexityBot с 3406 и GPTBot с 2546. У Claude-SearchBot и Perplexity-User запросов из опубликованных диапазонов было 0, и все запросы с этими именами пришли от группы самозванцев.
Даже после отсева самозванцев остаётся проблема ботов без сверки диапазонов. У Meta-ExternalAgent по UA больше всего — 14 384 запроса, но в проверенной документации по краулерам Meta нет списка диапазонов IP, поэтому он посчитан только по UA.
По неделям GPTBot колебался от 12 до 3383 запросов, а ClaudeBot все пять недель держался в пределах 6930–10 217.
3️⃣ Какие адреса забирают: типы URL и коды ответа
ИИ-краулеры забирают не только текст записей. За 14 дней 21% запросов Meta-ExternalAgent пришлись на изображения, GPTBot из опубликованных диапазонов запросил RSS-ленту 476 раз, а ClaudeBot — карту сайта 314 раз.
Собираются и адреса языковых версий: по опубликованным диапазонам 1111 запросов ClaudeBot и 436 запросов GPTBot пришлись на записи других языковых версий. Коды ответа можно сразу посчитать по журналу за один день.
grep 'ClaudeBot/' access.log-20261018 | awk '{print $9}' | sort | uniq -c | sort -rn | head -4 1357 200
665 301
31 304
21 404Даже за один день 301 составляют почти треть, а за 14 дней 5915 (57%) из 10 305 запросов ClaudeBot из опубликованных диапазонов получили 301. Из них 4736 были запросами без [/] в конце адреса, поэтому WordPress отвечал 301 на адрес с добавленным [/], и та же запись запрашивалась ещё раз.
4️⃣ Настройка robots.txt: токены для обучения и для поиска
robots.txt подходит для ботов обучения и поиска, которые собирают данные автоматически, но не для ботов, забирающих страницу, когда пользователь задаёт вопрос. В документации OpenAI и Perplexity сказано, что правила robots.txt могут не применяться к запросам ChatGPT-User и Perplexity-User.
Каждая компания делит токены по назначению, и, согласно документации OpenAI, блокировка одного токена не влияет на настройки других. Ниже — токены, проверенные по официальной документации каждой компании.
| Токен robots.txt | Компания | Назначение | Если заблокировать (официальная документация) |
|---|---|---|---|
| GPTBot | OpenAI | Сбор для обучения моделей | Сигнал не использовать для обучения |
| OAI-SearchBot | OpenAI | Поиск ChatGPT | Исключается из ответов поиска ChatGPT (может появляться как навигационная ссылка) |
| ChatGPT-User | OpenAI | Запрос пользователя | Правила robots.txt могут не применяться |
| ClaudeBot | Anthropic | Сбор для обучения моделей | Последующие материалы исключаются из обучающих данных |
| Claude-SearchBot | Anthropic | Улучшение качества поиска | Видимость в результатах поиска может снизиться |
| Claude-User | Anthropic | Запрос пользователя | Не забирает страницы для вопросов пользователей |
| PerplexityBot | Perplexity | Поиск (не обучение) | Исключается из результатов поиска |
| Perplexity-User | Perplexity | Запрос пользователя | Обычно не следует robots.txt |
| Google-Extended | Обучение · grounding Gemini | Не влияет на видимость и позиции в Google Поиске | |
| Applebot-Extended | Apple | Обучение базовых моделей | Не влияет на видимость в поиске Apple |
| meta-externalagent | Meta | Обучение моделей ИИ и др. | Блокировка через Disallow (пример в документации) |
Google-Extended и Applebot-Extended — не отдельные собирающие боты, а токены, которые используются только в robots.txt. Сбор выполняют обычные краулеры Google и Apple, а эти токены лишь решают, можно ли использовать собранное содержимое для обучения моделей ИИ.
robots.txt, который отказывает только в сборе для обучения, но сохраняет видимость в ИИ-поиске, выглядит так; в документации OpenAI, Perplexity и Meta сказано, что изменения могут вступать в силу до 24 часов.
# отказ в сборе для обучения
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
User-agent: meta-externalagent
Disallow: /
# поисковые ИИ-боты разрешены
User-agent: OAI-SearchBot
Allow: /
User-agent: Claude-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /В текущем robots.txt сервера Nginx + Apache нет строк, называющих ИИ-ботов.
curl -s https://example.com/robots.txt# для всех ботов поисковых систем
User-agent: *
# блокировка страниц администратора (безопасность)
Disallow: /wp-admin/
# разрешить ajax-запросы среди функций администратора (нужно для нормальной работы)
Allow: /wp-admin/admin-ajax.php
# добавлено: блокировка спамных результатов поиска (защита SEO)
Disallow: /search/
Disallow: /?s=
# путь к карте сайта (ускорение индексации)
Sitemap: https://example.com/sitemap_index.xmlПока строк для ИИ-ботов нет, 2546 запросов GPTBot из опубликованных диапазонов за 14 дней получили ответы без 403: 200 — 2090 раз и 301 — 432 раза. За тот же период запросов robots.txt в исходном журнале из опубликованных диапазонов было: Googlebot — 36, ClaudeBot — 8, OAI-SearchBot — 6, а GPTBot и PerplexityBot — 0. Запросы robots.txt, на которые ответил фронтовой кэш, тоже не попадают в исходный журнал.
5️⃣ Блокировка ИИ-краулеров в nginx и её пределы
Даже при блокировке в robots.txt запросы, которые не читают правила, доходят до сервера. В nginx [map] записывает в переменную 1, если в UA есть имя бота.
# внутри блока http — 1, если в UA есть имя бота для обучения
map $http_user_agent $ai_train_bot {
default 0;
~*GPTBot/ 1;
~*ClaudeBot/ 1;
~*Bytespider 1;
~*CCBot/ 1;
}В блоке server при значении переменной 1 возвращается 403.
# внутри блока server
location / {
if ($fake_searchbot) {
return 403;
}
if ($ai_train_bot) {
return 403;
}
# далее прежние настройки
}Блокировка по UA проверяет только имя, поэтому самозванцы с тем же именем блокируются вместе с настоящим ботом, а сменив имя, проходят. Запросы, взявшие имя разрешённого поискового бота, отсеиваются только сверкой с опубликованными диапазонами IP.
Чтобы разрешить OAI-SearchBot и отклонять только одноимённые запросы из-за пределов его диапазонов, превратите опубликованные диапазоны в переменную через [geo] и сверяйте её вместе с UA.
# внутри блока http — опубликованные диапазоны OAI-SearchBot (вставьте весь searchbot.json, ниже показаны две строки)
geo $oai_search_net {
default 0;
104.210.140.128/28 1;
135.234.64.0/24 1;
}
map $http_user_agent:$oai_search_net $fake_searchbot {
default 0;
~*OAI-SearchBot/.*:0$ 1;
}Если перед сервером стоит CDN или прокси, [geo] видит адрес промежуточного сервера, поэтому перед сверкой восстановите реальный IP через real_ip. В документации Anthropic сказано, что блокировка по IP-адресу мешает боту прочитать и robots.txt, поэтому сигнал отказа может не дойти как следует.
Настройка не применялась на рабочем сервере: проверен только её синтаксис на тестовом файле конфигурации.
nginx -t -p ./ -c nginx-test/nginx.confnginx: the configuration file ./nginx-test/nginx.conf syntax is ok
nginx: configuration file ./nginx-test/nginx.conf test is successfulПоскольку для примера настройки проверялся только синтаксис, ответы 403 не подтверждены; по журналу за 14 дней из 3937 запросов с именем OAI-SearchBot 2347 пришли от группы самозванцев вне опубликованных диапазонов.
6️⃣ Как получать плату от ИИ-краулеров: Pay per crawl и Web Bot Auth
Pay per crawl — функция Cloudflare AI Crawl Control, позволяющая владельцам сайтов задавать цену для каждой зоны и брать плату за каждый запрос ИИ-краулера. Согласно официальной документации, проверенной 18 октября 2026 года, функция находится в закрытой бете, а платежи обрабатывает Cloudflare как Merchant of Record.
Краулеры, сообщившие о готовности платить в заголовке запроса, получают ответ 200, а остальные — ответ [402 Payment Required] с ценой. Если тот же краулер заблокирован через WAF или Bot Management, правило блокировки имеет приоритет над взиманием платы.
Краулеры, которые хотят платить, должны подтвердить, кто они, через Web Bot Auth. В Web Bot Auth бот подписывает запросы ключом Ed25519 и размещает открытый ключ по адресу [/.well-known/http-message-signatures-directory], чтобы принимающая сторона могла проверить подпись.
Подпись передаётся в трёх заголовках — [Signature-Agent], [Signature-Input] и [Signature], и бот подтверждается криптографической подписью вместо диапазонов IP. Стандартный формат журнала доступа исходного сервера не записывает заголовки запросов, поэтому наличие подписей у запросов ИИ-краулеров за 14 дней не проверялось.
18 605 запросов ИИ-краулеров, подтверждённых по опубликованным диапазонам IP за 14 дней, составили 77% от 24 022 запросов Googlebot и bingbot из их опубликованных диапазонов за тот же период. Добавлять ли токены обучения в robots.txt, решают по цифрам без самозванцев, а если добавить сверку диапазонов в недельный подсчёт журнала, можно следить за динамикой.
🔢 FAQ & рекомендуемые материалы




ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.