Как заблокировать AI-краулеры в WordPress (честно)
Чтобы GPTBot перестал обходить сайт на WordPress, добавьте в robots.txt такие строки:
Опубликовано
Чтобы GPTBot перестал обходить сайт на WordPress, добавьте в robots.txt такие строки:
User-agent: GPTBot
Disallow: /
Это всё, что нужно для послушных краулеров. Но давайте честно про то, что вы только что сделали: robots.txt — это просьба, а не забор. GPTBot от OpenAI скачивает файл и подчиняется ему. Скрапер, которому плевать на стандарт, скачивает тот же файл и игнорирует в нём каждую строку. Держите это различие в голове, прежде чем потратить полдня на его настройку.
Если хотите закрыть основные AI-краулеры за один заход, вот распространённые токены user-agent:
User-agent: GPTBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Bytespider
Disallow: /
GPTBot — обучающий краулер OpenAI, CCBot — это Common Crawl (на данных которого потом обучаются многие модели), ClaudeBot — Anthropic, Google-Extended — токен Google для обучения ИИ, а Bytespider — это ByteDance. Обратите внимание: два из них уже нарушают модель вежливой просьбы — Bytespider и PerplexityBot неоднократно ловили на обходе сайтов, которые их запретили, и это публично задокументировано. Перечислить их всё равно полезно против честных ботов; но против тех, кто уже врёт о том, кто они, это не даёт ничего.
Как WordPress на самом деле отдаёт robots.txt
Именно здесь правки большинства людей молча ни на что не влияют. Если в корне сайта нет физического файла robots.txt, WordPress генерирует его на лету. Запрос обрабатывает функция do_robots() в wp-includes/functions.php, а вывод проходит через фильтр robots_txt. Галочка «Попросить поисковые системы не индексировать сайт» в разделе Настройки → Чтение переключает опцию blog_public — именно она заставляет этот виртуальный файл выдавать Disallow: /.
Так что правила для AI-краулеров можно дописать программно:
add_filter( 'robots_txt', function ( $output, $public ) {
$output .= "User-agent: GPTBot\nDisallow: /\n";
return $output;
}, 10, 2 );
А вот подвох, который съедает часы: как только в корне сайта появляется статический файл robots.txt, Apache или nginx отдаёт этот файл напрямую, и WordPress вообще не запускается. Фильтр robots_txt, редактор robots в Yoast/Rank Math, настройка Чтения — всё это обходится стороной. Если вы редактировали robots.txt в плагине, а живой файл так и не изменился, почти наверняка причина в этом. Откройте https://yoursite.com/robots.txt в приватном окне и сравните с тем, что, как вам кажется, вы задали. Если на диске лежит реальный файл — правьте именно его; фильтр здесь ни при чём.
Как это исправить, по порядку
Сначала напишите корректные правила. Правильно составьте синтаксис и список краулеров, чтобы случайно не заблокировать Googlebot. Наш правильный robots.txt для WordPress собирает блок AI-краулеров за вас и показывает готовый файл для вставки — это снимает путаницу «виртуальный против физического», потому что в итоге у вас один авторитетный файл.
Второе — убедитесь, что он живой. Запросите URL напрямую. Не доверяйте окну предпросмотра в плагине.
Третье — если вам нужно принуждение, а не вежливая просьба, поднимитесь выше по стеку. robots.txt живёт на уровне приложения и зависит от доброй воли бота. Чтобы действительно отказать в соединении, блокируйте по user-agent на уровне сервера. В .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (GPTBot|CCBot|ClaudeBot|Bytespider) [NC]
RewriteRule .* - [F,L]
</IfModule>
Это возвращает 403 всему, что присылает такие user-agent. Наш генератор .htaccess может собрать это правило. Но поймите его ограничение: user-agent элементарно подделывается, поэтому так вы остановите только тех ботов, которые достаточно честны, чтобы представиться, — а это те же боты, которые и так соблюдают robots.txt. По-настоящему надёжный вариант — это CDN или WAF, который блокирует по проверенной личности краулера или диапазону IP. Готовое правило Cloudflare в один клик «Block AI Scrapers and Crawlers» — самый малозатратный вариант такого подхода, оно работает на границе сети, ещё до того, как запрос вообще доходит до WordPress.
Чего делать не стоит
Не блокируйте Google-Extended в надежде, что это уберёт вас из AI Overviews. Вот заблуждение, которое стоит развеять. Google-Extended — это продуктовый токен, а не краулер. Он управляет только тем, используется ли ваш контент для обучения и обоснования моделей Gemini. По собственной документации Google, он никак не влияет на то, как ваши страницы обходятся, индексируются и ранжируются в поиске Google. А AI Overviews строятся на основе обычного поискового индекса, который обходит Googlebot, — а не Google-Extended. Блокировка Google-Extended не уберёт вас из AI Overviews и не будет стоить вам ни одной позиции в поиске. Единственный способ не попадать в AI Overviews — заблокировать Googlebot или поставить странице noindex, что заодно полностью удалит вас из поиска. А это почти никогда не тот размен, который вам нужен.
Не относитесь к robots.txt как к средству защиты. Он публичный и носит рекомендательный характер. Указав в нём /wp-admin/ или приватный путь, вы просто публикуете карту того, где искать. Защищайте реальные эндпоинты аутентификацией, а не строкой disallow.
Не полагайтесь на мета-теги noai / noimageai. Их предложили, но не стандартизировали, и их соблюдает лишь горстка платформ. Это не универсальная защита.
Не думайте, что плагин «блокировки ИИ» сделал что-то большее, чем запись в robots.txt. Большинство из них пишут те же самые строки, что вы могли бы написать руками, и наследуют то же ограничение. Прежде чем доверять плагину, посмотрите, что он на самом деле изменил.
Всё ещё не выходит?
Если ваши правки не появляются, ответ почти всегда в том, что случайный физический robots.txt в корне сайта перекрывает виртуальный файл WordPress — запросите URL напрямую и проверьте. Если послушные боты пропали, а скраперы продолжают вас долбить, значит, вы упёрлись в потолок возможностей robots.txt, и следующий шаг — правило WAF или CDN, которое блокирует по проверенной личности, а не по вежливой просьбе.