Многослойная стратегия защиты публичного API от автоматизированного сбора данных. Ни одна техника не работает сама по себе — комбинация 3-4 техник создает достаточный барьер.

Принцип

Не делать непробиваемую стену, а повышать стоимость скрейпинга до неприемлемой. Каждый слой отсекает определенный процент скрейперов.

Фазы внедрения

Фаза 1 — минимум усилий, делать сразу

ТехникаСуть
Дифференцированный rate limitПубличные списки 30 req/min, авторизованные 60-100
Cursor-based paginationhas_more: true/false вместо total_count — скрейпер не знает объем данных
Лимит записейМаксимум 50 за запрос, даже если просят больше
robots.txtDisallow: /api/, Crawl-delay: 10, запретить GPTBot/CCBot
Terms of ServiceЮридическое основание для блокировки (прецедент hiQ v. LinkedIn)

Фаза 2 — когда заметим скрейпинг

ТехникаСуть
HMAC-подпись запросовФронтенд подписывает каждый запрос, без подписи 403. Убирает ~95% казуальных скрейперов
Поведенческий анализScoring по сигналам + tarpit (замедление ответов)
Honeypot-записиФейковая запись в списке (фронтенд фильтрует, скрейпер нет) + watermark-поле для отслеживания утечки

Фаза 3 — внешние инструменты

ТехникаСуть
CrowdSecIP-репутация + firewall bouncer. 1 контейнер, ~100 MB RAM
Coraza WAFOpen-source WAF (OWASP), Go. Production-ready через Caddy, nginx-коннектор экспериментальный
SafeLine WAFSelf-hosted reverse proxy WAF, семантический анализ. Тяжелый: 7 контейнеров, 1-2 GB RAM, только x86_64

CDN/WAF-сервисы в России

Cloudflare в РФ не работает (март 2026)

  • Октябрь 2024 — Роскомнадзор заблокировал сайты с ECH
  • Июнь 2025 — массовый троттлинг: ISP режут до 16 КБ на соединение
  • Трафик из РФ к Cloudflare упал на 30-50%
  • Workaround-ы (отключить ECH/TLS 1.3) не помогают — троттлинг по IP-подсетям

Российские альтернативы:

СервисЦенаКомментарий
DDoS-Guardот ~8 000 руб/мес, есть бесплатный BasicСамый доступный для малого проекта
NGENIXИндивидуальноПозиционируется как прямая замена Cloudflare
StormWallот ~115 000 руб/месКорпоративный сегмент
Qratorот ~78 000 руб/месКорпоративный сегмент

Для малого проекта: self-hosted (CrowdSec, Coraza) + DDoS-Guard Basic при необходимости.

Авторизованные скрейперы

Наличие сессии не дает иммунитета. Подход: score для авторизованных *= 0.5, но не обнулять.

Дополнительные сигналы для авторизованных:

СигналЧто значит
Аккаунт < 1 часа, уже 100 запросовОдноразовый аккаунт
1 аккаунт с 5 IP за часШаринг токена между воркерами
1 IP с 10 аккаунтовФерма аккаунтов
Только API, никогда SPAНе пользователь

Блокировка аккаунта больнее блокировки IP — новый IP дешев, аккаунт с историей дороже.