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

Уведомление о партнёрских ссылках v3.1
Уведомление о партнёрских ссылках v3.2 (мобильная версия)
Тестовая среда Семейство RHELAlmaLinux 9.8Nginx 1.28 + Apache 2.4Проверено 2026-10-18

ИИ-краулер — это бот, которым компании, занимающиеся ИИ, собирают веб-страницы для обучения моделей, ИИ-поиска и ответов на вопросы пользователей. Чтобы узнать, как часто эти боты заходят на сервер с конфигурацией 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.x
74.7.x.x IN
34.53.x.x OUT

IP, отправивший 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 днейСпособ проверкиГруппа самозванцев
ClaudeBotAnthropic10,305Опубликованные диапазоны IP2,387
PerplexityBotPerplexity3,406Опубликованные диапазоны IP2,262
GPTBotOpenAI2,546Опубликованные диапазоны IP2,328
OAI-SearchBotOpenAI1,399Опубликованные диапазоны IP2,347
ChatGPT-UserOpenAI334Опубликованные диапазоны IP2,409
ApplebotApple330Опубликованные диапазоны IP2,372
CCBotCommon Crawl275Опубликованные диапазоны IP2,275
Claude-UserAnthropic10Опубликованные диапазоны IP2,192
Claude-SearchBotAnthropic0Опубликованные диапазоны IP2,297
Perplexity-UserPerplexity0Опубликованные диапазоны IP2,235
Meta-ExternalAgentMeta14,384UA2,339
BytespiderByteDance6,569UA2,336
AmazonbotAmazon3,493UA · обратный DNS2,379
Googlebot (для сравнения)Google10,545Опубликованные диапазоны IP3,951
bingbot (для сравнения)Microsoft13,477Опубликованные диапазоны IP1,551

Среди ИИ-краулеров, подтверждённых по опубликованным диапазонам, больше всего у ClaudeBot — 10 305 запросов, за ним идут PerplexityBot с 3406 и GPTBot с 2546. У Claude-SearchBot и Perplexity-User запросов из опубликованных диапазонов было 0, и все запросы с этими именами пришли от группы самозванцев.

Даже после отсева самозванцев остаётся проблема ботов без сверки диапазонов. У Meta-ExternalAgent по UA больше всего — 14 384 запроса, но в проверенной документации по краулерам Meta нет списка диапазонов IP, поэтому он посчитан только по UA.

📊Запросы ИИ-краулеров по неделямПо неделям · подсчёт по журналу
GPTBot
OpenAI · сбор для обучения моделей
08461,6922,5373,383
9/143,3837 дней
9/211907 дней
9/283567 дней
10/5127 дней
10/122,9596 дней (до 17.10)
ClaudeBot
Anthropic · сбор для обучения моделей
02,5545,1087,66310,217
9/146,9767 дней
9/2110,2177 дней
9/287,7097 дней
10/56,9307 дней
10/127,2896 дней (до 17.10)
PerplexityBot
Perplexity · поиск
05531,1061,6592,212
9/141,0847 дней
9/212,1527 дней
9/285337 дней
10/52,2127 дней
10/121,4836 дней (до 17.10)
Цифры — значения по UA из журнала доступа исходного сервера с недели 14 сентября по неделю 12 октября; из подсчёта исключены запросы с IP группы самозванцев, запросы на адреса для поиска уязвимостей и запросы с кодами ошибок вроде 403 или 429.

По неделям 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КомпанияНазначениеЕсли заблокировать (официальная документация)
GPTBotOpenAIСбор для обучения моделейСигнал не использовать для обучения
OAI-SearchBotOpenAIПоиск ChatGPTИсключается из ответов поиска ChatGPT (может появляться как навигационная ссылка)
ChatGPT-UserOpenAIЗапрос пользователяПравила robots.txt могут не применяться
ClaudeBotAnthropicСбор для обучения моделейПоследующие материалы исключаются из обучающих данных
Claude-SearchBotAnthropicУлучшение качества поискаВидимость в результатах поиска может снизиться
Claude-UserAnthropicЗапрос пользователяНе забирает страницы для вопросов пользователей
PerplexityBotPerplexityПоиск (не обучение)Исключается из результатов поиска
Perplexity-UserPerplexityЗапрос пользователяОбычно не следует robots.txt
Google-ExtendedGoogleОбучение · grounding GeminiНе влияет на видимость и позиции в Google Поиске
Applebot-ExtendedAppleОбучение базовых моделейНе влияет на видимость в поиске Apple
meta-externalagentMetaОбучение моделей ИИ и др.Блокировка через 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.

