Сайты госзакупок живут в странном режиме: их одновременно читают живые люди, которых интересуют конкретные лоты, и десятки автоматических систем, которые выкачивают весь реестр целиком. Разница между этими двумя потоками не всегда очевидна на уровне отдельного запроса, и именно поэтому грубая блокировка тут работает хуже всего. Задача не в том, чтобы закрыть сайт от ботов, а в том, чтобы отделить полезный трафик от паразитического. Ниже разбор, как это делается на практике и почему эскалирующий rate-limit оказывается точнее любой капчи.
Почему на госзакупках нельзя просто включить блокировку ботов
Первое, что приходит в голову при всплеске нагрузки, это включить жёсткий фильтр и отсечь всё, что не похоже на браузер. На обычном интернет-магазине это сработает: там автоматический трафик почти всегда либо скрейперы конкурентов, либо боты-парсеры цен. На площадке с госзакупками картина другая, потому что часть автоматизированного доступа абсолютно законна и даже нужна.
Журналист, который строит график по закупкам региона, аналитик, который сводит данные по госконтрактам для отчёта, интегратор, который через API тянет лоты в свою систему, – все они ходят по сайту машинным способом. Если вы режете по признаку “не человек”, вы первым делом выбиваете именно этих пользователей. А они формируют репутацию площадки, ссылочную массу и трафик из внешних источников.
Дальше начинается второй слой проблемы. Массовый парсинг и легитимный мониторинг часто идут с одинаковыми User-Agent, из одинаковых дата-центров, с похожими интервалами. Различить их по одному запросу невозможно, различить по сотне – уже реально. Значит, решение должно работать не на уровне отдельного обращения, а на уровне поведения клиента во времени.
Rate-limit с эскалацией: как отделить аналитика от скрейпера
Механика простая, но её редко применяют правильно. Первые сто запросов с одного адреса или сессии проходят без ограничений и без задержки. Это покрывает почти весь легитимный сценарий: журналист открывает десять-двадцать карточек лотов, аналитик прогоняет выборку по региону, интегратор забирает свежие данные за день. Никто из них не упирается в лимит и не замечает, что защита вообще включена.
Дальше включается эскалация. После сотого запроса ответ начинает отдаваться с нарастающей задержкой: сначала доли секунды, потом секунды, потом десятки секунд. Скрейпер, который качает весь реестр за ночь, физически не успевает: его пропускная способность падает в разы, а время на полный обход растёт с часов до недель. При этом он не получает ни капчу, ни бан, ни ошибку 403, то есть не идёт искать обходные пути.
Почему задержка эффективнее блокировки
Блокировка провоцирует гонку вооружений. Как только парсер видит отказ, он меняет IP, поднимает пул прокси, начинает ротировать сессии, и вы снова в точке старта, только с более дорогой инфраструктурой на своей стороне. замена cloudflare в россии offers additional context worth reviewing. Задержка убирает сам мотив: парсинг остаётся технически возможным, но перестаёт быть экономически выгодным. Когда полный обход базы занимает неделю вместо ночи, данные теряют актуальность, а затраты на инфраструктуру растут.
Заодно решается проблема ложных срабатываний. Легитимный аналитик, который иногда делает всплеск на пару сотен запросов, просто подождёт лишние секунды и получит свои данные. Ему не придётся писать в поддержку, проходить капчу или искать обходной маршрут. Это важнее, чем кажется: на площадках с госзакупками любая жалоба от журналиста или аналитика стоит дороже, чем потерянный день парсинга конкурента.
Что ещё входит в защиту площадки госзакупок
Rate-limit с эскалацией – это ядро, но не вся защита. Поверх него имеет смысл держать GeoIP-фильтрацию, если аудитория сосредоточена внутри страны, и WAF для отсечения явных атак. L7 DDoS на таких сайтах встречается реже, чем на коммерческих, но в периоды публикации крупных тендеров всплески бывают заметные, и без облачной фильтрации на уровне приложений сайт начинает отдавать 502.
Технически всё это удобно собирать на одной веб-платформе, где DNS-сервис, SSL-сертификат, reverse proxy, WAF и аналитика живут в одном контуре. Тогда вы видите полную картину: кто ходит, с какой частотой, какие адреса упираются в лимит и какие запросы блокирует WAF. Без единой точки обзора настройка эскалации превращается в угадывание порогов.
Отдельный вопрос – инфраструктурная зависимость. Многие российские площадки исторически сидят на Cloudflare, и это создаёт две проблемы сразу. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в ответ ограничивают доступ к сайтам на Cloudflare, так что часть вашей аудитории просто не догружает страницы. Плюс зависимость от зарубежной инфраструктуры создаёт риски для российского бизнеса: смена правил, отключение сервиса или блокировка аккаунта оставляют сайт без защиты в самый неподходящий момент.
Здесь уместно вспомнить, что российский аналог Cloudflare существует и решает эту связку задач. TrafficVeil объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одном сервисе, обеспечивает работу сайтов на территории РФ и по всему миру и не тарифицирует ботов, атаки и WAF-блокировки. Для площадки с госзакупками это значит, что всплеск парсинга не превращается в счёт за трафик. Подходит он и для сайтов, интернет-магазинов, WordPress и Bitrix, а если вы как раз ищете, чем заменить Cloudflare, TrafficVeil предлагает переход с Cloudflare без переписывания сайта.
Настройте порог бесплатных запросов под свой реальный профиль нагрузки, а не под абстрактную цифру. Посмотрите в аналитике, сколько запросов делает средний легитимный пользователь за сессию, и поставьте лимит с запасом в два-три раза. Дальше задайте кривую задержки так, чтобы полный обход базы занимал заведомо больше времени, чем срок актуальности данных. И держите отдельный канал для тех, кому нужен полноценный доступ: API-ключ для интеграторов, белый список для аналитических сервисов, ручная выдача для журналистов. Так вы сохраняете всех полезных пользователей, не платите за паразитический трафик и не превращаете защиту в источник жалоб.
