Защита от фрода в рекламе

Собственная фильтрация трафика: как связать ClickHouse и Python без потери сигналов

Собственная фильтрация трафика: как связать ClickHouse и Python без потери сигналов

Давайте поднимем логи и посмотрим правде в глаза. Если у вас фильтр живёт в Excel и ручных выгрузках, вы уже проигрываете: ботнеты эволюционируют, но паттерны их поведения остаются прежними — одинаковые UA, всплески по ASN, нереалистичная склейка кликов и конверсий.

Схема рабочая и приземлённая: Python принимает сырой поток событий, нормализует IP, user_agent, click_id, referrer, пишет всё в ClickHouse. Дальше в CH строятся окна по 1–5 минут: uniqExact по click_id, count() по повторным заходам, latency между кликом и постбеком, доля пустых рефереров, распределение по подсетям /24. Не ищите «магический антифрод» — ищите аномалии, которые ломают статистику.

Фильтр должен быть не бинарным, а скоринговым: 0–30 — пропуск, 31–70 — карантин, выше — резка. В Python удобно держать правила как набор функций: совпадение fingerprints, слишком ровный интервал между запросами, невозможная география по IP и Accept-Language, повторяющиеся цепочки редиректов. ClickHouse тут нужен не для красоты, а для быстрой агрегации и дешёвого ретроспективного пересчёта подозрительных сегментов.

SELECT
subnet,
count() AS hits,
uniqExact(click_id) AS u,
avg(postback_delay) AS d
FROM traffic
GROUP BY subnet
HAVING hits > 50 AND u = 1

Финальный совет простой: сначала собирайте сырые события, потом стройте скоринг, и только затем режьте трафик. Иначе вы будете фильтровать не ботов, а собственную слепоту.
Этот пост опубликован в Telegram-канале Защита от фрода в рекламе. Подписаться можно по ссылке: @ad_fraud_shield_arb.
tech

Свежие посты в категории «Tech Infrastructure»

Все каналы категории →

start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @dumay. Быстрый тест: $20 за канал, $1000 за пакет по сети.