A crowd of hand-drawn robots with a single blue human waving in the middle, labelled the only human
Это я машу вам, потому что синий — один из моих любимых цветов

Если вы хотите украсть мои данные, то начните с этой статьи! В ней подробно рассказывается, какие правила файрволла я использую, чтобы упростить вам их обход.

Конечно, я шучу. Мне даже неизвестно, читают ли веб‑краулеры посты, чтобы узнавать такую информацию.

Но я целый год занимался борьбой с ботами в своей базе данных филантропов PatronView. Когда пишешь код при помощи ИИ‑агентов, такому никто не научит, поэтому я решил поделиться полученными знаниями.

Вот некоторые факты, о которых ниже будет рассказано подробнее:

  • Всего за один день к моему сайту обратились 3,6 миллиона запросов китайских ботов.

  • Cloudflare сообщает, что краулеры Anthropic выполняют примерно три тысячи операций краулинга на одного приведённого посетителя. У меня этот показатель составил 35 тысяч:1.

  • Два дня назад я заблокировал поисковый ИИ‑краулер Amazon. Он считывал по 117 тысяч страниц в день, но не направил мне ни одного посетителя.

  • Показатель решения моей CAPTCHA равен 0,24%. Боты даже не пытаются её решать.

  • В конце перечислены все используемые мной правила файрволла.

214 загрузок страниц ботами на каждого человека

На неделе публикации этого поста мой сервер ответил на 2,5 миллиона запросов из внешнего мира и передал 1,28 миллиона целых страниц. Но в моей статистике посетителей зафиксировано всего 5977 просмотров страниц.

На каждую фиксируемую мной загрузку страницы приходится примерно 214 загрузок, которые я не вижу.

Отсюда и взялось название статьи. 5977 просмотров страниц людьми из 1,28 миллиона переданных страниц — это меньше половины процента. То есть я даже округлил долю ботов в меньшую сторону.

Синий квадрат — это наблюдаемый мной трафик. Серые квадраты — это то, что ломится ко мне на сервер. Для аналитики я использую Plausible Community Edition на собственном хостинге, а она считает только посетителей, у которых выполняется JavaScript. Почти ни у одного бота его нет.

Судя по статистике посетителей, мой сайт довольно скромный, примерно 500 посетителей в день. Но мой сервер каждую неделю отвечает на миллионы реальных запросов.

Если смотреть только на статистику посетителей из JavaScript‑инструмента наподобие Plausible, Fathom или Google Analytics, то вы понятия не будете иметь, кто обращается к вашему серверу. Не знал этого и я.

Первый ботнет

PatronView — это база данных американских филантропов, которую я собрал при помощи разведки разного уровня. Она состоит из 1,5 миллиона страниц уникальных профилей, созданных по данным форм 990 Налогового управления США, публичным спискам доноров и ежегодным отчётам.

И да, мой сайт получает эти данные скрейпингом публичных документов. То есть я скрейпер, который написал пост с жалобами на скрейперов. Я знаю, как это звучит. Для протокола скажу, что скрейпинг своих источников я выполняю несколько раз в год, а не тысячи раз в день.

С самого открытия сайта его одолевали SEO‑краулеры наподобие SemrushBot, AhrefsBot, MJ12bot и DataForSEOBot, снова и снова обыскивающие каждую страницу. Я заблокировал их в robots.txt, а затем на уровне Cloudflare при помощи правил безопасности, и это стало моим первым шагом в этом приключении.

В ноябре 2025 года за несколько дней у меня появилось четыре тысячи «посетителей». Каждый из них посетил ровно одну страницу с показателем отказов в 99%. Ещё более наглядным было то, что у них не было источника ссылки, что обычно бывает самым очевидным признаком бота. И они краулили только страницы моего фонда (наподобие этойэтой и этой), на которые заходили только 10% реальных посетителей. Но эти четыре тысячи ботов были только разогревом.

День, когда пришёл Китай

22 апреля мой сайт получил 3,6 миллиона запросов. Они поступили с 361 844 уникальных IP‑адресов, и почти все из них находились в Китае.

A hand-drawn Chinese dragon coiled around a neoclassical museum building marked PatronView. The dragon's entire body is made of hundreds of small red robots linked nose to tail, some carrying tiny red flags. A single small human in a blue outfit stands on the steps below.
Я попытался представить, как выглядели все эти китайские боты. Прошу прощения за клише с красным драконом!

Cloudflare Managed Challenge (невидимая CAPTCHA) защитила от 1,18 миллионов запросов за первые десять часов. Тем не менее, пугающая доля этих китайских ботов проходила защиту.

Запросы по дням апреля 2026 года. 23 апреля я включил блокировку для всего Китая, и сайту сразу полегчало.
Запросы по дням апреля 2026 года. 23 апреля я включил блокировку для всего Китая, и сайту сразу полегчало.
Cloudflare security events chart totalling 1.18M managed challenges. The line sits flat at zero until about 15:00, then jumps to a jagged band between 14,000 and 25,000 events per interval and stays there overnight.
События безопасности Cloudflare во время шквала запросов: 1,18 миллиона managed challenge примерно за 10 часов.

Поэтому я сделал то, что делать не рекомендуется: заблокировал весь Китай в edge‑сети. Спустя несколько дней началась копия этой волны из Вьетнама, поэтому я заблокировал и Вьетнам. А потом был Сингапур.

Мой сайт — это база данных доноров произведений искусства в американские музеи на английском языке. Реальный поисковый трафик состоит на 95,9% из США и на 1,3% из Канады.

Когда я написал твит о шквале китайского веб‑трафика, ответы показали, что с этим борются все:

  • Мэтт Полсон из MarketBeat: «Не забудьте добавить в список Россию».

  • Джек Эллис из Fathom Analytics: «Последние полгода мы наблюдаем огромный трафик спама из Китая. Скажу, что сейчас наши клиенты наблюдают абсолютное снижение китайского трафика».

  • Джереми Брандт: «Наш список заблокированных стран для всех наших сайтов на Cloudflare весьма... длинный».

  • Крис Левицки: «Я решил перестать бороться с этим. Меры защиты сильно повышали сложность моей жизни».

  • Родриго Рокко: «В последнее время творится настоящее безумие, они используют тысячи резидентских IP, каждый из которых делает по одному вызову, поэтому их сложно остановить».

Запомните последнее сообщение, оно мне ещё аукнется.

Коэффициент Claude

Cloudflare заявила, что соотношение краулеров Anthropic составляет примерно три тысячи скрауленных страниц на одного посетителя. В июне я замерил свои показатели: 35 тысяч к 1.

Поясню, что это значит: на каждого пользователя, которого мне отправил Claude, его краулер прочитал 35 тысяч моих страниц.

A hand-drawn robot walking away while towing a cart stacked with a tower of paper so tall it runs off the top of the frame, labelled 35,000 pages. On its other open palm it holds one tiny human in a blue outfit, labelled 1 visitor.
Я не добавил логотип Claude, чтобы меня не засудили за нарушение копирайта! Но представьте, что бота зовут Claude.

Этот показатель я нашёл в дэшборде ИИ‑краулеров Cloudflare, см. изображение ниже. Поисковый краулер Anthropic Claude-SearchBot запросил за одну неделю 420 680 страниц. За ту же неделю Claude отправил мне 12 живых посетителей, что замерено Claude-User — отдельным user‑agent, которого Anthropic отправляет мне, когда живой человек просит Claude загрузить страницу. Это вот та плоская линия внизу.

Cloudflare AI crawler dashboard for one week in June. Claude-SearchBot: 420.68k requests, a dense line oscillating between roughly 1,500 and 3,500 per hour. Claude-User: 12, a flat line pinned to the bottom axis.
Дэшборд ИИ‑краулеров Cloudflare за одну неделю июня. Claude‑SearchBot: 420,68 тысяч запросов — линия, колеблющаяся примерно от 1500 до 3500 в час. Claude‑User: 12, плоская линия, прижавшаяся к горизонтальной оси.

Ситуация во вкладке трафика была ещё хуже. На этой неделе я передал 4,63 ГБ боту и 175 КБ людям, которых он мне отправил:

The same dashboard on the bandwidth tab. Claude-SearchBot: 4.63 GB, a line running between roughly 20 MB and 40 MB per hour all week. Claude-User: 175.56 kB, flat against the bottom axis.
Вкладка трафика того же дэшборда. Claude‑SearchBot: 4,63 ГБ, линия, всю неделю колеблющаяся примерно от 20 МБ до 40 МБ в час. Claude‑User: 175,56 КБ, тоже плоская прямая на горизонтальной оси.

Как и многие, я люблю Anthropic и Claude. Мой веб‑сайт был создан с помощью Claude Code, и я пользуюсь Claude Code для улучшения правил безопасности Cloudflare API. Жалобы на то, что Claude скрейпит сайт, который я создал с его помощью Claude — это тот уровень иронии, с которым я смирился.

Но Anthropic и Claude не отправляли мне трафик, поэтому я заблокировал Claude-SearchBot в файрволле.

И они уважают это решение! Усилия краулера упали с 60 тысяч запросов в день до примерно 25 попыток в день. Вежливые компании‑разработчики ИИ действительно согласны на 403. (Это веб‑ответ «доступ запрещён».)

