Собственная фильтрация трафика на ClickHouse и Python: как не кормить ботов бюджетом
Давайте поднимем логи и посмотрим правде в глаза. Если у вас есть только postback и отчёт сети, фрод уже успел доехать до атрибуции. Нормальная защита начинается с сырого события: click_id, ip, ua, referrer, timestamp, geo, ASN, device hash. Всё это надо писать в ClickHouse без «улучшений» на стороне трекера.
Схема простая: Python принимает события, валидирует поля, шлёт батч в ClickHouse, а правила фильтрации живут отдельно в таблице признаков. Дальше считаем аномалии:
— слишком плотные клики с одного /24
— одинаковый UA при разном гео
— нулевой dwell time между клик и конверсию
— всплески по ASN с пустой историей
Ботнеты эволюционируют, но паттерны их поведения остаются прежними. В ClickHouse удобно держать скользящие окна и агрегаты по срезам: ip, subnet, ua_hash, landing_id. Python нужен не для «магии», а для оркестрации: собрать признаки, применить score, записать verdict. Слабое место многих реализаций — фильтр на уровне одного правила. Один сигнал обходится легко; пять сигналов уже превращаются в шумный, но читаемый след.
Вот технический разбор того, как именно уплывает ваш рекламный бюджет: сначала собирайте whitelist для своих источников, потом вводите score по 3–5 признакам, затем режьте только те связки, где аномалия повторяется в окне наблюдения. Не баньте по одному клику — баньте по устойчивому паттерну.
Итог простой: ClickHouse хранит правду, Python принимает решения, а антифрод без сырого логирования — это декорация.
Защита от фрода в рекламе
@ad_fraud_shield_arb
Собственная фильтрация трафика на ClickHouse и Python: как не кормить ботов бюджетом
Этот пост опубликован в Telegram-канале Защита от фрода в рекламе. Подписаться можно по ссылке: @ad_fraud_shield_arb.