Содержание
Доступ AI-ботов к сайту обычно проверяют по robots.txt. GPTBot разрешён, ClaudeBot разрешён, можно закрывать вкладку. Только robots.txt ничего не решает. Это записка для вежливого бота, а дверь открывает или захлопывает сервер, и между ним и запиской сидят WAF, CDN и хостинг со своими фильтрами. Они режут краулеров по строке User-Agent молча, в robots.txt от этого не появляется ни строчки.
Мне стало интересно, насколько это частая история, и я посчитал. Вышло 23 сайта из 149 крупных: сервер отказал хотя бы одному AI-боту, которого robots.txt пускает. В российской выборке сервер отказывал вдвое чаще, чем запрещал сам robots.txt, — 12 сайтов против 6. Проверка своего сайта укладывается в три шага: robots.txt глазами каждого бота, два запроса одной страницы — браузером и от имени бота — и логи с проверкой IP. Команды для каждого шага собраны ниже.
Как я мерил
Две выборки взял из рейтинга доменов 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 и видит там полный порядок.
У российских хостингов для такого правила был внешний повод: в декабре 2023 года Роскомнадзор разослал ряду хостинг-провайдеров письмо о GPTBot и рекомендовал закрыть ему доступ к страницам («Коммерсантъ»). В российской выборке сервер отказал GPTBot на 7 сайтах из 83, в мировой — на 4 из 66. По заголовкам ответа не видно, чьё правило сработало, поэтому письмо — возможная причина, а не доказанная.
Главная оговорка
Все запросы шли с одного IP сервера в России, а не с адресов OpenAI или Anthropic. Значит, замер показывает реакцию сайта на строку User-Agent, и только её.
Настоящий GPTBot приходит с опубликованных IP. Защита, которая их сверяет, пустит его и завернёт самозванца, как завернула мой скрипт. Cloudflare, к примеру, отдельно распознаёт проверенных ботов.
Так что отказ в таком замере — повод копнуть, а не приговор. Последнее слово за логами сервера.
Какие AI-боты ходят на сайт и что им говорит robots.txt
У OpenAI, Anthropic и Perplexity по три агента с разной работой. Один собирает тексты для обучения моделей, второй индексирует страницы для поиска в ассистенте, третий открывает страницу, когда об этом просит пользователь. Закрыть первого и оставить второго можно: OpenAI прямо пишет, что настройки для GPTBot и OAI-SearchBot не зависят друг от друга. А часть имён в robots.txt вовсе не боты, а токены. Страниц они не запрашивают, и в логах их не будет.
| Бот | Компания | Зачем приходит | Что делает с robots.txt | Отказ сервера в замере |
|---|---|---|---|---|
| GPTBot | OpenAI | собирает тексты для обучения моделей | учитывает | 11 сайтов |
| OAI-SearchBot | OpenAI | показывает сайт в поиске ChatGPT | учитывает, изменения подхватывает примерно за сутки | 6 сайтов |
| ChatGPT-User | OpenAI | открывает страницу по просьбе пользователя | правила могут не применяться | 6 сайтов |
| ClaudeBot | Anthropic | собирает тексты для обучения моделей | учитывает | 8 сайтов |
| Claude-SearchBot | Anthropic | индексирует страницы для поисковых ответов Claude | учитывает | — |
| Claude-User | Anthropic | открывает страницу по просьбе пользователя | учитывает: запрет закрывает такие запросы | 5 сайтов |
| PerplexityBot | Perplexity | показывает сайт со ссылкой в ответах Perplexity, для обучения не используется | учитывает | 4 сайта |
| Perplexity-User | Perplexity | открывает страницу по просьбе пользователя | обычно игнорирует | 5 сайтов |
| meta-externalagent | Meta | обучение моделей и индексирование для продуктов | учитывает | 12 сайтов |
| meta-externalfetcher | Meta | открывает ссылку по просьбе пользователя | может обойти | — |
| Google-Extended | токен: обучение моделей Gemini и ответы приложений Gemini, на Google Поиск не влияет | работает только через robots.txt, страниц не запрашивает | — | |
| Applebot-Extended | Apple | токен: обучение моделей Apple | работает только через robots.txt, страниц не обходит | — |
| YandexAdditional | Яндекс | токен: показ в быстрых ответах с YandexGPT и в ответах Поиска с Алисой | читает только группу со своим именем, * его не закрывает | — |
Назначение и отношение к robots.txt — по документации владельцев ботов, проверено 28 октября 2026 года: OpenAI, Anthropic, Perplexity, Meta, Google, Apple, Яндекс. Последний столбец — сколько сайтов из 149 отказали боту, хотя robots.txt его пускал (замер 23 сентября 2026 года); прочерк — бот не входил в замер или страниц не запрашивает. Трёх ботов замера в таблице нет, их число сайтов с отказом сервера: Bytespider — 11, CCBot — 8, Amazonbot — 7.
Почему robots.txt видит не всё
Защиту могут включить без вас. С 1 июля 2025 года Cloudflare блокирует AI-краулеры по умолчанию для новых доменов. В июле 2026-го компания разбила ботов на три класса — Search, Agent и Training. С 15 сентября 2026 года у новых доменов боты классов Training и Agent по умолчанию закрыты, но только на страницах, где показывается реклама. Search открыт (журнал изменений Cloudflare). Сайт на 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, который эту группу не читает вовсе. Заодно запросите сам robots.txt с User-Agent бота: ответ должен прийти с кодом 200 и текстом файла, а не с ошибкой или страницей проверки.
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».
Обе команды делают обычный GET-запрос: curl -I отправил бы HEAD и получил одни заголовки, а заглушку защиты видно только в теле ответа.
И не останавливайтесь на главной. Я мерил главные, но правило защиты бывает настроено на отдельные разделы. Возьмите пять-шесть адресов разного типа: главную, robots.txt, sitemap.xml, раздел каталога или блога, карточку товара или статью.
3. Сверьтесь с логами. Найдите в access-логе запросы с именем бота и посмотрите, какие коды он получал:
grep -E "GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-SearchBot|Claude-User|PerplexityBot|Perplexity-User" access.log \
| awk '{print $9}' | sort | uniq -c
Команда считает, сколько раз боты получили каждый код ответа. Девятое поле — код ответа в стандартном формате логов nginx и Apache, при другом формате номер поля другой. Если ботов в логе нет совсем, они либо не приходили, либо их отсекли раньше, на CDN. Тогда нужны логи CDN.
Дальше убедитесь, что бот настоящий. Строку User-Agent подделать легко, поэтому сверяйте IP из лога со списками, которые публикуют сами компании.
| Компания | Как проверить IP из лога |
|---|---|
| OpenAI | по спискам 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 и www.perplexity.com/perplexity-user.json |
| обратный DNS-запрос: имя хоста оканчивается на googlebot.com, google.com или googleusercontent.com, а прямой запрос по этому имени возвращает тот же IP | |
| Яндекс | обратный DNS-запрос: имя хоста оканчивается на yandex.ru, yandex.net или yandex.com, прямой запрос возвращает тот же IP. Или инструмент «Проверка 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 покажет всю картину, а не её половину. Для частого решения «в ответы ассистентов пускаю, на обучение не даю» файл выглядит так:
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: CCBot
User-agent: Google-Extended
User-agent: Applebot-Extended
Disallow: /
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: Claude-User
User-agent: PerplexityBot
Allow: /
Группа с именем бота заменяет для него User-agent: *. Запреты из общей группы, например на служебные разделы, продублируйте во вторую группу, иначе поисковые агенты пойдут и туда. OpenAI подхватывает новые правила для поиска ChatGPT примерно за сутки. Ботам Anthropic отказ тоже лучше записывать здесь: компания предупреждает, что блокировка её IP мешает ботам прочитать robots.txt.
И повторяйте проверку после любых изменений в CDN, WAF и плагинах защиты, а также после переезда на другой хостинг. Защиту меняют без вас, и robots.txt об этом не узнает.
Частые вопросы
Сначала прочитайте robots.txt за каждого бота: группа с его именем или, если её нет, группа User-agent: *. Затем запросите одну и ту же страницу как браузер и с User-Agent бота и сравните код ответа и размер. Расхождение подтвердите по логам сервера и проверкой IP по спискам, которые публикуют OpenAI, Anthropic и Perplexity.
Краулеры OpenAI, Anthropic, Perplexity, Google и Apple по документации владельцев учитывают robots.txt. Исключение — агенты, которые открывают страницу по просьбе пользователя: OpenAI пишет, что к ChatGPT-User правила robots.txt могут не применяться, Perplexity — что Perplexity-User обычно их игнорирует. А защита сервера robots.txt не читает вовсе и может отказать любому боту.
Закройте в robots.txt обучающих ботов GPTBot, ClaudeBot и CCBot, а также токены Google-Extended и Applebot-Extended. Поисковых агентов OAI-SearchBot, Claude-SearchBot и PerplexityBot оставьте открытыми. Потом проверьте, что сервер их действительно пускает: в замере 149 сайтов сервер отказывал поисковому или пользовательскому агенту на 9 сайтах, где robots.txt его пускал.
Часть защит отвечает боту кодом 200, но вместо страницы отдаёт заглушку. В замере так выглядели 7 отказов из 83 пар «сайт — бот», где сервер отказал боту при разрешающем robots.txt. Поэтому сравнивайте не только код, но и размер ответа с тем, что получил браузер.
Нет. Правило защиты бывает настроено на отдельные разделы, поэтому проверьте ещё robots.txt, sitemap.xml, раздел каталога или блога и одну карточку или статью.