Содержание
Доступ AI-ботов к сайту обычно проверяют по robots.txt. GPTBot разрешён, ClaudeBot разрешён, можно закрывать вкладку. Только robots.txt ничего не решает. Это записка для вежливого бота, а дверь открывает или захлопывает сервер, и между ним и запиской сидят WAF, CDN и хостинг со своими фильтрами. Они режут краулеров по строке User-Agent молча, в robots.txt от этого не появляется ни строчки.
Мне стало интересно, насколько это частая история, и я посчитал. Вышло 23 сайта из 149 крупных: сервер отказал хотя бы одному AI-боту, которого robots.txt пускает. В российской выборке сервер отказывал вдвое чаще, чем запрещал сам robots.txt, — 12 сайтов против 6.
Как я мерил
Две выборки взял из рейтинга доменов 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 российских.
Каждый одиночный отказ и каждый ответ 429 я прогнал ещё дважды, с паузой. Почти все повторились один в один. Значит, сайт так настроен, а не споткнулся в моменте. Два домена отвечали то так, то эдак, их я выбросил.
Замер снят 23 сентября 2026 года.
Что получилось
| Показатель | Мир (66 сайтов) | Россия (83 сайта) |
|---|---|---|
| robots.txt закрывает хотя бы одного из 11 ботов | 11 | 6 |
| Сервер отказывает боту, которого robots.txt не закрывает | 11 | 12 |
| Из них отказ поисковому или пользовательскому агенту | 4 | 5 |
| GPTBot: закрыт в robots.txt / отказ сервера | 8 / 4 | 5 / 7 |
Главная строка здесь третья. OAI-SearchBot, PerplexityBot и Claude-User — те, кто приносит страницу в ответ ассистента вместе со ссылкой. Закрыть обучающего краулера владелец сайта может сознательно. А вот что его сайт отшивает поискового агента OpenAI, он, скорее всего, не подозревает.
Если разложить отказы по ботам, первыми идут обучающие краулеры meta-externalagent, GPTBot и Bytespider. Поисковые и пользовательские агенты в этом списке тоже есть, и каждый из них теряет от четырёх до шести сайтов.
Вот как это выглядит вживую.
- wordpress.com отвечает 403 ботам OpenAI, Anthropic и Perplexity, а Bytespider, Amazonbot, meta-externalagent и CCBot получают 429. В robots.txt ни один из них не закрыт.
- unity3d.com всем 11 агентам показывает страницу Akamai «Access Denied» с кодом 403.
- cloudflare.net выставляет проверку Cloudflare перед GPTBot, Amazonbot, meta-externalagent и CCBot, остальных пропускает.
- digicert.com отвечает семи ботам кодом 200 и подсовывает заглушку Imperva вместо страницы. По одному коду ответа этого не поймать.
- megafon.ru в robots.txt закрыл только GPTBot. Сервер при этом отказывает ещё четырём ботам, которых robots.txt пускает, и среди них поисковый OAI-SearchBot и ChatGPT-User.
- mos.ru разрешает OAI-SearchBot в robots.txt и тут же отвечает ему 403.
- gismeteo.ru молча рвёт соединение с GPTBot, ChatGPT-User, ClaudeBot, meta-externalagent и CCBot.
- wikipedia.org отказывает с кодом 403 ClaudeBot и meta-externalagent.
Больше половины отказов — обычный 403. Остальные хитрее: 429 легко принять за перегрузку, а заглушка с кодом 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 бота:
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 покажет всю картину, а не её половину.