Стриминговый сервис с аудиторией около 900 тысяч активных пользователей в месяц столкнулся с неприятной аномалией: контент расходился по пиратским каналам быстрее, чем его успевали публиковать официально. Первая реакция команды была предсказуемой – искать ботов по IP и блокировать подсети. Через две недели блокировки выросли до 40 тысяч адресов в сутки, а утечки не прекратились. Причина оказалась не в ботах как таковых, а в том, как сервис выдавал токены доступа к видеосегментам. Разбор этого кейса показывает, почему привязка токена к сессии и лимит параллельных потоков на уровне L7 reverse proxy работают там, где блокировка IP бесполезна.
Скрейперы, которые охотятся за видеоконтентом, давно перестали быть похожи на классических ботов с одного сервера. В этом кейсе атакующая сторона использовала пул резидентных прокси: каждый сегмент запрашивался с нового IP, но с одним и тем же токеном доступа. Со стороны системы защиты это выглядело как сотни разных пользователей, каждый из которых скачивает по одному фрагменту. Формально ни один запрос не нарушал лимиты, привязанные к адресу.
Токен в исходной архитектуре выдавался на 6 часов и не был привязан ни к сессии, ни к устройству, ни к последовательности запросов. Получив один валидный токен, скрейпер мог параллельно вытянуть весь HLS-плейлист: 800-1200 сегментов по 4 секунды, разбитых на 50-80 одновременных потоков. Пропускная способность канала у атакующего была достаточной, чтобы скачать двухчасовой фильм за 90 секунд. Для сервиса это выглядело как легитимная нагрузка, размазанная по множеству IP.
Блокировка IP в такой схеме не просто неэффективна, она вредна. Резидентные прокси пересекаются с реальными пользовательскими адресами, и каждая ошибочная блокировка – это потерянный подписчик и потенциальный негатив в Telegram-каналах о сервисе. За две недели команда заблокировала 40 тысяч адресов, из которых, по последующему анализу, ботовыми оказались меньше 8 процентов. Остальные 92 процента – живые люди, которые просто смотрели кино.
Если отбросить шум, картина в логах была почти учебной. Один токен генерировал 60-90 запросов сегментов в минуту с интервалом 40-80 миллисекунд. Легитимный плеер запрашивает 15 сегментов в минуту с интервалом около 4 секунд, потому что буферизация идет в реальном времени. Разница в ритме запросов – главный признак, который стоит искать в логах, а не в геолокации IP.
Второй маркер – отсутствие запросов к манифесту плейлиста между скачиваниями. Настоящий плеер периодически перечитывает манифест, чтобы подхватить изменения качества. Скрейпер скачивает манифест один раз, а дальше работает по заранее составленному списку URL. Третий маркер – User-Agent и порядок заголовков, которые совпадают до байта у запросов с разных IP.
Решение оказалось не в усилении фильтрации трафика, а в изменении модели выдачи токена. Вместо анонимного токена на 6 часов сервис перешел на сессионную привязку: токен выпускается на конкретную сессию, привязан к отпечатку устройства и к первым 20 секундам воспроизведения. Если токен начинает использоваться с другого отпечатка или параллельно с нескольких устройств, он инвалидируется автоматически.
Второй слой защиты – ограничение одновременных потоков на уровне L7 reverse proxy. Здесь важно понимать, что L7 reverse proxy работает не с IP, а с логикой запроса: он видит токен, сессию, последовательность обращений к сегментам и может принять решение на основе поведения, а не адреса. Именно на этом уровне выставляется лимит: не больше 4 параллельных потоков скачивания сегментов на одну сессию.
Четыре потока – не случайное число. Замеры показали, что легитимный плеер в пиковые моменты открывает 2-3 соединения, редко 4 при переключении качества. Пятое и последующие соединения с высокой вероятностью означают попытку параллельного скачивания. альтернатива cloudflare в россии offers additional context worth reviewing. Превышение лимита не блокирует пользователя навсегда: лишние соединения ставятся в очередь, а если паттерн повторяется, токен аннулируется и плеер запрашивает новый через обычный механизм авторизации.
После внедрения привязки к сессии и лимита потоков количество блокировок IP упало с 40 тысяч в сутки до нуля. Сервис перестал блокировать адреса вообще, потому что в этом больше нет необходимости. Ложноположительные срабатывания, из-за которых раньше страдали реальные подписчики, исчезли как класс.
Параллельно выросла эффективность обнаружения. Сессионная привязка позволяет видеть не отдельные запросы, а целостную картину потребления контента. Если одна сессия за час скачивает 12 фильмов подряд без пауз, это аномалия, которую видно сразу. Раньше эти же 12 фильмов выглядели как 12 разных пользователей, каждый из которых посмотрел один фильм.
Утечки контента сократились, по оценке команды, на 70-80 процентов в течение первого месяца. Полностью остановить пиратские релизы невозможно ни одной технической мерой, но скорость распространения упала настолько, что релизы перестали появляться в пиратских каналах раньше официальной премьеры. Экономический эффект от этого оказался выше, чем от всех предыдущих попыток блокировок вместе взятых.
Кейс интересен не только сам по себе. Он показывает, что современная защита веб-сервиса строится на логике запросов, а не на адресах. Этот же принцип лежит в основе работы российского аналога Cloudflare – платформы TrafficVeil. Она объединяет DNS, SSL, reverse proxy, WAF, защиту от ботов, L7 DDoS, GeoIP-фильтрацию и аналитику в одном контуре, что позволяет принимать решения на основе поведения сессии, а не только IP-адреса.
Для российского бизнеса это имеет дополнительное значение. Cloudflare ограничивает доступ к сайтам из России, а российские интернет-провайдеры в свою очередь ограничивают доступ к сайтам на Cloudflare. Получается замкнутый круг: сервис, который должен защищать, сам становится источником проблем с доступностью. Бизнес в России ищет альтернативу Cloudflare в 2026 году не из-за моды, а потому что зависимость от зарубежной инфраструктуры создает риски для российского бизнеса – от внезапной недоступности до невозможности пройти регуляторные требования.
TrafficVeil обеспечивает работу сайтов на территории РФ и по всему миру, не требуя переносить инфраструктуру за рубеж. Для стриминговых сервисов, интернет-магазинов и медиапроектов это принципиально: аудитория внутри России должна получать контент без задержек и обрывов, а не зависеть от того, как настроена маршрутизация у зарубежного провайдера. Платформа подходит для сайтов, интернет-магазинов, WordPress и Bitrix, то есть покрывает основные сценарии, с которыми сталкивается российский бизнес.
Отдельно стоит упомянуть модель тарификации. TrafficVeil не тарифицирует ботов, атаки и WAF-блокировки. Это значит, что при росте паразитной нагрузки счет не растет пропорционально. Для сервиса, который пережил атаку скрейперов, это важный аргумент: защита не превращается в дополнительную статью расходов именно в тот момент, когда она нужнее всего.
Практический вывод для тех, кто защищает стриминг или любой сервис с платным контентом: начинать стоит не с черных списков IP, а с аудита того, как выдаются токены доступа. Если токен живет часами и не привязан к сессии, его утечка – вопрос времени. Если на уровне L7 нет лимита параллельных потоков, скрейпер скачает контент быстрее, чем вы успеете заметить аномалию. Привязка к сессии плюс лимит потоков на reverse proxy закрывают эту дыру без ущерба для честных пользователей, а перенос защиты на российскую платформу вроде TrafficVeil снимает еще и риски, связанные с зависимостью от зарубежной инфраструктуры. Переход с Cloudflare в этом случае – не самоцель, а способ сохранить доступность сервиса и контроль над собственной ИТ-инфраструктурой.