Отношение скрауленных страниц к привлечённым посетителям

Эта блокировка дала мне метрику, которую я теперь использую для всего: отношение скрауленных страниц к привлечённым посетителям. Google поступает по справедливости, Bing в девять раз хуже, но всё равно оправдывает себя. ИИ‑краулеры, обучающие LLM, далеки от их показателей:

Замеренные мной показатели. Google: 46 краулингов на одного отправленного посетителя. Amazon: бесконечность.
Замеренные мной показатели. Google: 46 краулингов на одного отправленного посетителя. Amazon: бесконечность.

В процессе подготовки материалов к посту я обнаружил, что поисковый ИИ‑краулер Amazon Amzn-SearchBot теперь стал моим краулером номер 1: примерно 117 тысяч запросов в день. Это почти вдвое больше темпа Claude за июнь. Он собирает информацию для ответов ИИ‑помощников Rufus и Alexa, поэтому никогда не отправляет веб‑трафик и не позволяет пользователям подписаться на мой список рассылки. Я сомневаюсь даже, что он указывает авторство и обратные ссылки.

Поэтому два дня назад я аналогичным образом заблокировал его. Это заняло две минуты.

Защите сильно поспособствовал и Cloudflare AI Crawl Control. Он блокирует заявляемых ботов обучения (GPTBot, ClaudeBot, CCBot, Bytespider) даже ещё до применения моих правил.

В том же дэшборде видно, что Bingbot выполняет 158 610 запросов и приводит 680 посетителей. Мои показатели перенаправленных из Bing посетителей растут, так что я с радуюсь, когда он меня скрейпит. И ещё видно, что после моей блокировки показатели Anthropic упали до 47 запросов.

Скриншот дэшборда краулеров
Скриншот дэшборда краулеров

Волна американских датацентров

В июле ко мне начали стучаться новые боты (или старые скрейперы адаптировались к моим географическим правилам). Теперь они стали приходить из США.

Стабильная волна безголовых браузеров Chrome на AWS. Они выполняли JavaScript и загрязнили мою статистику тысячами фальшивых «посетителей».

A hand-drawn museum building with blue and gray robots swarming it from every direction, climbing the columns and sitting on the steps, with arrows showing more pouring in from both sides. One oversized human sits alone on the roof looking overwhelmed.

Решил я проблему самой надёжным правилом: challenge для всех датацентров.

Настоящие читатели заходят с Comcast и T‑Mobile, и почти никто из них не использует IP‑адреса AWS us-east-1. Исключения из этого правила — пользователи, сидящие через облачные рабочие столы или VPN, и поэтому правило реализует challenge, а не блокировку.

День, когда я отключил CAPTCHA

Функция JavaScript Detections Cloudflare вставляла на каждую страницу скрипт challenge. Наверно, в какой‑то момент я её включил? А может, она должна была помогать? Но узнал я об этом на этой неделе, когда пытался повысить оценку скорости своего сайта.

На телефоне из среднего ценового диапазона этот скрипт стоил лишних 2875 миллисекунд. Весь собственный JavaScript сайта выполняется за 278 мс. Функция защиты стала самой веской причиной того, что оценка Lighthouse для мобильных была равна 58, а на моём тарифе Cloudflare этот вердикт даже не читаем по правилам файрволла. То есть я получал штраф в 40 очков за телеметрию, которую никто не мог прочитать.

5 августа я отключил эту функцию и за час оценка Lighthouse поднялась до 99.

Спустя пять часов скрейпер Microsoft Azure запросил за час 23 тысячи страниц с более чем 80 IP‑адресов; каждый из запросов вежливо оставался в пределах установленной мной частоты. То есть можно прийти к выводу, что JavaScript Detections работал, но теперь я его отключил, и мне нужен был новый тариф.

К тому же появился ботнет резидентных IP, выдающий себя за Chrome версий с 118 по 120. Это версии из 2023 года, навсегда сохранившиеся в тулките скрейпинга.

Резидентные ботнеты

Резидентный ботнет скрейпит трафик, маршрутизируемый через тысячи обычных домашних Интернет‑соединений, арендуемые по запросу прокси‑компаний. Каждый запрос выглядит как реальный человек, пользующийся реальным провайдером.

Я уже видел подобное. В ноябре 2025 года я заметил в статистике посетителей нечто странное: десятки стран ежедневно посещали мой сайт почти равными количествами посетителей. Вот скриншот из моей аналитики:

Analytics table of visitors by country. United States 640 (31.9%), Germany 215, Vietnam 100, Russia 91, Italy 77, Canada 74, UK 70, then a long tail where roughly a dozen countries — Indonesia, Japan, Chile, Brazil, Hong Kong, Lithuania, Malaysia, South Africa — all sit within a few visitors of each other around 33 to 36.
Разбивка по странам из моего твита за ноябрь 2025 года. Оцените разброс: Индонезия, Япония, Чили, Бразилия, Гонконг почти с одинаковым количеством посетителей.

Такое равное распределение по сорока странам — отличительный признак арендованной прокси‑сети: тысячи выглядящих реальными соединений, работающих на одного заказчика. Именно об этом предупреждал Родриго в ответах на мой твит.

Спустя девять месяцев эта картина повторилась, но на этот раз с американскими домашними подключениями. Два моих лучших правила сортировали трафик по его источнику. Одно выполняло challenge всех, кто находится вне Северной Америки. Другое реализовывало challenge всех запросов, поступающих от крупных поставщиков облачных сервисов. Этот новый трафик не относился ни к одной из категорий. Например, он поступал от домашнего пользователя из Огайо с провайдером Spectrum, поэтому ни одно из правил не помогало. Это можно наблюдать на графике уникальных IP‑адресов, ежедневно обращающихся к моему сайту в июле:

Я отреагировал двумя новыми правилами. Во‑первых, Azure и другие крупные облачные провайдеры присоединились к списку challenge датацентров.

Ещё я добавил своё любимое тупое правило: при помощи challenge проверять древние версии браузеров. Chrome версий с 100 по 130 получает CAPTCHA, то же самое со старым Firefox. Сначала я проверил свой реальный трафик: всего 0,54% моих реальных поисковых посетителей заходит через такие старые браузеры, и большинство их них пользуется Firefox 115 ESR, который я исключил из списка. Оставшиеся в прошлом ботнеты не проходят это правило.

Мои правила Cloudflare Security

Всё работает на Cloudflare WAF. Я выбрал тариф Pro за $25 в месяц. Логику можно применить к любому современному файрволлу. Вот правила, которыми я пользуюсь сегодня:

  1. Блокировка Китая и Вьетнама. См. выше. Блокировка стран добавляет нулевые задержки для всех остальных.

  2. Блокировка 12 SEO‑краулеров user‑agent. Semrush, Ahrefs, MJ12bot, DotBot, BLEXBot, Barkrowler и подобные им. Они честно идентифицируют себя, спасибо им за это.

  3. Блокировка ИИ‑краулеров с плохим соотношением по user‑agent. На текущий момент: Claude-SearchBot и Amzn-SearchBot. В то же время они могут читать robots.txt, поэтому знают, что их здесь не ждут. Мой robots.txt отдельно приказывает GPTBot, ClaudeBot, CCBot, Bytespider и другим объявленным ботам обучения уйти. Вежливые боты подчиняются.

  4. Все правила ниже пропускаются для верифицированных ботов. Cloudflare криптографически верифицирует Googlebot, Bingbot и Applebot. Порядок здесь важен: этот пропуск находится после моих правил блокировки. Заблокированный мной «верифицированный» бот остаётся заблокированным, но ни одна challenge не отображается боту Google.

  5. Challenge для всех континентов, кроме Северной Америки. Довольно тупое правило, но я считаю его крайне важным. 97% моей аудитории находится в Северной Америке. Все остальные получают по одной невидимой CAPTCHA раз в 45 минут.

  6. Challenge пустых user‑agents. Ни один браузер реального посетителя не отправит пустую строку user‑agent.

  7. Challenge ASN 46 датацентров. Люди не посещают сайты через AWS (обычно).

  8. Challenge устаревших браузеров. Правило для застрявших в прошлом ботнетов.

  9. Ограничение частоты: 30 запросов страниц за 10 секунд на один IP. Статические файлы исключаются, поэтому правило никогда не задействуется при обычной загрузке страниц.

Кроме того, в моём robots.txt поимённо заблокированы все 12 SEO‑краулеров, а Cloudflare добавляет в edge‑сети поверх собственные блокировки обучения ИИ. Актуальный файл можно посмотреть здесь: patronview.com/robots.txt.

Мешают ли эти CAPTCHA реальным людям? Практически нет.

За последние 48 часов Cloudflare отправила 106 437 challenge. Решено было 252. Доля решённых составила 0,24%.

Сингапур: отправлено 7089 challenge, решено 3. Надеюсь, эти три человека нашли то, что искали.
Сингапур: отправлено 7089 challenge, решено 3. Надеюсь, эти три человека нашли то, что искали.

Мои затраты на сервер

