Нутра-кампания, затаргетированная на Германию, показывает CTR 4.8% — почти втрое выше среднего по аккаунту — и click-to-registration rate 22%, что обычно стало бы поводом сразу удвоить бюджет. Но кто-то открывает сырой лог кликов. Двести одиннадцать регистраций за день завершились за 2-4 секунды после клика. 68% этих кликов пришли из одной подсети /24, которая резолвится в дата-центровый ASN в стране, не являющейся таргетируемым гео. Ни одна из них не прошла дальше второго шага воронки. Эта кампания не «работала» — по ней били клик-фродом, и каждый потраченный доллар обучал алгоритм закупать ещё больше такого же мусорного трафика.
Это тихий режим провала платного привлечения: бот-трафик и невалидные клики не просто сжигают бюджет, который потребляют напрямую, — они портят сигнал оптимизации, по которому платформа ищет следующую партию пользователей. Кампания, загрязнённая на 15-20% невалидом, не выглядит сломанной — она выглядит как кампания с посредственным креативом, поэтому её убивают, или, что хуже, выглядит победителем, и её масштабируют. В любом случае оптимизация идёт под шум. Исправить это — не паранойя, а базовый контроль качества трафика: та же дисциплина, которую применяешь к любому показателю, определяющему, куда пойдут деньги дальше.
Что считается невалидным трафиком в платной кампании
«Бот-трафик» — собирательный термин, но источники невалидного трафика в реальной платной кампании делятся на несколько отдельных категорий, каждая со своей сигнатурой:
- Боты и краулеры — автоматизированные скрипты, скраперы и инструменты мониторинга, которые кликают по ссылкам без единого живого человека за ними. Часть из них вредоносные, часть — просто криво настроенные SEO- или uptime-инструменты, случайно попадающие в твою цепочку редиректов.
- Клик-спам — высокообъёмный клик с низким интентом, который генерирует малварь на заражённых устройствах, click-injection SDK, встроенные в низкокачественные приложения, или бот-фермы, работающие через пулы резидентных прокси, чтобы выглядеть менее подозрительно, чем дата-центровый трафик.
- Дата-центровый и прокси/VPN-трафик — клики, идущие от хостинг-провайдеров, облачных регионов или коммерческих proxy/VPN exit-нод вместо реальных резидентных или мобильных провайдеров. Часть реальных пользователей действительно сидит через VPN, но всплеск, сконцентрированный в горстке ASN, — совсем другая история, чем фоновый шум.
- Инсентивизированный или фейково конвертирующий трафик — трафик, который технически «реальный» (человек действительно тапнул по чему-то), но ему заплатили за клик или за имитацию конверсии, часто через клик-обменные сети или злоупотребление офер-воллами. Его сложнее всего поймать, потому что он проходит простые проверки на ботов.
- Кликовые атаки конкурентов — намеренное, повторяющееся кликанье по твоим объявлениям конкурентом или нанятым сервисом, чтобы сжечь дневной бюджет ещё до того, как реальные потенциальные клиенты вообще увидят рекламу.
Ни одна из этих категорий не выглядит как «0 конверсий, очевидный фейк». Самые дорогие варианты действительно немного конвертят, и именно поэтому сырых CTR и CR недостаточно, чтобы их поймать.
Сигналы, которые реально выдают бот-трафик
Каждая категория выше оставляет отпечаток где-то в данных, которые ты и так уже собираешь. Фишка в том, чтобы смотреть на комбинации, а не на отдельные метрики изолированно.
Аномалии CTR и CR. CTR, в 2-3 раза превышающий средний по аккаунту на одном плейсменте или одном источнике трафика, в паре с конверсией, которая либо подозрительно высокая (быстрая, однородная, слишком хорошая), либо сплошная стена кликов без какой-либо дальнейшей активности, — первый тревожный флаг. У реального трафика есть вариативность; сфабрикованный трафик обычно неестественно ровный.
Глубина сессии и время на странице. Живые посетители листают контент. Они скроллят, делают паузы, прыгают между двумя-тремя страницами перед конверсией или уходом. Бот-трафик часто показывает сессию с одним просмотром страницы и почти нулевым временем на ней, либо противоположную крайность — сессию, которая «висит» открытой часами, потому что соединение на самом деле никто не закрывает.
Репутация IP и ASN. Сверяй IP кликов с известными дата-центровыми диапазонами, публичными списками proxy/VPN exit-нод и владельцами ASN. Кластер кликов из AWS, DigitalOcean или опубликованных IP-диапазонов VPN-провайдера — сильный сигнал невалидного трафика сам по себе, а в сочетании с чем угодно ещё из этого списка — почти стопроцентный.
Тайминг клик-конверсия. Реальным пользователям нужно время, чтобы прочитать лендинг, оценить оффер и заполнить форму — даже быстрая, хорошо сделанная форма редко конвертится меньше чем за 3-4 секунды. Конверсия, срабатывающая через 1-3 секунды после клика, и так регулярно, указывает на скрипт, проходящий воронку программно, а не на человека.

