Причины:
- Бюджет: Готовые решения стоят от $200/мес (+ $0.01–0.10/тыс. запросов). Самописный вариант — только время инженера (~20–40 часов реализации и отладки).
- Сложность алгоритмов: Капча, JS-вызовы, поведенческий анализ (мыши, тайминги) — готовые CDN имеют готовые ML-модели. Самописно — нужны навыки JS, Lua (WAF) и анализа логов.
- Пропускная способность: SaaS-решения (Cloudflare) — до 10–50 тыс. запросов/сек без лагов. Самопис (Nginx + Lua) — надежен до ~500 rps на одном сервере, выше — кластеризация.
- Ложные срабатывания: Готовые решения агрессивнее блокируют (например, блокировка Googlebot без верификации). Самопис — полный контроль, но риск пропуска ботов при неверных правилах.
- Юридические риски: Готовые облака (DataDome) могут хранить логи за рубежом. Самопис — контроль локации данных (152-ФЗ).
Решение:
1. Трафик Nginx 100–2000 уник./сутки: Самопис.
Пример: бот-фильтр через гео (allow RU/UA) и User-Agent.
nginx
if ($http_user_agent ~ (python|requests|curl|scrapy) ) { return 403; }
if ($http_user_agent !~ (Mozilla|Chrome|Safari) ) { return 403; }+ Fail2ban для превышения лимитов 4xx (10 запросов/с с 1 IP).
2. Трафик > 2000 уник./сутки или коммерческий сайт: Готовое (Cloudflare Pro/Bot Management).
Причина: ML-сканирование поведенческих сигналов, мало ложных срабатываний на легитимный трафик.
Пример включения в conf:
bash
# В nginx отдать IP Cloudflare — они обрабатывают ботов
set_real_ip_from 173.245.48.0/20;
real_ip_header CF-Connecting-IP;Для защиты API — добавить rate limit (100 req/min на аккаунт) в Cloudflare WAF.
3. Если бюджет мал, а трафик 2000–5000 уник.: Гибрид — самописный WAF на Nginx/OpenResty с Coraza (OWASP CRS, 50 правил анти-ботов).
lua
-- OpenResty: блокировка по кукам
if not ngx.var.cookie_forbidden then
ngx.exec("@error401")
endЗатраты: 2 дня настройки, +0 ₽/мес. Риск: пропуск rate-limiting от ботов (добавить lua-resty-limit-traffic).
Вывод:
- Покупать, если трафик >2000 уников/сутки или бизнес-критичен uptime — SaaS выгоднее по времени.
- Настраивать самостоятельно для малого трафика, специфичных капч (RU-чаты), или контроль геолокации данных (ФЗ-152).