← Ко всем записям

Защита трафика

Внутри системы обнаружения кликфрода

14 мин

Как clickfraud.ru использует машинное обучение и поведенческий анализ, чтобы отличить реальные клики от бот-трафика. Архитектура, сигналы и гонка вооружений с фродстерами.

Обнаружение скликивания — задача состязательная. Каждый опубликованный сигнал обнаружения становится сигналом, который фродстеры научатся обходить. Поэтому писать об архитектуре — дело деликатное. Но общий подход стоит объяснить, потому что рекламодателю важно понимать, за что он платит.

Что мы обнаруживаем

Невалидные клики делятся на несколько категорий с разной характеристикой:

  • Клики конкурентов — ручное или полуавтоматическое скликивание с целью исчерпать рекламный бюджет. Детектируется через IP-кластеризацию, паттерны по времени и поведение в сессии.
  • Клик-фермы — координированное ручное скликивание с ферм реальных устройств. Одними IP-правилами не поймать — нужен поведенческий фингерпринтинг.
  • Автоматические боты — скрипты, выполняющие клики без участия человека. Ловятся через сигналы окружения браузера, паттерны исполнения JavaScript и отсутствие естественного поведения мыши.
  • Мотивированный фрод — паблишеры в CPA-сетях, генерирующие клики на собственных площадках. Требует кросс-сессионного анализа паттернов.

Стек сигналов

Система оценивает каждый клик на трёх уровнях:

1. Сетевые сигналы

Репутация IP, анализ ASN, определение датацентров и VPN, географическая несогласованность, идентификация прокси. Быстро и дёшево в вычислении, но всё легче подделать.

2. Поведенческие сигналы

Длительность сессии, поведение при прокрутке, паттерны движения курсора, скорость кликов, время на странице, взаимодействие с элементами. Боты, исполняющие JavaScript, могут подделать многое из этого, но не всё одновременно в масштабе — без наблюдаемых паттернов.

3. Паттерные сигналы

Кросс-сессионный анализ: появляется ли этот фингерпринт в кампаниях разных рекламодателей? Кластеризуется ли время кликов способом, несовместимым с органическим поисковым поведением? Эти сигналы требуют исторических данных и становятся точнее со временем.

ML-компонент

Нейросетевой слой был профинансирован грантом ФСИ и развёрнут в 2020 году. Он потребляет на вход выходы стека сигналов как признаки и выдаёт оценку вероятности фрода для каждого клика. Модель переобучается периодически на размеченных данных нашей аналитической командой.

Важное проектное решение: мы не блокируем в реальном времени. Мы анализируем и формируем отчёт. Рекламодатели изучают отчёты и запрашивают возвраты или компенсации у рекламных площадок. Это медленнее, чем блокировка в реальном времени, зато исключает ложные срабатывания, которые могли бы заблокировать реальных покупателей — для большинства рекламодателей это хуже самого фрода.

Гонка вооружений

Фродстеры реагируют на сигналы обнаружения. Когда мы улучшили IP-детекцию, клик-фермы перешли на резидентные прокси. Когда улучшили детекцию поведения в JavaScript, продвинутые боты начали имитировать более реалистичные движения мыши. Это непрерывный процесс, а не решённая задача.

Реалистичная цель — не 100% обнаружение. Цель — сделать фрод достаточно дорогим, чтобы экономика перестала сходиться для фродстера. Когда процент обнаружения достаточно высок и клик-ферме нужно тратить на инфраструктуру обхода больше, чем она зарабатывает на фроде, — фрод прекращается.

Детекция — это не разовое инженерное достижение. Это операционная дисциплина: систему нужно мониторить, обновлять и улучшать непрерывно, по мере того как эволюционируют паттерны атак.

— из внутреннего архитектурного обзора, 2021

Максим Кульгин

Максим Кульгин

Санкт-Петербург · канал «без смузи»

Об авторе