Боты · диагностика

Как отличить бота от человека: сигналы, ошибки и многофакторный подход

Надёжно отличать бота от человека по одному признаку нельзя. Даже navigator.webdriver, отсутствие JS, пустой referrer или необычный экран имеют исключения. Практическая защита оценивает согласованность нескольких источников и confidence.

Прямые признаки автоматизации

Некоторые среды оставляют технические признаки WebDriver/headless/injected runtime. Если marker уникален и проверен, он может иметь medium/high вес. Но generic Chromium anomaly нельзя честно называть «BAS detected» или «ZennoPoster detected» без уникального доказательства.

Главный инвариант

webdriver=false означает только «прямой маркер WebDriver не найден». Это не доказательство, что посетитель человек.

Browser и header consistency

Полезно сопоставлять User-Agent, Client Hints, platform, languages, timezone, viewport, screen, touch, device memory и hardware concurrency. Несогласованность может повышать риск, но каждый признак имеет легитимные исключения.

  • UA сообщает mobile, а набор параметров похож на desktop;
  • Sec-CH-UA-Platform конфликтует с browser telemetry;
  • viewport меняется невозможным образом за короткое время;
  • стабильная pseudonymous identity постоянно меняет coarse hardware profile.

Поведение и последовательности

Человек обычно создаёт более вариативные маршруты, но это статистика, а не закон. Боты могут имитировать задержки и мышь, а люди — быстро открывать десятки страниц. Sequence engine должен учитывать observations, unique visitors, confidence, decay и минимальную выборку.

Сильнее выглядит комбинация: одинаковая последовательность URL у множества независимых сессий + одинаковые интервалы + automation marker + IP rotation.

Challenge как независимый слой

Challenge полезен, когда risk достаточен для проверки, но недостаточен для жёсткого блока. Результат должен учитывать health самой подсистемы: если картинки не грузятся или provider деградировал, FAIL нельзя использовать как качественный training evidence.

Почему нужен confidence, а не бинарный флаг

EvidenceСмыслНе означает
webdriver=trueПрямой automation markerКонкретный продукт автоматизации
JS telemetry отсутствуетNO_DATA / слабый сигналBOT
plugins=0КонтекстHeadless автоматически
hosting ASNСетевой контекстВредоносность
Repeated healthy Challenge failСильное evidence в комбинацииPermanent ban после одной ошибки
Как это связано с AntiPF

Как AntiPF решает задачу

Browser Signals Lite собирает bounded telemetry, Risk Engine объединяет её с network/request/behavior evidence, Adaptive работает с history, а hard crawler/manual/security rules остаются выше статистического score.

МодульBrowser Signals Lite →МодульRisk Engine →МодульAdaptive Intelligence →СтатьяBrowser fingerprint →
FAQ

Частые вопросы

Есть ли признак, который на 100% доказывает человека?

Нет. Практическая система работает с несколькими источниками evidence и confidence.

navigator.webdriver всегда означает бота?

Это сильный automation marker для ряда сред, но решение всё равно должно учитывать контекст и политику.

Если JavaScript отключён, это бот?

Нет. JS может быть отключён privacy-настройками, CSP, расширением, текстовым браузером или crawler.

Можно ли использовать движения мыши?

Можно как слабый behavioral evidence, но их легко имитировать, а privacy/accessibility сценарии создают исключения.

Следующий шаг

Нужно проверить трафик на реальном сайте?

Пришлите домен и симптомы. Разберём, какие данные уже есть в логах и аналитике, какие сигналы имеет смысл собирать и где защита даст практический эффект.