Несоответствия устройства и user-agent. User-agent, выдающий себя за конкретный мобильный браузер, но без touch-event и viewport сигналов, которые прислало бы реальное устройство этой модели. Идентичные, устаревшие или криво сформированные UA-строки, повторяющиеся в «разных» сессиях, — классический отпечаток бота.
Расхождения гео. Гео, определённое по IP, которое не совпадает с таргетируемым, или совпадает, но находится в дата-центровом блоке, зарегистрированном на хостинг-компанию, а не на потребительского провайдера в этой стране, — оба варианта означают, что клик пришёл не от того, от кого утверждает платформа.

Разбор на практике: как читать сигналы вместе
Возвращаемся к немецкой нутра-кампании. По отдельности ни один из четырёх пунктов ниже не был бы поводом для жёсткой остановки — но вместе они не оставляют сомнений:
- Время клик-конверсия: медиана 2.8 секунды (базовый уровень по аккаунту: 94 секунды)
- Концентрация по подсети источника: 68% кликов из одной /24
- ASN: зарегистрирован на дата-центр/хостинг-провайдера, а не на резидентного провайдера
- Глубина сессии: 1 просмотр страницы, 0% глубины скролла — в 100% помеченных сессий
Любой отдельный сигнал мог бы быть совпадением — возможно, есть легитимная причина быстрого заполнения формы, возможно, одна офисная сеть делит блок IP. Но все четыре, наложенные на один и тот же срез трафика, — это уже не совпадение, а паттерн фрода, и именно такое нужно отфильтровывать и из расходов, и из отчётности, пока это не тянет среднее по аккаунту вниз и не убеждает алгоритм, что именно здесь живут твои покупатели.

