Как ботнеты притворяются людьми: fingerprinting, WebGL и следы подмены
Давайте поднимем логи и посмотрим правде в глаза. Бот, который просто шлёт клики с одного IP, мёртв по дизайну. Живой фрод сегодня имитирует браузерный отпечаток: user-agent, canvas, WebGL vendor, audio hash, timezone, locale, список шрифтов и размер экрана. На входе у вас не «бот», а аккуратно собранный псевдопрофиль.
Ключевая ошибка — проверять каждый сигнал отдельно. У людей параметры образуют связку: WebGL renderer совпадает с семейством GPU, timezone бьётся с языком интерфейса, а canvas-шума достаточно мало, чтобы не ломать стабильность отпечатка. У ботнета же обычно видны рассинхроны: один и тот же fingerprint всплывает на разных IP, WebGL vendor меняется, а audio hash скачет без причины. Ботнеты эволюционируют, но паттерны их поведения остаются прежними.
Смотрите на неестественную стабильность и неестественную пластичность одновременно:
— слишком много уникальных отпечатков при одинаковом поведении;
— одинаковый набор WebGL-параметров у разных сессий;
— резкие смены canvas/WebGL при неизменном IP и cookies;
— кластеризация по редким связкам: locale=RU, timezone=UTC+0, renderer=SwiftShader.
Вот технический разбор того, как именно уплывает ваш рекламный бюджет: фрод не пытается быть «реалистичным» во всех слоях сразу.
Защита строится не на одном фильтре, а на скоринге. Собирайте fingerprint history, сравнивайте последовательности, а не одиночные значения; считайте энтропию изменений; помечайте сессии, где WebGL, canvas и поведение расходятся в одном окне. Если отпечаток «чистый», но тайминг кликов, прокрутка и навигация выглядят как скрипт, перед вами не пользователь, а хорошо упакованный симулятор.
Защита от фрода в рекламе
@ad_fraud_shield_arb
Как ботнеты притворяются людьми: fingerprinting, WebGL и следы подмены
Этот пост опубликован в Telegram-канале Защита от фрода в рекламе. Подписаться можно по ссылке: @ad_fraud_shield_arb.