Если вы держите сайт, вики, форум, Gitea или инстанс Jellyfin с публичной страницей — вы уже платите за трафик, который никто не читает. Вопрос только в том, какая доля счёта уходит на роботов и сколько из этого можно вернуть, не поломав сайт для живых людей.
Ниже — разбор по рубежам обороны: что каждый реально ловит, чем за него платят и в каком порядке их включать. Порядок здесь важнее самих правил: почти все, кто хватается сразу за тяжёлую артиллерию, в итоге режут собственных читателей.
Сначала цифры, чтобы понимать масштаб
Начнём с независимой макростатистики. Cloudflare в отчёте от 1 июля 2026 года («Content Independence Day, one year on») приводит данные по своей сети — а это, по их же оценке, больше 20 % веба и 36 % самых посещаемых сайтов:
- на июнь 2026 года больше половины интернет-трафика — не человеческий;
- в структуре краулинга 52 % приходится на сбор данных для обучения моделей — против 22 % весной 2025-го;
- около 88 % реферального трафика по-прежнему даёт Google — то есть заменителя ему, куда ушли бы «отданные» ИИ данные, просто нет;
- в отдельных сильно выскрапленных нишах человеческий трафик просел до 40 % меньше чем за год.
Теперь полевой кейс. 7 августа автор сайта на 1,5 млн страниц (patronview.com) выложил разбор года обороны с выгрузками из логов и панели Cloudflare. Цифры оттуда:
| Показатель | Значение |
|---|---|
| Страниц отдано за неделю | 1,28 млн |
| Из них живых просмотров | 5 977 |
| Соотношение бот : человек | 214 : 1 |
| Claude-SearchBot | 35 000 страниц на 1 приведённого посетителя |
| Amzn-SearchBot | 117 000 запросов в сутки, 0 переходов |
| Bingbot | 158 610 запросов ради 680 посетителей |
| Googlebot | 46 страниц на 1 посетителя |
| Счёт за сервер | ~$90 → ~$450 в пиковый месяц |
Это логи одного сайта, а не репрезентативная выборка: тематика, объём страниц и то, насколько сайт «вкусен» для обучающих выборок, меняют картину в разы. Брать эти числа как «норму для всех» нельзя. Ценность кейса в другом — в нём видно, какие меры сработали, а какие оказались театром безопасности. Макроцифры Cloudflare здесь служат независимой опорой: направление тренда совпадает.
Отдельно стоит проговорить главный экономический сдвиг. Классическая сделка с поисковиком была честной: он берёт страницы — он присылает людей. У Googlebot это 46 страниц на посетителя, у Bingbot счёт уже идёт на сотни, а у краулеров, которые кормят ответы ИИ-ассистентов, обмена нет вовсе. Сканирование есть, переходов нет. Именно поэтому разговор «блокировать или нет» перестал быть про нагрузку и стал про экономику.
Схема: gig.ovh
Рубеж 1. robots.txt — заявление, а не защита
Начинать всё равно надо с него: он бесплатен, ничего не ломает и является формальным выражением вашей воли — что важно, если однажды дойдёт до претензий.
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-SearchBot
Disallow: /
User-agent: Amazonbot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: *
Crawl-delay: 10
Кто вообще соблюдает robots.txt: крупные вендоры с публичной репутацией — в основном да, потому что им дороже скандал. Кто не соблюдает: всё, что ходит с поддельным браузерным User-Agent, резидентные ботнеты и мелкие «стартапы для датасетов». То есть ровно те, кто создаёт большую часть нагрузки. Cloudflare, к слову, теперь предлагает управляемый robots.txt и блокировку для монетизируемого контента — если вы у них, это делается тумблером.
Рубеж 2. Блок по User-Agent — против честно подписанных
Это работает ровно на тех, кто честно представляется. И такие есть: SEO-краулеры подписываются своим именем, потому что им нужна репутация.
Для nginx:
map $http_user_agent $bad_bot {
default 0;
"~*(SemrushBot|AhrefsBot|AhrefsSiteAudit|MJ12bot|DotBot|BLEXBot|DataForSEOBot|Barkrowler|SiteAuditBot|SplitSignalBot)" 1;
"~*(GPTBot|ClaudeBot|Claude-SearchBot|Amazonbot|Amzn-SearchBot|Bytespider|CCBot)" 1;
}
server {
if ($bad_bot) { return 403; }
}
Для Caddy:
@badbots header_regexp User-Agent "(?i)(SemrushBot|AhrefsBot|MJ12bot|DotBot|BLEXBot|GPTBot|ClaudeBot|Amazonbot|Bytespider|CCBot)"
respond @badbots 403
В упомянутом кейсе после такой блокировки Claude-SearchBot ушёл с ~60 000 запросов в сутки до 25. Это не победа над скраперами вообще — это выключение тех, кто играл по правилам и просто ходил слишком жадно. И этого зачастую достаточно, чтобы снять большую часть счёта.
Рубеж 3. Проверять «хороших» ботов, а не верить им на слово
Если вы разрешаете Googlebot — вы разрешаете всем, кто напишет Googlebot в заголовке. Проверять надо не строку, а происхождение.
Самый простой способ — обратный DNS с прямой сверкой:
# IP притворяется Googlebot?
host 66.249.66.1
# → crawl-66-249-66-1.googlebot.com
host crawl-66-249-66-1.googlebot.com
# → должен вернуться тот же IP
Правильный способ — брать официальные списки подсетей, которые Google, Bing и Apple публикуют машиночитаемо, и обновлять их по расписанию. У Cloudflare это уже готовый список Verified Bots.
Чего делать нельзя: блокировать по подсети целиком «потому что оттуда шёл бот». Из тех же диапазонов ходят ваши читатели через мобильных операторов и корпоративные NAT. Блок по ASN допустим только для сетей дата-центров — и то с оговорками (см. рубеж 5).
Рубеж 4. Ограничение скорости — первое, что стоит включить всем
Рабочий диапазон для контентного сайта — порядка 30 запросов за 10 секунд на IP, то есть 3 запроса в секунду с запасом на пачку картинок.
limit_req_zone $binary_remote_addr zone=perip:10m rate=3r/s;
limit_req_status 429;
server {
location / {
limit_req zone=perip burst=30 nodelay;
}
}
Живой человек этот лимит не заметит: страница тянет CSS, шрифты и картинки пачкой, поэтому burst=30 nodelay обязателен — без него первый же честный посетитель получит 429 на половине картинок.
Ограничение скорости на IP бесполезно ровно там, где болит сильнее всего. В апреле упомянутый сайт получил 3,6 млн запросов за сутки с 361 844 уникальных адресов — на каждый IP приходится по десятку запросов, любой разумный лимит такое пропускает. Распределённый ботнет обходит per-IP лимиты по определению; per-IP лимит спасает от жадного одиночки, а не от толпы.
Если вы за Cloudflare или другим прокси — не забудьте set_real_ip_from и real_ip_header CF-Connecting-IP, иначе вы отлимитируете сам прокси.
Рубеж 5. Челлендж для сетей дата-центров
Скрапер, который арендует мощности в AWS, Azure, GCP или у хостера подешевле, приходит с адреса, за которым не может стоять живой читатель. Это самое честное правило из всех: пользователи из ASN дата-центра — редкость.
В кейсе автор выставил челлендж для 46 ASN и получил заметный эффект. Если вы не на Cloudflare, эквивалент — фильтр по спискам подсетей дата-центров на уровне nginx или fail2ban.
Побочный эффект, о котором забывают: под это же правило попадают ваши собственные интеграции. Uptime-мониторинг, RSS-агрегаторы, превью ссылок в Telegram и Slack, вебхуки, curl из вашего же CI, Home Assistant, который дёргает ваш API, — всё это ходит из дата-центров. Заводите allow-list до включения правила, а не после жалоб.
Рубеж 6. География — сильно, грубо и обоюдоостро
Апрельская волна в кейсе была страновой, и блок по стране её снял. Дальше автор пошёл дальше — челлендж всем континентам, кроме Северной Америки, и получил показательную статистику: доля решённых челленджей 0,24 % за 48 часов (252 решённых из 106 437), при этом 99,94 % неудач по Бразилии и 99,96 % по Сингапуру.
Эти цифры можно читать двумя способами, и это ровно та развилка, где ошибаются.
Оптимистичный: практически всё, что приходит из этих регионов, — автоматика, челлендж работает.
Пессимистичный: челлендж настолько тяжёлый, что его не проходят и люди тоже, а вы просто выключили себе половину планеты.
Для русскоязычной аудитории это не абстракция. Значительная часть читателей ходит через VPN, выходные узлы которых расположены в Нидерландах, Германии, Финляндии — то есть географически «не там», а по ASN зачастую в дата-центре. Правило «челлендж всем, кроме своей страны» гарантированно накрывает вашу собственную аудиторию. Если вы вводите гео-правила — сначала неделю в режиме логирования без блокировки, потом сравнивайте.
Рубеж 7. Замороженные версии браузера
Изящный трюк из того же кейса: ботнеты годами ходят с одним и тем же User-Agent, потому что его никто не обновляет. Живой Chrome обновляется сам. Челлендж (не блок!) для Chrome версий 100–130 и Firefox ниже 115 отсекает такие «замороженные» подписи и почти не задевает живых.
Почти — потому что есть старые Android-телефоны без обновлений, корпоративные машины с политикой заморозки и Linux-сборки со старым Firefox ESR. Поэтому именно челлендж, а не 403.
Рубеж 8. Proof-of-work: тяжёлая артиллерия
Самый радикальный вариант — заставить браузер посчитать задачу перед выдачей страницы. Для тех, кто не может или не хочет отдавать сайт под Cloudflare, есть Anubis (TecharoHQ) — открытый «веб-фаервол», который вешает вычислительный челлендж перед апстримом и умеет держать allow-list для полезных ботов вроде Internet Archive. Проект живой и популярный — больше 21 тысячи звёзд на GitHub.
Ставится перед вашим приложением как обычный обратный прокси, разворачивается в Docker.
Цена высокая и её нужно понимать заранее: proof-of-work требует исполнения JavaScript. Значит, отваливаются RSS-читалки, поисковые превью, ваши же API-клиенты, мобильные приложения, ссылочные боты мессенджеров и пользователи с отключённым JS. Anubis сами авторы называют «ядерным ответом» — вариантом для тех, кому остальное недоступно.
Есть и куда более дешёвый способ утяжелить жизнь скраперу, если у вас самохост: не выдавать 403, а отдавать медленно. limit_rate 10k для помеченных клиентов не ломает ничего, что уже работает, но делает выкачку миллиона страниц экономически бессмысленной.
Отдельный сюжет: не сделайте хуже сами себе
Самая дорогая ошибка кейса — не в правилах, а в средстве измерения. Скрипт JS-детекции, который автор поставил ради классификации трафика, добавил 2 875 мс к загрузке на мобильных и уронил Lighthouse до 58. То есть ради борьбы за трафик была испорчена скорость сайта для тех самых живых 0,5 %, ради которых всё затевалось. Скрипт выключили 5 августа.
Порядок внедрения, который не сломает вам сайт:
- Неделя наблюдения без блокировок: разберитесь, кто вообще к вам ходит (
awk '{print $12}' access.log | sort | uniq -c | sort -rn | head -30по User-Agent). robots.txt— сразу, он бесплатен.- Блок по User-Agent для явных SEO- и ИИ-краулеров — это снимет большую часть счёта.
- Ограничение скорости с
burstи правильным real_ip. - Allow-list собственных интеграций и мониторинга — до, а не после.
- Челлендж для дата-центровых ASN.
- Гео- и версионные правила — только в режиме логирования сначала, с оценкой потерь.
- Proof-of-work — последним и только если предыдущее не помогло.
И измеряйте не «сколько заблокировано», а два числа: счёт за трафик и время ответа для живых пользователей. Первое должно падать, второе — не расти.
Ещё одна честная мысль напоследок. Полностью выиграть эту войну нельзя: резидентные ботнеты через домашние провайдерские IP выглядят как обычные посетители, и в кейсе июльская волна пришла именно так — с американских бытовых адресов, после того как страновые правила были включены. Реалистичная цель не «ноль ботов», а «предсказуемый счёт и живой сайт». Всё, что сверх этого, обычно оплачивается вашими же читателями.
Источники
- Cloudflare Blog, «Content Independence Day, one year on» (1 июля 2026): Content Independence Day, one year on- building the business model for the agentic Internet | Cloudflare Blog
- Cloudflare Radar, Bot Traffic: https://radar.cloudflare.com/bots
- Полевой кейс с выгрузками логов (7 августа 2026): https://patronview.com/news/99-percent-of-my-website-traffic-is-bots/
- Anubis (TecharoHQ): GitHub - TecharoHQ/anubis: Weighs the soul of incoming HTTP requests to stop AI crawlers · GitHub
- nginx, модуль limit_req: Module ngx_http_limit_req_module
Смежные темы на форуме: UFW-Docker: как закрыть порты Docker-контейнеров и настроить файрвол, Homelab-стек 2026: что реально self-хостят.
Интересно свести статистику по форуму: какая у вас доля ботов в логах и что из перечисленного вы уже включили? И отдельный вопрос к тем, кто ставил Anubis или похожий proof-of-work — сколько живых пользователей пожаловалось в первую неделю?

