Содержание

Доступ AI-ботов к сайту обычно проверяют по robots.txt. GPTBot разрешён, ClaudeBot разрешён, можно закрывать вкладку. Только robots.txt ничего не решает. Это записка для вежливого бота, а дверь открывает или захлопывает сервер, и между ним и запиской сидят WAF, CDN и хостинг со своими фильтрами. Они режут краулеров по строке User-Agent молча, в robots.txt от этого не появляется ни строчки.

Мне стало интересно, насколько это частая история, и я посчитал. Вышло 23 сайта из 149 крупных: сервер отказал хотя бы одному AI-боту, которого robots.txt пускает. В российской выборке сервер отказывал вдвое чаще, чем запрещал сам robots.txt, — 12 сайтов против 6.

23 из 149
сайтов отказали AI-боту на сервере
robots.txt этого бота при этом пускал
12 и 6
российских сайтов: отказ сервера против запрета в robots.txt
в мировой выборке поровну, 11 и 11
9
сайтов отказывают поисковому или пользовательскому агенту
тем, кто приносит ссылку в ответ ассистента

Как я мерил

Две выборки взял из рейтинга доменов Tranco (список Y8YYG): 150 самых посещаемых доменов мира и 150 доменов в зоне .ru.

Скрипт делал с каждым доменом одно и то же. Забирал robots.txt, открывал главную с браузерным User-Agent, потом стучался туда же от имени 11 агентов: GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, Bytespider, Amazonbot, meta-externalagent и CCBot. Строки User-Agent я брал из документации владельцев ботов. Anthropic публикует только имена, так что для трёх её агентов строку пришлось собрать по образцу OpenAI.

В подсчёт шёл только такой отказ, когда браузеру страницу отдали, а боту нет. Боту мог прийти код 4xx или 5xx, оборванное соединение или страница проверки вместо содержимого.

Если капчу получал уже браузер, сравнивать было не с чем, и домен выбывал. Выбыли в основном адреса CDN, API и счётчиков, у которых нет обычной главной. Осталось 149 сайтов: 66 мировых и 83 российских.

Как засчитывался отказ один адрес, два запроса, сравнивается ответ браузер User-Agent Chrome AI-бот GPTBot и ещё 10 сервер сайта WAF · CDN · хостинг 200, полная страница контрольный ответ 403 · 429 · обрыв · заглушка засчитан отказ Браузер сам получил капчу или ошибку — сравнивать не с чем, домен выбывает из подсчёта.
Отказом считалось только расхождение с браузером. Если плохо ответили обоим, это не отказ боту.

Каждый одиночный отказ и каждый ответ 429 я прогнал ещё дважды, с паузой. Почти все повторились один в один. Значит, сайт так настроен, а не споткнулся в моменте. Два домена отвечали то так, то эдак, их я выбросил.

Замер снят 23 сентября 2026 года.

Что получилось

Отказы AI-ботам в robots.txt и на сервере: мировая и российская выборки
ПоказательМир (66 сайтов)Россия (83 сайта)
robots.txt закрывает хотя бы одного из 11 ботов116
Сервер отказывает боту, которого robots.txt не закрывает1112
Из них отказ поисковому или пользовательскому агенту45
GPTBot: закрыт в robots.txt / отказ сервера8 / 45 / 7

Главная строка здесь третья. OAI-SearchBot, PerplexityBot и Claude-User — те, кто приносит страницу в ответ ассистента вместе со ссылкой. Закрыть обучающего краулера владелец сайта может сознательно. А вот что его сайт отшивает поискового агента OpenAI, он, скорее всего, не подозревает.

Если разложить отказы по ботам, первыми идут обучающие краулеры meta-externalagent, GPTBot и Bytespider. Поисковые и пользовательские агенты в этом списке тоже есть, и каждый из них теряет от четырёх до шести сайтов.

Кому сервер отказывает, хотя robots.txt пускает
meta-externalagent
12 сайтов
GPTBot
11 сайтов
Bytespider
11 сайтов
ClaudeBot
8 сайтов
CCBot
8 сайтов
Amazonbot
7 сайтов
OAI-SearchBot
6 сайтов
ChatGPT-User
6 сайтов
Claude-User
5 сайтов
Perplexity-User
5 сайтов
PerplexityBot
4 сайта
149 сайтов из обеих выборок. Терракотовым — поисковые и пользовательские агенты, которые приносят ссылку в ответ ассистента.

Вот как это выглядит вживую.

Больше половины отказов — обычный 403. Остальные хитрее: 429 легко принять за перегрузку, а заглушка с кодом 200 выглядит как нормальный ответ.

Как выглядит отказ боту
403
51
429
10
другие коды: 404, 410, 5xx
9
200 с заглушкой защиты
7
обрыв соединения
6
83 пары «сайт — бот» с отказом сервера при разрешающем robots.txt. Заглушку с кодом 200 проверка по коду ответа не видит.