Мой сайт работает на Cloudflare Workers с базой данных D1 и кэшем KV edge‑сети. Большинство запросов ботов попадает в кэш и стоит доли цента. Обычно мой счёт за весь сайт составляет примерно $90 в месяц. В один особо плохой месяц он вырос примерно на 500%.

99% счёта потребляют боты, а на 100% оплачиваю его я.

Реальные затраты неочевидны:

  • Моя статистика посетителей настолько загрязнилась, что я не мог доверять собственным показателям. Это навредило мне больше всего. Я пытаюсь делать бизнес. Мне нужно знать, что читают на моём сайте реальные люди, чтобы знать, что создавать дальше, но я не могу отличить их от ботов.

  • В один день всплеск промахов кэша при запросах Azure привёл к тому, что реальные посетители получали ошибки 504.

Если бы я находился на традиционном VPS и платил за CPU и трафик, то миллионы еженедельных запросов, более 99% из которых составляли боты, стали бы экзистенциальной проблемой. На edge‑платформе они остаются лишь раздражающим фактором.

Честно говоря, в высоких счетах частично виноват я сам. Сейчас я продолжаю подчищать неэффективные запросы и настройки кэша, из‑за которых ситуация в месяцы пиковых запросов ухудшилась. Я всё ещё думаю о переходе на VPS и хостинге собственной локальной базы данных, но сопротивляюсь этому соблазну, потому что мне нравится экспериментировать с платформой Cloudflare.

Думаю, что проблема скрейпинга усугубляется из‑за этой асимметрии. Затраты на скрейперов упали быстрее, чем улучшилась защита.

Что делать, если это произошло с вами

  1. Изучайте логи сервера, а не статистику посетителей. В статистике отображается менее половины процента от реальной картины.

  2. Блокируйте по ASN, а не по IP. Ротация IP происходит постоянно, а сети остаются одними и теми же.

  3. Если посетителями могут быть люди, используйте challenge, а не блокировку. Managed challenge невидима для большинства реальных людей. К тому же она позволяет замерять показатели.

  4. Смотрите на долю решённых challenge. Доля в 0,2% решённых означает, что к вам заходят боты, поэтому это правило нужно оставить. Доля в 30% означает, что страдают живые люди, а значит, правило нужно менять.

  5. Профилируйте затраты на функции защиты. В моём случае скрипт CAPTCHA был затратнее всего сайта.

Заключение

Сработало ли всё это?

За 24 часа после внедрения этих правил Cloudflare заблокировала 46 729 запросов. 43 150 из них поступило от одного только краулера Amazon, который всё ещё долбился в блокировку, установленную за два дня до этого.

Также сервис отправил 63 969 challenge, из которых было решено всего 552.

То есть правила работают. Надеюсь, они продолжат пропускать нужных мне ботов, а также людей. По крайней мере, какое‑то время.

Должен сказать, что это похоже на игру «Ударь крота». Каждые несколько недель мне приходится тратить время на борьбу с чем‑то новым.

A hand-drawn arcade cabinet lettered whack-a-bot with a small orange Cloudflare cloud beside the name. Robot heads pop up out of holes all over the board. A man in a blue outfit, seen from behind, swings a mallet at one of them.

Здесь есть настоящий конфликт: мне нужно, чтобы Google, Bing и DuckDuckGo краулили мой сайт и присылали мне новых читателей, но я не хочу, чтобы с него скрейпили данные все остальные. При этом резидентные ботнеты уже могут решать CAPTCHA и при этом выглядят как реальные браузеры. Блокировать их на уровне сети невозможно.

Ситуация со скрейпингом ухудшается, потому он становится дешевле, поэтому я считаю, что единственное решение проблемы — экономическое. Cloudflare создаёт систему pay‑per‑crawl, при которой краулеры платят за запрос в edge‑сети. Я с радостью продам Amazon эти 3,5 миллиона страниц в месяц по сходной цене.

А пока такой рынок не возник, я пользуюсь простым правилом: краулер, не отправляющий мне посетителей, блокируется.

Если вы тоже испытываете подобные проблемы, то напишите мне: hello@nickgray.net, хотелось бы сравнить наши показатели.

Приложение: выражения правил

А теперь информация для технарей. Вот реальные выражения описанных выше правил, скопированные из моей зоны Cloudflare с помощью API. Они написаны на языке правил Cloudflare; наверно, с небольшими доработками их можно портировать в большинство файрволлов. Я убрал лишь пару вещей, связанных с поддержанием внутреннего порядка.

Блокировка Китая и Вьетнама. Два отдельных правила, действие: Block.

(ip.src.country in {"CN"})
(ip.src.country eq "VN")

Блокировка SEO‑краулеров по user‑agent. Действие: Block.

(lower(http.user_agent) contains "barkrowler") or
(lower(http.user_agent) contains "thinkbot") or
(lower(http.user_agent) contains "brightbot") or
(lower(http.user_agent) contains "mj12bot") or
(lower(http.user_agent) contains "semrushbot") or
(lower(http.user_agent) contains "siteauditbot") or
(lower(http.user_agent) contains "ahrefsbot") or
(lower(http.user_agent) contains "ahrefssiteaudit") or
(lower(http.user_agent) contains "dataforseobot") or
(lower(http.user_agent) contains "dotbot") or
(lower(http.user_agent) contains "blexbot") or
(lower(http.user_agent) contains "splitsignalbot")

Блокировка ИИ‑краулеров с плохим соотношением. Действие: Block. Обратите внимание на небольшое исключение: заблокированный краулер может читать robots.txt — тот самый файл, сообщающий о причинах его блокировки.

(http.request.uri.path ne "/robots.txt" and
  (http.user_agent contains "Claude-SearchBot" or
   http.user_agent contains "Amzn-SearchBot"))

Пропуск для верифицированных ботов всего, что ниже. Действие: Skip (оставшиеся правила + ограничение по частоте). Одно выражение. Здесь важен порядок: правило находится после блокировок выше, поэтому заблокированный бот остаётся заблокированным, зато Googlebot никогда не видит challenge.

(cf.client.bot)

Challenge для всех континентов, кроме Северной Америки. Действие: Managed Challenge. Исключение связано с тем, что Гуам, Американское Самоа и Северные Марианские Острова — это территории США с кодами континента Океания. Там живут реальные американские читатели. T1 — это сеть Tor.

((ip.src.asnum in {212238 139341 9009}) or
 (ip.src.continent in {"AF" "AN" "AS" "OC" "SA" "T1" "EU"}))
and not cf.client.bot
and not (ip.src.country in {"GU" "AS" "MP"})

Challenge пустых user‑agents. Действие: Managed Challenge.

(http.user_agent eq "") and not cf.client.bot

Challenge датацентров и облачных ASN. Действие: Managed Challenge. AWS, Azure, Google Cloud, Oracle, Alibaba, DigitalOcean, Vultr, Linode, OVH, Hetzner, Hurricane Electric и все хостинг‑сети, которые я поймал на скрейпинге.

(ip.src.asnum in {14618 16509 8987 396982 14061 20473 63949
  16276 24940 213230 55286 64286 36352 18779 40676 397423
  46261 399073 2914 13332 30058 11798 21769 62874 202015
  55933 393886 27411 396362 395954 396190 19148 30633 8075
  8070 8068 8069 31898 45102 37963 36351 136907 45090 207990
  17497 6939}) and not cf.client.bot

Challenge устаревших версий браузеров. Действие: Managed Challenge. В тарифе Pro Cloudflare нет возможности использования regex в выражениях правил (эта функция есть в Business), поэтому пришлось задействовать 55 условий contains. Firefox 115 пропущен, потому что это старый релиз ESR, с которым всё ещё работают мои реальные посетители, оставшиеся на старых операционных системах. Каждый квартал при устаревании версий нужно вносить в это правило изменения.

Полное выражение
(http.user_agent contains "Chrome/100." or
 http.user_agent contains "Chrome/101." or
 http.user_agent contains "Chrome/102." or
 http.user_agent contains "Chrome/103." or
 http.user_agent contains "Chrome/104." or
 http.user_agent contains "Chrome/105." or
 http.user_agent contains "Chrome/106." or
 http.user_agent contains "Chrome/107." or
 http.user_agent contains "Chrome/108." or
 http.user_agent contains "Chrome/109." or
 http.user_agent contains "Chrome/110." or
 http.user_agent contains "Chrome/111." or
 http.user_agent contains "Chrome/112." or
 http.user_agent contains "Chrome/113." or
 http.user_agent contains "Chrome/114." or
 http.user_agent contains "Chrome/115." or
 http.user_agent contains "Chrome/116." or
 http.user_agent contains "Chrome/117." or
 http.user_agent contains "Chrome/118." or
 http.user_agent contains "Chrome/119." or
 http.user_agent contains "Chrome/120." or
 http.user_agent contains "Chrome/121." or
 http.user_agent contains "Chrome/122." or
 http.user_agent contains "Chrome/123." or
 http.user_agent contains "Chrome/124." or
 http.user_agent contains "Chrome/125." or
 http.user_agent contains "Chrome/126." or
 http.user_agent contains "Chrome/127." or
 http.user_agent contains "Chrome/128." or
 http.user_agent contains "Chrome/129." or
 http.user_agent contains "Chrome/130." or
 http.user_agent contains "Firefox/100." or
 http.user_agent contains "Firefox/101." or
 http.user_agent contains "Firefox/102." or
 http.user_agent contains "Firefox/103." or
 http.user_agent contains "Firefox/104." or
 http.user_agent contains "Firefox/105." or
 http.user_agent contains "Firefox/106." or
 http.user_agent contains "Firefox/107." or
 http.user_agent contains "Firefox/108." or
 http.user_agent contains "Firefox/109." or
 http.user_agent contains "Firefox/110." or
 http.user_agent contains "Firefox/111." or
 http.user_agent contains "Firefox/112." or
 http.user_agent contains "Firefox/113." or
 http.user_agent contains "Firefox/114." or
 http.user_agent contains "Firefox/116." or
 http.user_agent contains "Firefox/117." or
 http.user_agent contains "Firefox/118." or
 http.user_agent contains "Firefox/119." or
 http.user_agent contains "Firefox/120." or
 http.user_agent contains "Firefox/121." or
 http.user_agent contains "Firefox/122." or
 http.user_agent contains "Firefox/123." or
 http.user_agent contains "Firefox/124.")
