Почему одного признака недостаточно
Реальный пользователь может работать через корпоративный NAT, VPN, менеджер паролей или браузер с отключённым JavaScript. Бот может использовать браузер, распределённые адреса и реалистичные заголовки. Поэтому жёсткое правило по IP, User-Agent или наличию JS даёт ложные блокировки.
Соберите несколько независимых сигналов
Смотрите на скорость и регулярность действий, порядок переходов, повторяемость параметров, долю ошибок и соответствие операции ожидаемому сценарию. Для формы добавьте серверную валидацию и ограничение частоты; для входа — контекст аутентификации и защиту от перебора.
Оценивайте сигнал во времени и по конкретному маршруту. Поведение на странице каталога и на endpoint оплаты нельзя сравнивать одной шкалой.
Используйте ступенчатую реакцию
Низкий риск можно пропустить, средний — ограничить по скорости или отправить на дополнительную проверку, высокий — временно отклонить с безопасным ответом. Сохраняйте понятный путь восстановления и наблюдайте за долей ошибочных срабатываний.
Не показывайте атакующему точную причину решения. Внутри системы фиксируйте версию правила, маршрут и обезличенные метрики, чтобы результат можно было проверить.
Частые вопросы
Является ли отсутствие JavaScript признаком бота?
Нет. Это может быть настройка браузера, вспомогательная технология или техническая ошибка. Используйте такой факт только как один из сигналов.
Нужно ли ставить CAPTCHA всем посетителям?
Обычно нет. Ступенчатая проверка для подозрительных операций снижает трение для обычных пользователей и позволяет лучше измерять результат.