У 9 из 12 российских сайтов с отказом я не увидел в заголовках ответа следов известного CDN или защиты вроде Qrator и DDoS-Guard. Правило, похоже, сидит в конфигурации веб-сервера или у хостинга. С небольшими сайтами так тоже бывает: хостинг включает фильтр ботов разом для всех клиентов, а владелец годами смотрит в свой robots.txt и видит там полный порядок.

Главная оговорка

Все запросы шли с одного IP сервера в России, а не с адресов OpenAI или Anthropic. Значит, замер показывает реакцию сайта на строку User-Agent, и только её.

Настоящий GPTBot приходит с опубликованных IP. Защита, которая их сверяет, пустит его и завернёт самозванца, как завернула мой скрипт. Cloudflare, к примеру, отдельно распознаёт проверенных ботов.

Так что отказ в таком замере — повод копнуть, а не приговор. Последнее слово за логами сервера.

Почему robots.txt видит не всё

Защиту могут включить без вас. С 1 июля 2025 года Cloudflare блокирует AI-краулеры по умолчанию для новых доменов. В июле 2026-го компания разбила ботов на три класса — Search, Agent и Training — и объявила, что с 15 сентября 2026 года у каждого класса будут свои умолчания. Сайт на Cloudflare мог поменять поведение, пока его robots.txt не трогал никто.

Боты по просьбе пользователя robots.txt могут не читать. OpenAI прямо пишет, что к ChatGPT-User правила robots.txt могут не применяться: переход запускает человек. У Perplexity-User, по словам Perplexity, robots.txt обычно игнорируется, meta-externalfetcher от Meta тоже может его обойти. Остановить таких ботов можно только на сервере.

Владельцы и останавливают, а под нож заодно идут поисковые агенты тех же компаний.

Часть имён — просто токены. Google-Extended, Applebot-Extended и YandexAdditional страницы сами не запрашивают. У Google-Extended, по документации Google, нет отдельного HTTP-агента, и на показ сайта в Google Поиске он не влияет. Applebot-Extended, как пишет Apple, страниц не обходит.

С ними работает только robots.txt.

С YandexAdditional есть подвох. В таблице роботов Яндекса он помечен как не учитывающий общие правила robots.txt, поэтому User-agent: * с Disallow: / его не закрывает. Нужна группа с его собственным именем, YandexAdditional или YandexAdditionalBot. По документации Яндекса этот токен ограничивает показ страницы в быстрых ответах с YandexGPT и в ответах Поиска с Алисой.

Как проверить свой сайт

1. Прочитайте robots.txt глазами каждого бота. Ищите группы OAI-SearchBot, Claude-SearchBot и PerplexityBot. Своей группы нет — бот читает *, кроме YandexAdditional, который эту группу не читает вовсе.

2. Запросите страницу дважды. Сначала как браузер, потом с User-Agent бота:

bash
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" \
  -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36" \
  https://example.com/

curl -s -o /dev/null -w "%{http_code} %{size_download}\n" \
  -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot" \
  https://example.com/

Код 200 ещё ничего не значит. Сравните размер: заглушка защиты обычно легче настоящей страницы в разы. Подозрительно маленький ответ откройте целиком и поищите в нём «Just a moment», «Access Denied» или «Pardon Our Interruption».

3. Сверьтесь с логами. Найдите в access-логе запросы с именем бота и посмотрите, какие коды он получал.

Дальше убедитесь, что бот настоящий. OpenAI выкладывает диапазоны IP в openai.com/gptbot.json, openai.com/searchbot.json и openai.com/chatgpt-user.json, Anthropic — в claude.com/crawling/bots.json, Perplexity — в www.perplexity.com/perplexitybot.json.

Googlebot Google советует проверять обратным DNS-запросом. Имя хоста должно оканчиваться на googlebot.com, google.com или googleusercontent.com, а прямой запрос по этому имени — возвращать тот же IP.

А если 403 или 429 получает настоящий бот, ищите правило в панели CDN, в WAF и у хостинга. В коде CMS его, скорее всего, нет.

4. Или всё за один заход. Инструмент проверки доступа ИИ-ботов разбирает robots.txt для 15 краулеров, с поправкой на YandexAdditional, и запрашивает страницу браузером и от имени десяти ботов. В отчёте видно, кого закрыл robots.txt, а кого развернул сервер.

Оговорка про IP действует и тут: инструмент показывает реакцию на User-Agent, а логи остаются последней инстанцией.

Что делать с результатом

Когда закрыт обучающий краулер вроде GPTBot, ClaudeBot, CCBot или Bytespider, это бывает осознанным решением, и трогать его не обязательно. Отказ поисковому агенту или боту, который открывает страницу по просьбе пользователя, я бы считал ошибкой, пока не доказано обратное. ChatGPT, Claude и Perplexity не процитируют страницу, которую не смогли открыть, даже если она отвечает на вопрос лучше всех.

Чинить нужно там, где стоит защита. На Cloudflare откройте настройки AI-ботов и посмотрите, какие классы закрыты. Без CDN спросите хостинг, режет ли он ботов по User-Agent.

А потом запишите то же решение в robots.txt явно. Тогда следующая проверка по robots.txt покажет всю картину, а не её половину.