and not cf.client.bot

Ограничение частоты. Действие: Managed Challenge, когда один IP превышает 30 запросов за 10 секунд. Считаются только пути без расширений, поэтому сорок изображений и таблиц стилей при обычной загрузке страниц никогда не приводят к срабатыванию этого правила. (Строго говоря, счётчик работает для IP на каждый датацентр Cloudflare, поэтому распределённый ботнет может обойти это ограничение. Правило отлавливает только самых ленивых.)

(http.request.uri.path.extension eq "") and not cf.client.bot

И одно дополнительное правило, которое в обычном состоянии отключено: кнопка паники. То же выражение, что и для ограничения частоты, но в виде простого Managed Challenge при каждом запросе страницы от всех, кто не относится к верифицированным ботам. Когда резко возрастает нагрузка на сайт со стороны скрейперов, я включаю его, жду, пока поток схлынет, а через час снова отключаю.

Комментарии (88)


  1. Octagon77
    09.08.2026 10:26

    Корень проблемы в том, что за исходящий трафик платит владелец сервера. Достаточно минимальных изменений и проблема уйдёт - либо Вам будет плевать кто и сколько скачивает страницы, а то и чем больше - тем лучше будет, либо боты сами будут следить за тем, чтобы не активничать.

    Можно придумать много схем реализации, каждая со своими интересантами, но они внедряются, ибо

    • интересанты уже толкаются локтями, хотя пока это и не бросается в глаза

    • можно спровоцировать переход на прямой обмен сообщениями без централизации, типа как в старину наука развивалась потому, что учёные писали друг-другу письма

    Сама по себе борьба с ботами ничем обоснована быть не может, ибо боты действуют на благо Франции от имени и по поручению людей.


    1. lostero
      09.08.2026 10:26

      Физика: "иду я нафиг".

      "Сама по себе борьба против участия мужчин в соревнованиях для женщин ничем обоснована быть не может, ибо мужчины действуют на благо Франции от имени и по поручению женщин."

      По теме статьи: сеть на доверии всегда будет служить злоумышленникам (цена свободы).


      1. achekalin
        09.08.2026 10:26

        Как говорится, а что автор оргинального поста ожидал?

        Он построил 1,5 миллиона публичных страниц с профилями, причём сам набрал данные скрейпингом чужих открытых источников, имеет около 500 человеческих посетителей в день — и внезапно обнаружил, что его огромную машиночитаемую базу данных читают машины. Ну надо же! Для такого сайта как раз человек и должен быть совершенно диким посетителем. Это не «99% современного веба — боты», это «я построил роскошную кормушку для краулеров».

        Вот чего не отнять в смысле выводов: ИИ-краулеры действительно изменили экономику скрейпинга. То есть старое соглашение «Google качает пачкой мои страницы, зато приводит покупателей» у генеративного поиска действительно ломается.

        Но тут, похоже, нужно не запретами бороться, а выстраиванием кеша. Думаю, собери он страницы статикой (да, 1.5 млн файлов статикой - это не суперобъём), было бы проще. Автор полгода совершенствует систему распознавания незваных гостей, вместо того чтобы сначала сделать так, чтобы незваный гость мог взять бесплатную брошюру у двери, но не включая ему свет, кондиционер и SQL-сервер.

        P.S. Cloudflare Workers сейчас включает 10 млн запросов в месяц, сверх этого запросы стоят $0,30 за миллион, а исходящий трафик вообще не тарифицируется. Поэтому фраза «боты заставляют меня платить $90» сама по себе ничего не объясняет. Деньги съедают вычисления, D1/KV и архитектура запросов — и автор чуть дальше сам признаётся в неэффективных запросах и настройках кэша. Т.е. человек сначала сделал так, чтобы просмотр публичной страницы был платной серверной операцией, а потом долго и героически защищает её файрволлом от просмотра.


        1. lostero
          09.08.2026 10:26

          Я смотрю на это с точки зрения физики. Любой запрос стоит ресурсов (платный). Чем раньше отрубишь запрос тем меньше ресурсов серверам нужно потратить (во всей цепочке прохождения пакета от клиента до сервера). Любой запрос, что имеет околонулевую вероятность конверсии в оплату, можно слать в лес, если брать только экономический баланс. И там 3.6 млн. "китайцев" в сутки ломилось, т.е. в ~$10 в месяц сверху бы ему это встало только на запросах, если не считать, что это число может вырасти (всякие сайты с БЖУ и пр. фигнёй парсят часто и иногда жёстко). CF тоже не впёрлось отдавать по каждому бесплатному клиенту 10 млн. запросов в день, поэтому у них там и своя фильтрация есть.

          На пустой сервак у меня иногда до 100 уникальных IPшников пробивается с ipset с чёрными списками (подсетями). С серыми списками перед чёрными проходит максимум пара десятков. Без этого логи они забивают быстро, ненужной фигнёй (без учёта простого дропа по портам и лимитам). Большая часть - запросы на уязвимые url всяких CMS/.NET/Python/NodeJS и пр. серверов.


  1. Deroswent
    09.08.2026 10:26

    У меня приблизительно такие же проблемы, но у меня свой bare metal сервер и на счет это не вляет.

    Есть один момент, о котором автор не упомянул, и как мне кажется выстрелил себе в ногу блокировкой ДЦ - это любые email, содержащие ссылки на сайт. Поясню:
    когда отправляется любое письмо со ссылками/картинками на ваш сайт (не важно каким способом отправляется и откуда, например отправка может быть не из вашего сайта, а например из mailchimp) - почтовые сервера получателя (например gmail, yahoo и т.д.) не только сканируют письма на вирусы, но и проверяют буквально каждую ссылку в нем. И делают это ОЧЕНЬ агресивно. Они отправляют HEAD запрос на каждую ссылку в каждом письме. Например разослав красивое html письмо с картинками и новостями сайта на 5000 ардесов вы получите мощный ДДОС из около 50к HEAD запросов за несколько минут (при условии что в письме 10 ссылока на сайт). И повторный всплеск трафика, но уже GET запросов, когда ваши письма начнут массово открывать (и почтовый клиент будет подтяшивать контент с вашего сайта). А открывают письма в основном в веб-клиенте.

    А теперь угадайте где размещаются большество почтовых серверов и почтовых веб клиентов? Правильно - в ТОПовых ДЦ США, которые автор заблокировал.

    Я наступил на эти грабли, когда тоже заблокировал крупные ДЦ и ефективность рассылок упала у меня на 90+%. Оказалось если ссылки в письме битые (HEAD не вернет 200) - почти все почтовики либо отправляют письмо в спам, либо вообще deffered. И даже если письмо доставилось, и его откроют - то оно будет не читаемым HTML мусором.

    Отдельная головная боль - локальные почтовые клиенты (Outlook, The Bat, Thunderbird и другие) - они скачивают письмо, и при открытии тянут контент с сайта из IP пользователя, но используя свои юзерагенты. И проверку JS - они не умеют. Блокировать их тоже нельзя так как по сути это реальные посетители. Но вот боты активно используют эти юзерагенты.

    И вишенка на торте - неторые почтовики используьт свои прокси для работы с письмами, вроде GoogleImageProxy, которые тоже имеют сотни тысяч ИП от ДЦ США.
    Вишенка номер два - проверка вообще может выполнятся из другого континента. Я часто вижу ситуацию после рассылки, когда основная масса запросов от почтовиков по ссылкам в письме прилетает из Британии или Нидерландов, при том что сайт и сервер в США и 99% посетителей из США.

    Это по сути касается любой рекламы/продвижения. Группа в FB, телеграм канал, и прочие - все будет тянуть контент из ДЦ США, а вы их заблокировали.


    1. Zalechi
      09.08.2026 10:26

      В конце указан e-mail автора оригинала. Можете поговорить.

      Классное дополнение автора комментария и статья раскрыла мне не известные до селе знаниях.


  1. FarmerGrinder
    09.08.2026 10:26

    Интересно как дальше интернет экономика будет развиваться на фоне того что хостить сайт на стороннем сервисе будет супер дорого из-за ботов.


    1. Deroswent
      09.08.2026 10:26

      Все будет нормально. Просто ваш подход - не верный. Автор борется с ветряными мельницами.
      Представьте, что ваш сайт вруг стал попульрный и все эти запросы от ботов - реальные пользователи. Ведь по сути это не взлом/ SQLinj, а обычные запросы контента. Что бы вы делали в этом случа? Правильный ответ - кеш!

      Мой сайт имеет реальных 5к посетителей в сутки, но обслуживает 3 миллиона запросов в сутки без увеличения стоимости хостинга и без увеличения нагрузки на сервере. Как? Да благодаря бесплатному тарифу CloudFlare, в котором есть edge cache, и 10 правил для его управления. Итого к серверу доходит около 100к запросов в сутки, что вполне нормально для 5к посетителей. Остальные 2,9М запросов и около 500 Gb трафика - отдаются из кеша CF (все цифры приведены без статики, js, css, картинок и т.д., только запросы к страницам). Все бесплатно.


      Там есть некоторые мелкие сложности, в основном связанные с URL param. Но это требует минимальных изменений на сайте, вроде заменить /?page=1 на /page/1. Но общая стратегия строится на принципе "кешировать все, кроме...".

      Например у вас интернет магазин на вордпресс + вукоммерс, создаем правило
      Bypass cache для
      (http.cookie contains "wordpress_logged_in_") or (http.cookie contains "woocommerce_items_in_cart") or (http.cookie contains "woocommerce_cart_hash") or (http.cookie contains "wp_woocommerce_session_") or (http.cookie contains "wordpress_sec_") or (http.cookie contains "wp-postpass_")
      и вуаля, ничего не кешируется для залогиненых пользователей, пользователей с товарами в корзине, с сессией вукомераса и т.д. Не кешируются админка, личные кабинеты и вся прочая "private" зона. Вся прелесь в том, что 99,99% ботов не умеют в кукис от слова совсем.
      не кешировать апи и фиды? изи
      http.request.uri.path contains “/wp-json” or http.request.uri.path contains “/wp-api”

      И такими исключениями вы выкидываете из кеша, все что не должно кешироватся. 10 правил хватает с головой (учтите, в одно правило можно запихнуть множество условий, ограничение - 4000 символов на правило, это очень много). Остальное - попадет в кеш CF и будет отдаватся с него, даже не обращаясь к вашему серверу. Картинки, страницы, js, css, шрифты - абсолютно все из кеша. Пусть хоть миллиард запросов от ботов, вы их не заметите, они не дойдут к серверу.


      Что то поменяли на какой то странице сайта и нужно очистить кеш на CF? Изи, у них мощнейшее АПИ для этого. Большенство CMS с коробки предоставляют функционал хуков. Если на вордпрессе изменили страницу/товар - это автоматически дергает хук. Вам осталось написать 20 строк кода, чтобы отправить запрос на АПИ очистки кеша для страницы которую выдал хук и все будет работать автоматически (говорят для этого есть даже официальный плагин от CF, но по слухам он полное говно и прохо поддерживается. Я не пробовал). Хоть каждые 5 минут обновляйте сайт, в кеше всегда будет свежая информация без ваших усилий.


      1. MountainGoat
        09.08.2026 10:26

        Проходит несколько лет и интернет становится де-факто частной собственностью CloudFlare. Где они и решают, что можно хостить, что нельзя, и кому.



      1. technik
        09.08.2026 10:26

        Вот полностью согласен, первое что пришло в голову при прочтении статьи, а автор думал использовать кеш? 90% проблем у него уйдут, как минимум со счетами если включит жёсткое кеширование.


      1. 2medic
        09.08.2026 10:26

        Мой сайт имеет реальных 5к посетителей в сутки, но обслуживает 3 миллиона запросов в сутки без увеличения стоимости хостинга и без увеличения нагрузки на сервере. Как? Да благодаря бесплатному тарифу CloudFlare, в котором есть edge cache, и 10 правил для его управления. Итого к серверу доходит около 100к запросов в сутки, что вполне нормально для 5к посетителей. Остальные 2,9М запросов и около 500 Gb трафика - отдаются из кеша CF (все цифры приведены без статики, js, css, картинок и т.д., только запросы к страницам). Все бесплатно.

        На мой древний сайтик, на который заходят только старожилы, тоже обрушился ботнет. У меня также была мысль использовать CF, но т.к. РКН борется с CF у посетителей сайта сайт перестал открываться. Извиняюсь за тавтологию. Каким образом вы сумели встроить CF в свой флоу?


        1. Deroswent
          09.08.2026 10:26

          Мои сайты, посетители, контент и инфраструктура и сервера никак не связаны с Россией и РНК. Более того, у меня РФ вообще перманентно заблокирована на CF, вместе с Китаем, Сингапуром и Индией. Не потому что меня беспокоят боты из этих стран, а потому что из них идет около 80% действительно вредоносных запросов (сканы уязвимостей, попытки sqlinj и тому подобное)


      1. vikarti
        09.08.2026 10:26

        Раз тут перепись :). есть у меня git.mydomain.com(на Forgejo), 99% там - зеркала разных интересных мне проектов. 7 млн хитов в месяц, 248k visitors, 314 Gb. Hetzner, SEMRush, OVH, Alibaba US, Microsoft. ИИ боты в основном.

        Проблем с потреблением ресурсов пока нет.


      1. select26
        09.08.2026 10:26

        Пусть хоть миллиард запросов от ботов, вы их не заметите, они не дойдут к серверу.

        А Потом прилетает мелкий поток на ваш API с random param, который пробивает любой кэш. Да еще и с разных IP, с 50 RPM, которые не матчат никакие правила, т.к. это уладывается в профиль легитимного поситителя.

        8)

        И тут уже приходится уже искать другие решения.


        1. Deroswent
          09.08.2026 10:26

          если вы оставляете ваши апи ендпоинты без ограничения rate limit и без ограниения доступа по IP (хотя это и на всех ендпоинтах возможно) - это исключительно ваша проблема. Rate limit + API endpoint это как Отче Наш же...


          1. select26
            09.08.2026 10:26

            Rate limit + API endpoint это как Отче Наш же...

            Воистину! Сразу видно опытного теоретика. )
            У вашего вышестоящего маршрутизатора не хватит портовой емкости, а у маршрутизатора вашего аплинка - просто не хватит сил переживать такой PPS.
            Ваш API и не узнает что была атака, и ваш мониторинг, даже если он и был, покажет в лучшем случае небольшой спайк, а потом полное отсутствие трафика.

            p.s. вы просто не представляете маштаб возможных атак, когда атакует серьезный бизнес или государство.


    1. wtigga
      09.08.2026 10:26

      Я устал заниматься оптимизациями своего старого wordpress'а - борбьа с ботами, спам-коментами, CDN... Психанул, конвертировал в статичные HTML и захостил на Cloudflare pages. Дышать легче стало.


      1. select26
        09.08.2026 10:26

        Очень верное решение, если оно возможно технически!
        В последнее время многие переходят, благо генераторов хватает.
        Простор для оптимизации - почти безграничный.


    1. vikarti
      09.08.2026 10:26

      x402 внедрят полноценно. Боты будут оплачивать такие запросы (ну или не будут если автор сайт хочет слишком много а автор бота не считает нужным платить). Cloudflare кстати тестирует.

      Как с почтой быть - вот не очень понятно но - можно тупо и клиентский софт доработать.


  1. rPman
    09.08.2026 10:26

    Боты хотят данные, судя по всему в общем защититься от ботов вы не можете (я знаю что статья перевод и автора тут нет, но с этим сталкиваются многие так или иначе), т.е. данные они и так получат, но стоить этот процесс будет для владельца сервера заметные суммы.

    Решение - отдать данные добровольно, в удобном виде, без ограничений (автор и так их точно так же забрал у других, так что 'по совести' это верный шаг). А свой сервис строить не на самих данных, а как инструмент по работе с ними, т.е. предоставить возможность пользователю приходить на сайт не за данными а за решением.

    p.s. большая часть сайтов, которые я частично скрайпил для себя, предоставляли максимально неадекватные возможности, т.е. данные есть но без полной их загрузки себе, сделать с ними почти ничего нельзя.


    1. tuxi
      09.08.2026 10:26

      Есть методы отдать ботам не те данные, за которыми они пришли. Это следующий "эшелон обороны". Не всегда сервис предоставляющий возможность работы с данными, является чем-то эксклюзивным. Очень часто именно данные являются наибольшей ценностью. Особенно если данные не скрапятся из открытых источников, а создаются руками человека.


      1. MountainGoat
        09.08.2026 10:26

        Сначала получите shadowban от всех поисковиков, потом изгоните часть клиентов, приняв их за ботов, а потом только начнёте задумываться, а была ли польза.


        1. tuxi
          09.08.2026 10:26

          Ну естественно "не лоб" же принимается решение о том, кто к нам пришел. Белый бот, черный бот или реальный посетитель. К тому же, поверьте, если вы ошиблись и приняли белого поискового бота как черного (хотя это весьма сложно, реверc lookup работает очень четко), то что вместо условного числа "100" в данных будет "125" никоим образом не смутит поисковую систему. Это просто проверено уже 10-ю годами разработки и эксплуатации такой системы.


    1. vtal007
      09.08.2026 10:26

      Защитится от всех ботов нет, а от 99% запросто банальной проверкой жава-скрипт. Да если бы у нас клаудфлар работал, то было бы сильно проще отсекать большую часть подозрительного трафика

      А зачем отдавать данные ботам? добровольно.

      Строить сервис не на данных, а не сервисе? так это другой бизнес, другие инвестиции

      Например, вот у Вас Хабр (любой статейник), какой сервис Вы построите?


    1. MountainGoat
      09.08.2026 10:26

      Как писали в других местах, проблема в том, что бот тупой. Если на сайте есть фильтры, например, по тегам, бот скачивает все возможные комбинации значений фильтров заново. Миллионы раз подряд скачивает одни и те же данные, переставляя галки на фильтре.


  1. urvanov
    09.08.2026 10:26

    У меня тоже по сайту в основном боты лазают. Но я не особо страдаю от этого, правда. У меня почему-то посещаемость гораздо меньше. Да и после появления нейросетей ещё упала сильно.


  1. UB3
    09.08.2026 10:26

    у меня ботов не наблюдается, равно как и траффика от нейросетей. я бы даже приветствовал его увеличение, значит инфа на сайте интересная, разве нет?


    1. MountainGoat
      09.08.2026 10:26

      Если инфа на сайте не интересна даже ботам, то она не интересная.


  1. vtal007
    09.08.2026 10:26

    у чела то хоть Cloudflare есть, банально поставил проверку на всех подозрительных

    а не так как у нас в России: тоже борюсь с ботами, включал на 12 часов на днях. Да только я сам не могу попасть на сайт без КВН. (или может с Cloudflare в России все хорошо и это я настроил неправильно? (заходить пытался через мобильный Мегафон)

    По поводу "страданий", рекламная сеть Яндекса уже 2 раза выкинула мой сайт "за недействительные показы и клики". Вот и думайте

    Заблочил в панели ISP менеджер всю Азию. Штаты, Канаду, Европу пока нет (но руки чешутся)


  1. mvv-rus
    09.08.2026 10:26

    Ситуация со скрейпингом ухудшается, потому он становится дешевле, поэтому я считаю, что единственное решение проблемы — экономическое. Cloudflare создаёт систему pay‑per‑crawl, при которой краулеры платят за запрос в edge‑сети

    Да, решение проблемы должно быть экономическим. Но лежит оно IMHO глубже, в изменении самой экономической модели Интернета.

    Сейчас основа экономической модели интернета - это “экономика внимания”: экономический смысл существования сайтов, если смотреть в корень и без иллюзий - это использование возможности манипуляции пользователями, чтобы им что-нибудь втюхать, либо самим владельцем сайта - если сайт служит для продажи какого-нибудь товара/услуги, - либо теми, кто покупает у владельца эту возможность (то есть, рекламу) на сайте. Для такой экономической модели боты вредны, потому что им ничего не втюхаешь, и отдачи их посещения не приносят. Сами же владельцы ботов в такой экономической модели являются “безбилетниками”: они получают данные, но не платят за них. И это совершенно обоснованно ощущается как несправидливость.

    Только вот платить посредникам, типа того же Cloudflare за то, чтобы избавиться от ботов-безбилетников - это IMHO ничуть не более справедливо. А справедливым было бы платить непосредственно за то, что получаешь. Благо Интернет служит отличной технологической платформой для микротранзакций (а транзакции здесь будут именно микро-, потому что себестоимость отдачи данных сама по себе невелика). Вот посредник, который сможет организовать именно такие микротранзакции (к примеру, списывая на них деньги со счетов пользователей, куда пользователи кладут некие суммы заранее), пусть даже не забесплатно - это IMHO куда более справедливое решение. И, главное - куда лучше охватываемое контуром рыночного регулирования через спрос/предложение: потребитель платит именно за то, что он реально получает и может оценить насколько ему это нужно, продавец-сайт может устанавливать цену на свои данные в соответствии со спросом. И всё - честно, не то, чтобы совсем без обмана (не обманешь – не продашь, как известно), но вполне прозрачно для участников рынка.

    Короче, я даже не джва, а джвадцать джва года хочу такой интернет. Но, как известно, хотеть не вредно, но не более того.

    PS Мне могут сказать, что такое уже есть - всякие подписные сервисы типа Patreon, Sponsr, Бусти. А я в ответ скажу, что транзакции там - отнюдь не микро-, доступ к материалам продается слишком большими кусками. И если за подписку на любимого автора соответствующую сумму не жалко отдать заранее, птому что его читать точно будешь, и часто,то поглядеть разок на что-то заинтересовашее в моменте за недорого на таких сервисах не получается. В этом и есть разница.


    1. Revertis
      09.08.2026 10:26

      Ну введёте вы микро-транзакции за скачивание странички, и что будет дальше? Дальше будет взрывной рост сайтов-помоек со сгенерированными текстами, дабы стащить с кошелька ботов деньги отдавая некий хлам.


      1. mvv-rus
        09.08.2026 10:26

        Дальше будет взрывной рост сайтов-помоек со сгенерированными текстами, дабы стащить с кошелька ботов деньги отдавая некий хлам.

        В любом случае это уже чисто проблема ботов и их владельцев. И я не вижу, что мешает владельцам ботов настроить их так, чтобы этот хлам не подбирать и помойки не кормить.
        Или же - договориться с владельцем сайта, чтобы он пускал забесплатно полезные ему боты, к примеру - от поисковиковых систем - забесплатно (естественно - с аутентификацией, чтобы посторонние под их видом не лазили) .


        1. Revertis
          09.08.2026 10:26

          То есть вы хотите одну странную систему заменить ещё более странной системой, добавив туда деньги, но не решив нормально проблемы :-/


          1. mvv-rus
            09.08.2026 10:26

            Нет. Потому что проблема не техническая, а потому системы ее сами по себе не решают. Проблема - экономическая, и я хочу, чтобыу сайтов была другая экономика, которая вводит сайты и их посетителей в контур рыночного регулирования, для того и нужны деньги.
            По-моему, “нормально” - именно так.


        1. inkelyad
          09.08.2026 10:26

          В любом случае это уже чисто проблема ботов и их владельцев.

          В принципе, не совсем. Вас, как человека, тоже можно погонять через кучу промежуточных страниц (не забывая снять маленькую, но копеечку на каждой) прежде чем дать(если вообще дадут) то, что ищете. Ну вот как сейчас через промежуточные страницы с рекламой гоняют.

          Но это, в общем, решается репутацией: "солидные источники информации(например <имя>) так не делают, иди туда"


          1. urvanov
            09.08.2026 10:26

            Вас, как человека, тоже можно погонять через кучу промежуточных страниц (не забывая снять маленькую, но копеечку на каждой) прежде чем дать(если вообще дадут) то, что ищете.

            Некоторые сайты уже так делают. И на каждой такой говностраничке показывают горы рекламы с одним абзацем и ссылкой на следующую страницу.


          1. mvv-rus
            09.08.2026 10:26

            Вас, как человека, тоже можно погонять через кучу промежуточных страниц (не забывая снять маленькую, но копеечку на каждой) прежде чем дать(если вообще дадут) то, что ищете.

            Можно, но зачем? Если информация достаточно ценная, то можно просто поднять цену безо всяких грязных трюков, которые плохи тем, что портят репутацию.


            1. rPman
              09.08.2026 10:26

              для конкурентной борьбы маркетинг идет на любые извращения и гадости


    1. Zalechi
      09.08.2026 10:26

      Там уже накинули пару контр-аргументов, но я добавлю тот, что они не могут изменить схему, потому что я в принципе не хочу видеть персонализированную рекламу, но они мне это навязывают. Лезут в мой микрофон, читают куки и так далее, хотя я хочу нейтральную рекламу, раз уж без нее не обойтись.

      Поэтому лично я не собираюсь поплнять счет таких добросовестных посредников. Но если Вы говорите про бизнес между бизнесом — то да, наверно это интересно.


      1. mvv-rus
        09.08.2026 10:26

        они не могут изменить схему, потому что я в принципе не хочу видеть персонализированную рекламу, но они мне это навязывают.

        “Они” - я не понял, это кто? Но в целом, да, переход от нынешнего состояния интернета к тому, что мне мечтается, так просто не сделать. Но помечтать об интернете, в котором вы платите деньгами а не вниманием (то есть, просмотром рекламы) можно, да.


        1. Zalechi
          09.08.2026 10:26

          Они — рекламадатели.

          схема у гулга была простая вначале — наши сайты, а сюоку крутятся банери гугла с рандомной рекламой.

          Затем они решили оптимизиравать свои доходы через персонализацию рекламы, сами знаете как. Боты боты боты, куки и тд. Паралельно фб и вотцап начали по своему уже в приложениях тащить от тебя инфу.

          В итоге мы получили картину, где в эпоху до глобального интерената, рекламодатели продавали либо рандом по тв, либо в специализированных медиа показывали специализированную рекламу.

          Таким образом, когда я прихожу в условный магазин ( я пришел с иголочки одетый, в часах ролекс и красовках пума ( с хура ли, но пусть будет), то максимум который могли с меня считать — это прохожие, которые смотрели как я одет — всё. Никто не записывал в блокнот информацию о бо мне, а потом не передовал ее владельцу магазина, ято бы когжа и пришел к нему в след раз — он мне тут же предложил мой любимый бренд. Понимаете?!

          В определенной степени, да — магазин, ыладелец или кассир запоминают меня как покупателя, и когда я пояыляюсь в том же ларьке или баре, мне приятно сверкнуть своими часами перед посетителями и услышать фразу бармена: Вам как обычно бакал светлого для начала, сэр? И я с удовольствием отвечаю ему — да, и этой даме в подарок от меня тоже на в кус, что пожелает….

          Понимаете разницу. Теперь же я заходя в современный магазин электронной продажи, да куда бы то ни было в целом, — подвергаюсь тотальному скрапингу, сканированию, категоризациии, профилиралифилиралихациии ( в шутку изувечил слово), с целью доброго гулгла (рекламодателя и его контр-агента) подсунуть мне сразу «топчик».

          СПСИБО. НЕ НАДО. да, не стоит смотреть на это односторонне, мол все «ужас-ужас», но как на это иначе смотреть, как без слез, я, не, знаю.

          Повторяю, в чемто такие системы нужны, в определенных сценариях, возможно вообще не на рынке рекламы, но то что мы имеем сейчас — тотальное профилирование. Да ну их нафиг. Я против например. Меня полностью устраивает гугл, но в этом момент. Единственное, что бесит. Как мне отказываться от его услуг — я не знаю.

          PS: ах да, чуть не забыл. Теперь Вы предлагаете, чтобы мы им, еще, и платили за это? Типо если влезли в дерьмо, то хоть дайте какой-то выбор. Я в инет по подписке захожу, за то меня фб не скраппит. Так они же это уже реализовалив нутри контура? А не, то твиттер сделал, кажись, если не ошибаюсь.

          PPS: конечно, Вы изначально про слой между мной и рекламодателем говорили, но я Вам обрисовал, как я вижу эту «кроличью нору».


          1. mvv-rus
            09.08.2026 10:26

            Теперь Вы предлагаете, чтобы мы им, еще, и платили за это?

            Нет, я предлагаю, чтобы мы платили вместо этого, вместо этой навязчивой рекламы. По крайней мере, именно этого я джвадцать джва года хочу.


    1. vikarti
      09.08.2026 10:26

      А еще есть x402.Именно микро-транзакции.


  1. Areso
    09.08.2026 10:26

    90 долларов в месяц.
    База данных - 1,5 млн записей.
    VPS стоила бы 6-8 долларов в месяц с исходящим лимитом в 1 ТБ (5 ГБ от ботов * 30 дней = 150 гиг, 15% от того, что обычно включено в тариф), а поместив сайт за DNS от CloudFlare можно сэкономить примерно 2/3 от трафика или больше.


    1. Revertis
      09.08.2026 10:26

      Сейчас есть много VPS по цене 30-40 баксов в год с лимитом 3-15Тб в месяц.


      1. maxscitech
        09.08.2026 10:26

        Сразу на год брать - не резон, отлетают пачками.


        1. BugM
          09.08.2026 10:26

          Нормально. Сейчас все прокидывают трафик через вторую машинку, уже одноразовую. А основная побольше постоянная. И куплена на год.

          Прокидывать можно всяким, оно все парой понятных текстовых конфигов настраивается.


        1. Revertis
          09.08.2026 10:26

          Что значит отлетают???


        1. RulenBagdasis
          09.08.2026 10:26

          Куда отлетают, зачем?


  1. Makson_for_people
    09.08.2026 10:26

    Очень большая и сложная статья, даже слишком. Не уж то это стандарт для Хабр? Без негатива


    1. taliano
      09.08.2026 10:26

      Неужто на Хабр ходят читать твиты по 250 символов?


      1. old_bear
        09.08.2026 10:26

        Если возраст в профиле реальный, то это должны быть 30-секундные видео с фоновой музыкой. И чтобы свайпать было можно.


        1. RulenBagdasis
          09.08.2026 10:26

          Камон, там 2002, в 24 года я монографию опубликовал.


          1. Areso
            09.08.2026 10:26

            "Да, были люди в наше время, могучее, лихое племя: Богатыри — не вы!"
            Больше чем уверен, что и сегодня есть люди, которые в 24 монографию публикуют. Но сложно отрицать массовый сдвиг в клиповое мышление у большого числа молодых людей.


            1. RulenBagdasis
              09.08.2026 10:26

              Я с этим не спорю, но 24 года, это всё же не 14. Тут не в возрасте дело, имхо. Если сантехник Василий, 50 годиков, попал впервые в интернет в эпоху твитора и тиктока, пропустив эру диалапа, форумов и лонгридов в жж, его сетевые привычки будут мало отличаться от школьника Олега, который попал в сеть в то же время.


        1. Makson_for_people
          09.08.2026 10:26

          е.... вы токсичные...


          1. Okeu
            09.08.2026 10:26

            я не пойму, это жирный наброс, постметаирония или все всерьез?)


            1. TEXHOPYK
              09.08.2026 10:26

              Это смена поколений на Хабре, сэр


          1. Zalechi
            09.08.2026 10:26

            Снобный — это хакер, детка))) и тут так принято. Но как по мне, просто хвастунишка, он) хотя и молодец. Я даже не знаю, что такое монография, но уже хочу написать, и мне — 45-ть))))


      1. Makson_for_people
        09.08.2026 10:26

        Так еще и лайкают такие комментарии? Ну и позор


        1. Zalechi
          09.08.2026 10:26

          отредактировал:

          Мы такие циклы уже проходили — “эффект пикабу”, войны с корпоративными блогами. Похоже, постоянная чистка и есть суть эволюции Хабра — движение к академическим стандартам через регулярные приступы борьбы за качество.


        1. old_bear
          09.08.2026 10:26

          так уж здесь повелось (с)


    1. RulenBagdasis
      09.08.2026 10:26

      Это обычная статья для хабра. До победы копроблогов со статьями про кремы для опы, тут много такого было.


    1. zum
      09.08.2026 10:26

      Не уж то это стандарт для Хабр?

      О, это вы статьи не читали, которые выходили в то время, когда Хабр был закрытым сообществом. Можно сказать, что стандарты, кхм, немного скорректированы.


  1. redfox0
    09.08.2026 10:26

    Недавно заблокировал настоящего клиента с Chrome 101 и китайской локалью. Браузер настойчиво слал не percent-encoding кириллицу в GET-запросе, а как-то по-другому закодированный юникод, из-за этого фреймворк сайта падал на этапе маршрутизации. Надеюсь, пользователь нашёл другой браузер и посмотрел на сайте то, что хотел.

    А ещё заметил, что многие боты не умеют в сжатие, или только в gzip (но не в br). А так разве что Яндекс раньше любил каждый месяц выкачивать по 200-300 ГБ pdf-файлов, хотя они не менялись.


    1. urvanov
      09.08.2026 10:26

      Яндекс раньше любил каждый месяц выкачивать по 200-300 ГБ pdf-файлов, хотя они не менялись.

      А там точно всё правильно настроено? Дата изменения в sitemap же должна быть. Зачем ему ещё раз скачивать...


      1. redfox0
        09.08.2026 10:26

        В sitemap файлов не было, дата модификации файлов возвращалась в заголовках nginx. Позже в этих же заголовках было запрещено роботам качать эти файлы (X-Robots-Tag: noindex) и через robots.txt конечно же.


  1. keelai
    09.08.2026 10:26

    Здесь особенно важно не смешивать два слоя метрик: edge-запросы/байты и продуктовые события. После нового правила WAF меняется доля отфильтрованного трафика, и без раздельных рядов это легко принять за падение живой аудитории. Я бы сохранял для каждого запроса хотя бы класс (бот/прошёл challenge/подтверждённая сессия), а воронку строил отдельно по событиям приложения. Тогда алерты на рост bot bytes и на просадку verified sessions не спорят друг с другом.


  1. hauserich
    09.08.2026 10:26

    Я давно уже перестал собирать, хранить и обрабатывать статистику посещаемости своих сайтов (раньше каждый месяц это делал, даже программу специальную почти дописал), но вижу только одно: падение числа посетителей. Раньше я считал, что причина одна: сайты на русском, но вне РФ. Соответственно, доступ сильно затруднен.
    Но сейчас я думаю, что есть и вторая причина: люди не приходят из поиска как раньше, потому что любой поисковик через ИИ сразу выдает "оптимальный" ответ, не направляя искателя на оригинальный сайт. И искатель, и поисковик довольны, а интересы владельца сайта и автора контента им побоку.

    Бороться с ботами бесполезно, это не увеличит число посетителей, Корень проблемы в алгоритмах поисковиков. Но как бороться с ними? Я не знаю...


    1. urvanov
      09.08.2026 10:26

      Поисковики с сайтами ещё до этого бороться начали со всякими турбо-страницами и у гугла какой-то аналог тоже был. Но сейчас да, с нейросетями вообще всё плохо с реальными посетителями стало. Ничего уже не поделать тут.


      1. hauserich
        09.08.2026 10:26

        Гугл еще и забанил в поиске сайты на доменах 3 уровня, причем не все (на бесплатных хостингах оставил), а только настоящие, не мусорные. И саппорта там нет, чтобы написать "какого черта?". Так что "обложили" со всех сторон... Я даже в блоге подробно писал об этом... И да - ничего не сделаешь...


  1. ShaltaiBoltai
    09.08.2026 10:26

    • Мэтт Полсон из MarketBeat: «Не забудьте добавить в список Россию».

    И хотя с российских IP тебе не придет ни одного бота (откуда могут взяться боты в средневековой стране), но ты же не хочешь, чтобы на твой сайт зашел русский Иван? Поэтому, обязательно добавь в список Россию!


    1. vobinoy987
      09.08.2026 10:26

      Есть региональные сайты. Сайты, у которых через клауд закрыты определенные страны или наоборот открыты только некоторые - это распространенная практика.

      Например, для всех серверов одного проекта (сетки сайтов разных регионов и серверов) через Security rules закрыт Китай.

      А вот для бразильского сервера такое правило - Country is not in BO, CL, CO, EC, MX, PE, VE, UY - блок

      То есть в данном случае к автору статьи на сайт из России в США зайдет полтора человека за полгода и ими можно пренебречь.

      там есть конечно и другие ньюансы, бывает что клауд неправильно определяет ip посетителя (базы как я понимаю у них обновляются не онлайн)


      1. BugM
        09.08.2026 10:26

        То есть вы одобряете закрытие интернета по своим миниинтернетикам? Этак 99 процентов сайтов могут закрыться от большей части мира, там трафик копеечный.


        1. Areso
          09.08.2026 10:26

          А нужен этим сайтам этот трафик от большей части мира?


          1. BugM
            09.08.2026 10:26

            Я не знаю. Мне не нравится сама идея что все окукливаются. И наши идут в мировом тренде закрывая доступ к сайтом из-за рубежа.

            А вам? Хотите ходить только на местные сайты, потому что остальные закрылись от вас?


            1. Areso
              09.08.2026 10:26

              А вам? Хотите ходить только на местные сайты, потому что остальные закрылись от вас?

              Когда-то я был юношей и был максималистом, и я пылал бы праведным гневом.
              А сегодня я просто включу туннель (если нужно), или поменяю сайт (если не очень нужно).

              И, кстати, как "веб-мастер" (какое слово-то древнее), я делаю точно так же на своих проектах. У меня есть сайты для всех - например, для изучения английского, там ограничений нет. Английский ведь везде учат, даже в США.
              А есть для местных потребителей. И там стоят правила. Мои правила с фильтрацией регионов. В одном из сервисов у провайдера egress-трафик платный в Китай и Океанию у провайдера (-Китай -Океания). В другом - просто нон-стоп долбежка в поисках уязвимых эндпоинтов. Посмотрел откуда идут атаки, и положил их в reject.


              1. BugM
                09.08.2026 10:26

                В каждую страну на сайт которой зайти хотите? Не, ну я тоже справлюсь, но это же ужастно. И 99 процентов людей не справится и будет ходить только на местные сайты.

                Разных банилок по любым критериям сделано море. Блокировать страны для их работы не надо.

                Все мои проекты открыты для всего мира. Я делаю что могу для сохранения интернета. И мне всегда интересна мотивация айтишников разрушающих интернет своими руками.

                Спросить у тех кто систему сертификатов разрушил я ничего не могу. Поэтому прикапываться к кому могу.


                1. All4DK
                  09.08.2026 10:26

                  Интернет разваливается на куски. На мой взгляд - это печально. Сеть, которая могла объединять людей, уступаем место местечковым группкам сайтов.

                  В эту сторону и правительства работают, и сами люди, закрывая доступ пользователям из других стран. Грустно.


                1. hauserich
                  09.08.2026 10:26

                  Мои сайты тоже открыты для всех, ибо зачем я должен ограничивать доступ к своему творчеству? Но только мои сайты на русском, но вне РФ. А посему зайти из РФ на них сложно. Можно, но скорость такая, что никто не дождется. И не потому, что они что-то плохое содержат. А просто потому, что зарубежный трафик получается.
                  Увы, в распаде интернета на зоны заинтересованы в мире очень много кто...


      1. ShaltaiBoltai
        09.08.2026 10:26

        Тут я с вами согласен полностью Так я о том и говорю. К нему на сайт придет максимум один русский Иван в год (ибо ну зачем русскому Ивану список доноров музеев США), но в список Россию набавить всё равно надо обязательно. Чтобы даже этот один не пришел и не осквернил его сайт. Как это, не добавить в список Россию? Ведь иначе тебя не будут считать за приличного человека.


  1. skyblade
    09.08.2026 10:26

    Можно встречно поднять вопрос использования частных ресурсов посетителя на обработку всякой рекламы, счётчиков и прочей ерунды. Посетитель заходит за сутью содержимого. Например, в случае хабра - за статьёй и комментариями. Баннеры сбоку посетителю не нужны, но устройство посетителя будет их скачивать, рендерить и держать в оперативной памяти и даже на дисковом кэше. И мы приходим к тому же самому, но с другой стороны. Так кто это всё начал?

    Так-то я сисадмин и да, я тоже своим клиентам настраиваю ограничения, потому что не все они желают тратиться на разработчиков для переписывания сайта под эффективную работу с миллионами запросов. Даже под эффективную работу с десятками тысяч запросов не желают, будем честны. Поэтому приходится вводить тонны ограничений и я вообще открыл статью с надеждой найти что-то новое. И… ничего не нашёл кроме идеи отстреливать ещё и старые версии браузеров. Всё остальное уже и так применяю в том или ином виде. Но я также и простой посетитель и всё своё время пользования интернетом я наблюдаю, как он деградирует и превращается в сплошной поток жидкой консистенции и неприятного запаха.

    Я считаю так, что если у вас там бизнес какой-то и вы надеетесь зарабатывать с показов статей, то честно будет сразу сделать вход по кредитке. И даже в поисковые системы не надо этот свой контент показывать, чтобы они потом меня туда не кидали. Когда я ищу что-то в сети, я ищу это бесплатно, так как за интернет я уже заплатил. Если же я захочу что-то платное, то я пойду в специальные платные места. Благо, их полно и есть бесплатно доступные списки этих платных ресурсов.

    Вот о таком интернете я мечтаю. Упрощённо обобщая, в нём будет ассортимент всяких википедий с информацией по всем вопросам бытия и на все случаи жизни. А магазины можете в какую-нибудь отдельную сеть выделить. Я даже рад, что в последние годы этот бардак съезжает массово в маркетплейсы и даже в выдаче стало поменьше всяких магазинов. Вообще не понимаю, зачем показывать магазины, если я не дописал ключевые слова “купить” или “цена”. Если их нет, то покупать я ничего не собираюсь точно. Я хочу узнать, как это устроено, когда было сделано и т.д. Да что угодно, но не купить.

    Резюме: делайте сайты для людей, а не для заработка и не нужно будет отбиваться от других таких же нехороших.


    1. mvv-rus
      09.08.2026 10:26

      Когда я ищу что-то в сети, я ищу это бесплатно, так как за интернет я уже заплатил.

      Вы заплатили всего лишь за доступ к трнаспорту. Владелец любого сайта с информацией ничего из заплаченных вами денег не получает и возместить из них свои расходы не может. Для этого нужен другой экономический механизм. Сейчас таким механизмом практически исключительно является реклама.

      PS Экономический механизм, в котором провайдеры доступа делились заплаченными им за доступ деньгами с владельцами/операторами сайтов, в истории существовал (например – America Online в начале 90-х), но он не выжил.


  1. tr808man
    09.08.2026 10:26

    На nginx 99% паразитного трафика вырезаются в несколько строк. Например запретом chrome от 1 до 125 версии (гуглите почему сами). И сервер вообще ничего не тратит отдавая 444 паразитам. Конечно этот список можно пошаманить и черным списком краулеров, паттернами доступа. Вы поймите одно: ботнеты работают определенными довольно тупыми паттернами. Там нет цели сделать что то эксклюзивно. А раз это массовая история, то значит можно изучить ее особенности и их учесть. Но самый распромтраненный паттерн на сегодня - это версия хрома. Смело режьте от 1 до 125. На мой взгляд автор не до конца понимает предмет, но на верном пути. Даже поведенческие и те вычисляются например несколько заходов холостых на десятый блок на час например (чтобы не заблочить ip мобильных операторов). Также рекомендую создать блокировки по признакам cdp, webdriver и тому подобное


    1. vtal007
      09.08.2026 10:26

      А что такое "холостой заход" ? и это надо на каждый Ip вести учет кол-ва заходов?


  1. ebye
    09.08.2026 10:26

    В статье не хватает логов детальных, с того же Cloudflare. Защита любого сайта - в большей степени индивидуальна.

    Для RU сегмента, к сожалению Cloudflare свое изжил. Под РФ есть готовые решения.