Собственная фильтрация трафика на ClickHouse и Python: схема, которая не врет
Давайте поднимем логи и посмотрим правде в глаза. Если у вас фильтр живёт в Excel, а решения принимаются по CTR и «ощущениям», бюджет уже течёт в канализацию. Нормальная антифрод-схема должна собирать сырые события, хранить их без агрегации и давать быстрый ответ на запрос: кто кликнул, откуда, с какой задержкой и чем закончилась сессия.
База — ClickHouse как слой аналитики и Python как оркестратор правил. В ClickHouse пишите click_id, ip, ua, referrer, timestamp, geo, ASN, ttl-like признаки, цепочку редиректов и postback. В Python держите детектор: скорость кликов по IP/UA, повторяемость шаблонов, несостыковки между geo и языком, аномально короткие сессии, одинаковые cookie-less заходы. Ботнеты эволюционируют, но паттерны их поведения остаются прежними.
Минимальный набор правил:
— один IP → много click_id за короткое окно;
— один UA → десятки разных IP из одного ASN;
— клики без movement / scroll / focus-событий;
— конверсия идёт, но поведение до неё пустое, как SYN без ACK;
— редирект-цепочка стабильна до байта.
Схема не должна «банить» сразу. Сначала ставьте флаг, потом считайте доверие и режьте только при накоплении совпадений. Иначе вы сами создадите ложные срабатывания и начнёте убивать нормальный трафик вместе с мусором.
Вот технический разбор того, как именно уплывает ваш рекламный бюджет: не из-за одной магической ошибки, а из-за слабого контура, где события не связаны, правила не воспроизводимы, а фильтр нельзя пересчитать задним числом. Сделайте сырые логи неизменяемыми — и только потом учите Python искать фрод.
Защита от фрода в рекламе
@ad_fraud_shield_arb
Собственная фильтрация трафика на ClickHouse и Python: схема, которая не врет
Этот пост опубликован в Telegram-канале Защита от фрода в рекламе. Подписаться можно по ссылке: @ad_fraud_shield_arb.