lenec ru

← все посты

Как защитить сайт от парсинга нейросетями

10K

Год назад мы заметили, что наш блог стало посещать в 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% случаев. Дальше — индивидуальная история под твой проект.

Комментарии 0

  • Будьте первым, кто оставит комментарий.

Войдите, чтобы оставить комментарий.