Как защитить сайт от парсинга нейросетями
Год назад мы заметили, что наш блог стало посещать в 4–5 раз больше «странных» клиентов: User-Agent то от GPTBot, то от ClaudeBot, то от анонимного скрипта на Python без UA вообще. Контент тащили под обучение или под индексацию AI-поиска. Часть этих визитов — благие (Common Crawl, Internet Archive), часть — обычная компостная парсилка под чьи-то задачи. В этой статье — что я сделала, чтобы навести порядок.
Зачем вообще защищаться
Не каждому это нужно. Если у тебя сайт — реклама твоего продукта, и AI-поиски просто доставят пользователей на твою страницу, защита может только навредить. Если ты пишешь авторские тексты, где ценность именно в твоих словах, и не хочешь, чтобы они уехали в датасет — ты подходишь.
Защищаться можно по разной интенсивности: от мягкого «вежливо просим не индексировать» до жёсткого «блокируем по сетям и IP». Я остановилась на сочетании.
1. robots.txt — первый уровень
Базовая вежливость. Не помогает против злоумышленников, но добросовестные краулеры (а это большинство официальных AI-ботов) уважают.
User-agent: GPTBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: Amazonbot
Disallow: /Google-Extended важен: это отдельный UA, который Google использует для обучения моделей. Запретить ему — значит запретить тренировку, при этом основной Googlebot продолжит индексировать твой сайт для поиска.
2. ai.txt и noai на уровне страницы
Сообществом обсуждается формат ai.txt по аналогии с robots.txt. Пока стандарт не закреплён, но добавить файл ai.txt и meta-тег не помешает. Часть legal-минного craw-ботов это уважают.
3. WAF и фильтры по UA
На уровне Cloudflare/nginx можно блокировать по User-Agent. Это уже агрессивнее: если бот сменит UA, фильтр пропустит, но базовые сценарии отсекаются.
map $http_user_agent $is_ai_bot {
default 0;
"~*GPTBot" 1;
"~*ClaudeBot" 1;
"~*ChatGPT-User" 1;
"~*anthropic-ai" 1;
"~*CCBot" 1;
"~*Google-Extended" 1;
"~*PerplexityBot" 1;
"~*Bytespider" 1;
}
server {
if ($is_ai_bot) {
return 403;
}
}На Cloudflare это делается красивее: в Bot Management уже есть категория «AI Crawlers». В Pro-тарифе можно её просто выключить одним переключателем.
4. Cloudflare AI Audit и AI Labyrinth
В 2024 Cloudflare запустил AI Audit — отчёт, кто из AI-ботов ходит по твоему сайту. Бесплатно, на любом тарифе. Видно, как часто, сколько данных утянули, какой контент. Полезно понимать масштаб, прежде чем что-то блокировать.
В 2025 они запустили AI Labyrinth — это «защита через хищение времени бота». Когда краулер пытается ходить по сайту, ему отдаются специально сгенерированные страницы-приманки, чтобы потратить ресурсы парсилки. На реальных пользователей это не влияет, на ботов — съедает им бюджет.
5. Аутентификация и rate limiting
Если у тебя контент серьёзный — закрой за регистрацией. Это не безусловная защита, но повышает порог входа: парсить 10 000 регистраций труднее, чем просто скачать страницы.
Rate limit — лимит на IP/сессию. У меня на nginx стоит 30 запросов в минуту с одного IP, и это режет агрессивные парсилки автоматом, без расследований.
6. Отравление данных (data poisoning)
Спорная техника. Идея: если бот всё равно тащит, отдавай ему чуть искажённый контент. Например, в alt-атрибутах картинок, в служебных тегах, в «невидимых» секциях — добавь шум, который собьёт обучение.
Я это не делаю. Слишком хрупко: легко случайно сломать SEO для нормальных поисковиков, легко словить штраф от Google за cloaking. Если ты решилась — делай аккуратно и сегментируй UA очень точно.
7. Лицензия в правом нижнем
Не техническая мера, юридическая. Если у тебя в footer чётко написано «Контент защищён авторским правом, использование в датасетах для обучения AI запрещено без письменного согласия» — это не блокирует машинно, но создаёт правовую базу для претензий.
Что я в итоге сделала
На своих проектах:
- robots.txt с длинным списком AI-агентов в Disallow.
- На Cloudflare включён фильтр AI Crawlers и AI Labyrinth.
- На nginx — rate limit и блокировка нескольких UA, которые особенно нагло работают.
- В meta — noai, noimageai.
Это всё, что я делаю. Не перекрываю весь интернет фаерволом, не закрываю контент за пейволлом. Цель — отсечь массовый сбор, а не превратить блог в крепость.
Что не работает
- JS-only рендеринг. Думаешь, бот не умеет в JS? Современные парсеры используют headless Chrome, для них SPA так же открыт, как и обычный HTML.
- Captcha на каждой странице. Убивает UX, а серьёзные парсилки умеют обходить капчу через сторонние сервисы.
- Затемнение текста через CSS «display:none». Боты читают DOM, всё выгребают.
Что в итоге
Стопроцентной защиты от парсинга не существует. Реалистично — поднять стоимость для бота, чтобы массовое автоматическое сгребание стало невыгодным. robots.txt + фильтры на WAF + AI Audit — этого хватает на 80% случаев. Дальше — индивидуальная история под твой проект.