Как собрать фильтр трафика на ClickHouse и Python, чтобы ботам стало некомфортно
Давайте поднимем логи и посмотрим правде в глаза. Собственная антифрод-схема не начинается с «модели», она начинается с сырого event stream: click_id, ip, ua, referer, timestamp, geo, session depth. ClickHouse тут нужен не для красоты, а для быстрых срезов по миллионам событий и поиска аномалий по группам, а Python — для правил, скоринга и оркестрации пайплайна.
Базовая архитектура проста: ingest → нормализация → агрегации → decision layer. В ClickHouse храните сырые клики и конверсии в отдельных таблицах, а поверх стройте materialized views: частота кликов по IP / UA, повторяемость subnet, окна времени между событиями, доля пустых referer и однотипных сессий. Ботнеты эволюционируют, но паттерны их поведения остаются прежними: слишком ровный интервал, слишком одинаковый маршрут, слишком много шума в заголовках.
В Python не пытайтесь «угадать фрод» одной магией. Делайте стек правил: IP reputation, velocity check, fingerprint consistency, anomaly score по z-score или isolation forest, затем итоговый decision engine. Если правило ложно режет живой трафик — оно обязано получать вес ниже и уходить в tg-spoiler: review queue, а не в блок.
Важно не перепутать фильтр и кладбище данных. Любое решение должно писать причину: rule_id, threshold, feature snapshot, action. Вот технический разбор того, как именно уплывает ваш рекламный бюджет: без лога вы видите только «просадку», с логом — конкретный слой атаки и точку, где его можно отрезать.
Сначала постройте прозрачные правила и только потом усложняйте математику. Иначе ClickHouse будет хранить красивую статистику о том, как вас методично доят.
Защита от фрода в рекламе
@ad_fraud_shield_arb
Как собрать фильтр трафика на ClickHouse и Python, чтобы ботам стало некомфортно
Этот пост опубликован в Telegram-канале Защита от фрода в рекламе. Подписаться можно по ссылке: @ad_fraud_shield_arb.