🧭 Путь запроса ИИ-краулера
Поясняющая схема
📌 Запрос
📥 Запрос
📜 robots.txt
Правила, которые автоматические краулеры читают первыми
GPTBot · ClaudeBotDisallow — сбор прекращается
OAI-SearchBot · PerplexityBotDisallow — исключение из поисковых ответов
ChatGPT-User · Perplexity-UserПравила могут не применяться
Запросы, взявшие только имя ботаНет гарантии, что правила соблюдаются
Запрос→
🖥️ nginx
UA map · сверка с опубликованными диапазонами IP
Имя есть в UA map403 по UA
Нет в UA mapПроходит, если внутри опубликованных диапазонов
Нет в UA mapПропускается
Имя разрешённого бота + вне диапазонов403 по сверке диапазонов
Ответ→
📤 Ответ
Код статуса
403Отказ в сборе для обучения
200Видимость в ИИ-поиске
200Ответы на вопросы пользователей
403Сменил имя — блокировка по UA пропускает
Краулеры для обучения следуют Disallow в robots.txt, а если добавить их имена в UA map nginx, запросы, не прочитавшие правила, тоже отклоняются с 403. За 14 дней запросов GPTBot из опубликованных диапазонов было 2546.
Краулеры для поиска настраиваются отдельно от токенов обучения; если их не блокировать, страницы могут появляться в ответах поиска ChatGPT и Perplexity (согласно официальной документации). В nginx пропускаются только запросы изнутри опубликованных диапазонов.
Боты пользовательских запросов забирают страницу, когда пользователь задаёт вопрос, и в документации OpenAI и Perplexity сказано, что правила robots.txt к ним могут не применяться. Чтобы их заблокировать, отклоняйте их по имени в nginx.
Самозванцы лишь берут имя бота, поэтому блокировка по UA отклоняет их только при совпадении имени, а если они используют имя разрешённого поискового бота, отсеять их можно только сверкой с опубликованными диапазонами. За 14 дней 70 IP поочерёдно использовали 23 имени ботов.

Чтобы разрешить 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.conf
nginx: 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 & рекомендуемые материалы

В документации Anthropic сказано, что поддерживается нестандартное расширение [Crawl-delay], которое записывается как [Crawl-delay: 1] под [User-agent: ClaudeBot]. В документации Apple указано, что Applebot не следует crawl-delay, но сам снижает скорость сбора, когда сайт замедляется или возвращает ошибки.

Согласно документации Apple, страницы с метатегом nosnippet не используются как дополнительный контекст, когда ИИ-модели в продуктах Apple формируют ответы, а в поисковых подсказках показывается только заголовок. Для файлов, куда нельзя добавить метатег, например PDF или изображений, то же указание передают заголовком ответа [X-Robots-Tag: applebot: nosnippet].

В документации Perplexity советуют создать правило, которое пропускает только запросы с PerplexityBot или Perplexity-User в UA и исходным IP внутри опубликованных диапазонов JSON, и применять его раньше других правил блокировки. Так как диапазоны время от времени меняются, рекомендуется регулярно скачивать их по адресу JSON и обновлять правило.

🤖 Рекомендуемые материалы об ИИ-краулерах 5 статей · 8 источников
🗂️ WEB
📋 Поиск без кликов 📄 Факторы ранжирования алгоритма Google 📄 SEO для JavaScript
📄 Мой IP 📄 Настройка CDN Cloudflare
📡 Краулеры OpenAI 📡 Краулеры Anthropic 📡 Краулеры Perplexity 📡 Общие краулеры Google 📡 Applebot 📡 Веб-краулеры Meta 📡 Pay per crawl 📡 Web Bot Auth
Ничего не найдено.
Официальная документация по краулерам OpenAI (внешняя ссылка)
Официальная документация · OpenAI
Overview of OpenAI Crawlers
Официальная документация о назначении GPTBot, OAI-SearchBot и ChatGPT-User, их токенах robots.txt и адресах JSON с опубликованными диапазонами IP.
Читать →Текущая статья
Официальная документация по краулерам Anthropic (внешняя ссылка)
Официальная документация · Anthropic
Does Anthropic crawl data from the web, and how can site owners block the crawler?
Официальная документация о назначении ClaudeBot, Claude-User и Claude-SearchBot, последствиях их блокировки и поддержке Crawl-delay.
Читать →Текущая статья
Официальная документация по краулерам Perplexity (внешняя ссылка)
Официальная документация · Perplexity
Perplexity Crawlers
Официальная документация о назначении PerplexityBot и Perplexity-User, их опубликованных диапазонах IP и настройке разрешений в файрволе.
Читать →Текущая статья
Официальная документация по общим краулерам Google (внешняя ссылка)
Официальная документация · Google
Google’s common crawlers
Официальная документация о том, почему токен Google-Extended используется только в robots.txt без UA в HTTP-запросах, и на что он влияет.
Читать →Текущая статья
Официальная документация Applebot (внешняя ссылка)
Официальная документация · Apple
About Applebot
Официальная документация о разнице между Applebot и Applebot-Extended, проверке обратного DNS и обработке nosnippet.
Читать →Текущая статья
Официальная документация по веб-краулерам Meta (внешняя ссылка)
Официальная документация · Meta
Веб-краулеры Meta
Официальная документация о назначении Meta-ExternalAgent, Meta-WebIndexer и Meta-ExternalFetcher и настройках robots.txt для них.
Читать →Текущая статья
Официальная документация Cloudflare Pay per crawl (внешняя ссылка)
Официальная документация · Cloudflare
What is Pay Per Crawl?
Официальная документация функции, которая отвечает на запросы ИИ-краулеров кодом 402 с заголовком цены и отвечает 200 только тем, кто готов платить.
Читать →Текущая статья
Официальная документация Cloudflare Web Bot Auth (внешняя ссылка)
Официальная документация · Cloudflare
Web Bot Auth
Официальная документация о том, как бот подтверждает себя подписью Ed25519 в заголовках запроса, и о порядке регистрации каталога ключей.
Читать →Текущая статья

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Докажите, что вы человек: 5   +   4   =