Типы клик-фрода, сигналы и действия фильтрации
| Тип фрода | Основной сигнал | Действие фильтрации |
|---|---|---|
| Боты / краулеры | Известные UA ботов, отсутствие выполнения JS, мгновенный отскок | Блокировка по паттерну UA и поведенческому флагу на уровне трекера |
| Клик-спам (малварь/injected) | Высокий объём кликов, почти нулевая глубина сессии, повторяющиеся device ID | Рейт-лимит по фингерпринту устройства; лимит кликов на IP в час |
| Дата-центр / прокси / VPN | ASN-проверка совпадает с диапазонами хостинга или VPN-провайдера | Автоисключение помеченных диапазонов ASN из расходов и отчётности |
| Инсентивизированные / фейковые конверсии | Конверсии кластеризуются в короткие временные окна из узкого диапазона IP, низкий LTV дальше по воронке | Сверка с доходом/удержанием дальше по воронке перед зачётом конверсии |
| Кликовые атаки конкурентов | Повторяющиеся клики, один источник, без конверсий, бюджет быстро сгорает на одном плейсменте | Пометка и исключение на уровне источника; алерт на дневную концентрацию кликов |
Построение правила фильтрации: от сигнала к действию
Чтобы превратить эти сигналы в нечто применимое, их нужно выразить как условия, которые трекер реально может оценивать по каждому клику или сессии, а не просто разглядывать таблицу глазами, когда бюджет уже потрачен. Базовый флаг невалидного трафика объединяет несколько взвешенных проверок в один скор подозрения:
fraud_score =
(asn_is_datacenter_or_vpn ? 40 : 0) +
(click_to_conversion_seconds < 4 ? 30 : 0) +
(session_pageviews <= 1 && scroll_depth == 0 ? 20 : 0) +
(clicks_from_source_ip_last_hour > 25 ? 25 : 0) +
(ua_missing_expected_device_signals ? 15 : 0)
if fraud_score >= 60:
action = "exclude_from_spend_and_reporting"
elif fraud_score >= 30:
action = "flag_for_review"
else:
action = "pass"
Точные веса имеют меньшее значение, чем сама структура: ни один отдельный сигнал автоматически не убивает клик, но сигналы накапливаются, и исключается только трафик, пересекающий реальный порог. Именно здесь окупается слой кастомных метрик — вместо того чтобы вручную пересчитывать этот скор в таблице каждую неделю, ты определяешь его один раз как формулу над собственными данными кликов и конверсий, и он становится постоянной колонкой, которую можно сортировать, ставить на алерты и фильтровать — по источнику, по кампании, по дню.
Детекция против фильтрации: почему нужны оба процесса постоянно
Детекция говорит тебе, что проблема существует. Фильтрация — это то, что реально защищает аккаунт, и оба процесса должны работать непрерывно, а не как разовый аудит после того, как кампания уже слилась.
Детекция означает выявлять аномалии в момент их появления — источник, внезапно ускорившийся по скорости клик-конверсия, ASN, которого вчера не было, плейсмент, у которого за ночь обвалилась глубина сессии. Это задача мониторинга: нужна аналитика, которая разбивает перформанс по источнику, ASN и устройству, а не выдаёт одну усреднённую цифру по кампании, потому что именно усреднённая цифра прячет те 15% невалидного среза внутри в целом нормальной кампании.
Фильтрация означает действовать на основе того, что нашла детекция, — до того, как плохой трафик загрязнит распределение расходов или будет зачтён как реальная конверсия, которая пойдёт обратно в оптимизацию платформы. Это задача отдельных правил качества трафика, стоящих перед воронкой — они оценивают входящие клики по тому же набору сигналов выше и выводят помеченный трафик и из цифр эффективности расходов, и из счётчика «реальных» конверсий, автоматически, на каждом клике, а не только на тех, что кто-то случайно просмотрел вручную.
Запусти только детекцию — получишь очень информативный посмертный разбор кампании, которая уже потеряла деньги. Запусти только фильтрацию без цикла детекции за ней — правила устареют в тот момент, когда источники фрода поменяют IP или ASN, а они делают это постоянно. Нужны оба процесса, работающие вместе, как постоянная часть того, как оценивается трафик, а не как разовый проект по уборке.
Типичные ошибки
- Оценивать качество трафика только по CTR и CR. Высокий CTR с соответствующим CR выглядит победой ровно до момента, пока не проверишь глубину сессии и не увидишь, что каждая длилась меньше двух секунд. Усреднённые топлайн-метрики прячут именно ту аномалию, которую пытаешься поймать.
- Блокировать по стране вместо ASN. Исключение целого гео из-за всплеска фрода убивает заодно и всех реальных пользователей в этой стране. Сигналом никогда не была страна — это был дата-центровый ASN внутри неё.
- Считать один тревожный флаг доказательством. Один клик с VPN — ещё не фрод; использование VPN среди реальных пользователей — обычная и всё более распространённая практика. Фильтрация по одному сигналу вместо накопленного скора генерирует ложные срабатывания, которые незаметно режут хороший трафик вместе с плохим.
- Проверять качество трафика раз в месяц вместо постоянно. Источники фрода быстро меняют инфраструктуру — блок ASN, чистый на прошлой неделе, на этой может быть бот-фермой. Ежемесячный аудит фиксирует ущерб уже изрядно после того, как бюджет исчез.
- Засчитывать конверсии без проверки того, что происходит дальше. «Конверсия», которая никогда не превращается в депозит, квалифицированный лид или удержанный доход, — не конверсия, а цифра, которую фрод-сеть или инсентивизированный источник трафика подсунули тебе, чтобы выглядеть легитимно.
FAQ
Сколько на самом деле невалидного трафика в моих платных кампаниях?
Сильно варьируется в зависимости от вертикали, гео и платформы, но чаще всего цитируемые цифры держатся в районе 5-10% платных кликов как грубая базовая оценка, а отдельные кампании или конкретные источники трафика могут показывать значительно более высокие цифры, когда их активно атакуют. Любой фиксированный процент стоит воспринимать как стартовое предположение для проверки на собственных данных, а не как универсальную константу.
Можно ли полностью остановить клик-фрод, или только снизить его?
Полностью убрать его не получится — источники фрода адаптируются так же быстро, как улучшаются фильтры. Реалистичная цель — постоянно срезать долю невалидного трафика до уровня, который больше не искажает сигнал оптимизации и существенно не съедает бюджет, и регулярно перепроверять этот уровень заново, а не полагаться на набор фильтров полугодовой давности.
Влияет ли фильтрация невалидного трафика на отчётные объёмы?
Да, она уменьшает топлайн-цифры кликов и конверсий — но эти цифры и так уже были раздуты трафиком, который никогда не принёс бы дохода. Отчётный объём, построенный на невалидном трафике, — не актив, а шум, под который ты уже почти начал оптимизироваться.
Всегда ли быстрая конверсия означает фрод?
Нет. Некоторые реальные воронки — подписка в один тап, предзаполненная форма для вернувшегося пользователя — действительно конвертятся быстро. Именно поэтому тайминг клик-конверсия должен быть одним взвешенным сигналом в комбинированном скоре, а не отдельным правилом, автоматически отклоняющим каждую быструю конверсию.
Держать данные чистыми
Речь не о том, чтобы что-то от кого-то скрыть, — а о том, чтобы цифры, определяющие твоё следующее бюджетное решение, отражали реальных людей, которые действительно могут конвертиться. Трекер DarkCore оценивает входящий трафик по сигналам ASN, устройства, тайминга и сессии в момент поступления, поэтому невалидные клики отфильтровываются из расходов и отчётности до того, как испортят среднее хотя бы по одной кампании, а кастомные метрики позволяют точно определить, какая комбинация сигналов важна именно для твоих вертикалей, вместо того чтобы полагаться на общий чекбокс «это бот».
Если не уверен, сколько твоего текущего трафика прошло бы такую проверку, напиши нам в Telegram, и мы разберём, что на самом деле показывают твои логи кликов.