Как ботнеты прячут себя под “живых” через fingerprinting и WebGL
Давайте поднимем логи и посмотрим правде в глаза: современный фрод редко палится одним признаком. Скрипт подменяет user-agent, но забывает про coherence между UA, canvas, WebGL vendor и timezone. В итоге у вас в потоках появляются “люди”, у которых GPU рендерит как серверная заглушка, а стек браузера звучит как сборная солянка из трёх устройств.
Типовые маски:
— WebGL vendor/renderer не совпадает с ОС и моделью устройства.
— Canvas, AudioContext и Client Hints меняются несинхронно.
— Слишком ровные интервалы между событиями: move, scroll, click идут как по таймеру.
— navigator.webdriver скрыт, но IP, язык, экран и часовой пояс не бьются в одну сессию.
Сильный ботнет не “рисует” одно поле, он строит правдоподобный профиль целиком. Поэтому ловить надо не по отдельному отпечатку, а по связности: одинаковые WebGL-сигнатуры на разных IP, повторяемые entropy-паттерны, конфликт между hardwareConcurrency и реальной нагрузкой, а также одинаковые ошибки рендера в canvas. Именно там торчит синтетика, даже если внешне всё выглядит прилично.
Защита строится на графе признаков: собирайте fingerprint как набор, считайте расстояние между сессиями и режьте кластеры с аномально высокой повторяемостью. Ботнеты эволюционируют, но паттерны их поведения остаются прежними. Если профиль слишком гладкий и слишком одинаковый — это не “качественный трафик”, это аккуратно отполированный мусор.
Защита от фрода в рекламе
@ad_fraud_shield_arb
Как ботнеты прячут себя под “живых” через fingerprinting и WebGL
Этот пост опубликован в Telegram-канале Защита от фрода в рекламе. Подписаться можно по ссылке: @ad_fraud_shield_arb.