Многослойная стратегия защиты публичного API от автоматизированного сбора данных. Ни одна техника не работает сама по себе — комбинация 3-4 техник создает достаточный барьер.
Принцип
Не делать непробиваемую стену, а повышать стоимость скрейпинга до неприемлемой. Каждый слой отсекает определенный процент скрейперов.
Фазы внедрения
Фаза 1 — минимум усилий, делать сразу
| Техника | Суть |
|---|---|
| Дифференцированный rate limit | Публичные списки 30 req/min, авторизованные 60-100 |
| Cursor-based pagination | has_more: true/false вместо total_count — скрейпер не знает объем данных |
| Лимит записей | Максимум 50 за запрос, даже если просят больше |
| robots.txt | Disallow: /api/, Crawl-delay: 10, запретить GPTBot/CCBot |
| Terms of Service | Юридическое основание для блокировки (прецедент hiQ v. LinkedIn) |
Фаза 2 — когда заметим скрейпинг
| Техника | Суть |
|---|---|
| HMAC-подпись запросов | Фронтенд подписывает каждый запрос, без подписи 403. Убирает ~95% казуальных скрейперов |
| Поведенческий анализ | Scoring по сигналам + tarpit (замедление ответов) |
| Honeypot-записи | Фейковая запись в списке (фронтенд фильтрует, скрейпер нет) + watermark-поле для отслеживания утечки |
Фаза 3 — внешние инструменты
| Техника | Суть |
|---|---|
| CrowdSec | IP-репутация + firewall bouncer. 1 контейнер, ~100 MB RAM |
| Coraza WAF | Open-source WAF (OWASP), Go. Production-ready через Caddy, nginx-коннектор экспериментальный |
| SafeLine WAF | Self-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 дешев, аккаунт с историей дороже.