Перейти к содержимому
Назад в Академию

Мобильный фрод: как проверить установки новой рекламной сети

11.07Мобильная аналитика и атрибуция
Содержание статьи

В сентябре все платные установки приложения доставки продуктов пришли из четырёх сетей: Meta, TikTok, Google и Apple Ads. Приложение и сентябрьские цифры те же, что в уроке про MMP на практике, все цифры условные. В октябре маркетолог добавил пятый источник: небольшую сеть, которая показывает рекламу внутри других Android-приложений и берёт 250 ₸ за установку, дешевле TikTok. За 1-14 октября сеть принесла 4 000 установок на 1 000 000 ₸, и за первую неделю после установки (D7) эти пользователи сделали 360 первых заказов. Это 2 778 ₸ за первый заказ против 4 000 ₸ у Google и 5 000 ₸ в среднем по сентябрю, и маркетолог предлагает утроить бюджет. Прежде чем соглашаться, выясните, кого сеть привела на самом деле.

Заказ и его источник сверяют отдельно

  • Поддельная установка

    Установку и события подделали

    Сверяют first_purchase с системой заказов по номеру заказа

  • Перехват атрибуции

    Человек поставил приложение сам

    Мошенник отправил клик от его имени

    Заказ настоящий, под вопросом источник

Оплата за первый заказ вместо установки оставляет риск кражи атрибуции.

Поддельные установки сверяют с заказами; при перехвате атрибуции настоящий заказ остаётся, а источник требует отдельной проверки.

Почему с SRN этого вопроса не было

Четыре сентябрьские сети - самоатрибутирующиеся (SRN): трекинговой ссылки у них нет, и установку они заявляют сами, по своим данным, когда MMP спрашивает их по рекламному идентификатору устройства (как AppsFlyer работает с SRN). Новая сеть работает через ссылку атрибуции: о каждом клике она сообщает в AppsFlyer, и тот отдаёт установку последнему клику в окне, даже если раньше человек кликнул рекламу Meta, так что почти все схемы ниже работают через эти клики.

Поддельный человек и украденная установка

Adjust делит мобильный фрод на два вида (классификация Adjust). В первом настоящего человека нет: установку и события подделали. Во втором человек сам ставит приложение, а мошенник подкладывает клик от его имени и забирает атрибуцию себе. AppsFlyer делит так же: поддельная установка (fake install) и перехват атрибуции (attribution hijacking) (причины блокировки в Protect360).

СхемаЧто подделаноЧто видно в данныхAppsFlyerAdjust
Click spamming (click flooding)Клики за людей, которые рекламу не виделиCTIT растянут на всё окно атрибуции, падает органикаProtect360 блокирует клики с площадок с низкой конверсией и длинным CTITDistribution Modeling
Click injection (у AppsFlyer install hijacking)Клик, отправленный, когда скачивание уже началосьCTIT в секундах, клик позже начала установкиProtect360 ловит короткий CTIT и сверяется с серверным API Google PlayClick Injection filtering
SDK spoofingСообщения SDK без устройстваУстановки и события в MMP есть, а аккаунтов и заказов в бэкенде нетПроверка подлинности сообщений SDK (SDK authentication), включена во всех приложенияхSDK Signature
Боты и фермы устройствУстановки на эмуляторах или стойках с телефонамиМного новых устройств, VPN и адреса дата-центров, почти нет регистрацийProtect360 смотрит на долю новых устройств, чёрный список IP включён у всехAnonymous IP filtering

Отсюда главное: сверка с заказами ловит только первый вид. Во втором заказ настоящий, деньги пришли, под вопросом только источник, как на картинке. Поэтому оплата за первый заказ (CPA) вместо оплаты за установку от кражи атрибуции не спасает. Подделку событий у доставки ловит сверка first_purchase с системой заказов по номеру заказа, как в уроке про интеграцию SDK.

CTIT: время от клика до установки

CTIT (click to install time) - время от клика, которому засчитали установку, до первого запуска приложения. В него входят магазин, скачивание и ожидание, пока человек откроет приложение.

У вендоров свои ориентиры. В гайде по Protect360 AppsFlyer пишет, что больше часа от клика до запуска обычно проходит у 30% установок, а подозрение вызывает площадка, где таких больше 50%. Больше пяти часов - обычно у 20%, подозрительно больше 40%. Adjust по своим данным насчитал в нормальном трафике больше 85% установок в первый час, и если у источника большая часть конверсий приходит через 60 минут и позже, его фильтр начинает отклонять клики. Нормы у вендоров разные, поэтому надёжнее сравнивать площадки одной сети между собой в одни и те же недели.

Короткий CTIT - след другой схемы. Android сообщает установленным приложениям, что ставится новое, и вредное приложение присылает клик, когда скачивание уже началось. Google Play отдаёт приложению время начала установки, и клик позже этого времени выдаёт подкладку. По словам Adjust, click injection бывает только на Android.

Если в вашей выгрузке времени начала установки нет, ориентиром служит сам CTIT. Свои пороги AppsFlyer не раскрывает, поэтому 10 секунд - порог этого урока: за такое время человек не успеет перейти в Google Play, скачать приложение доставки и открыть его.

Разбор теста по площадкам

На время теста сервис подключил сырые данные AppsFlyer (на тарифе Growth это платное дополнение): без времени клика (Attributed Touch Time) и времени установки по каждой строке сеть не проверить. В каждом клике сеть передаёт af_siteid, идентификатор площадки, то есть приложения, где показали рекламу (параметры ссылки атрибуции). Маркетолог сгруппировал установки по af_siteid и посчитал по каждой площадке CTIT, регистрации и первые заказы за D7. Регистрация sign_up - это номер, подтверждённый кодом из SMS, и адрес в зоне доставки (план событий).

Площадка (af_siteid)УстановкиCTIT до 10 сCTIT больше часаsign_up за D7Первые заказы за D7
10421 0001%25%10 (1%)0
22109000%70%450 (50%)135 (15%)
310550055%10%200 (40%)65 (13%)
Остальные площадки1 6001%30%640 (40%)160 (10%)
Вся сеть4 0007,5%35%1 300 (32,5%)360 (9%)

По сети в целом больше часа прошло у 35% установок, и по ориентиру AppsFlyer это почти норма. По площадкам картина другая.

1042. Тысяча установок, 10 регистраций и ни одного заказа: на шаге с кодом из SMS и адресом остановились 990 устройств. За такими установками либо нет людей (ферма устройств, эмуляторы, поддельные сообщения SDK), либо приложение поставили ради чего-то другого, например за бонус в другом приложении. Какой из вариантов, без Protect360 не определить, но для оплаты разницы нет: за 250 000 ₸ сервис не получил ни одного клиента.

2210. У 70% установок от клика до запуска прошло больше часа, а на остальных площадках той же сети таких 30%. При этом покупатели у 2210 лучшие в сети: 15% первых заказов, как у Google в сентябре. Так выглядит click spamming: сеть рассылает клики за огромное число людей, и когда кто-то из них сам ставит приложение, последний клик оказывается у неё. При такой схеме люди настоящие, просто привела их не сеть. AppsFlyer прямо пишет, что у таких источников конверсия кликов низкая, а пользователи хорошие, потому что реальные.

Дальше смотрят, у кого эти установки могли пропасть. Органических установок на Android за 1-14 сентября было около 300, за 1-14 октября 150. У Meta и Google на Android вместе 2 000 установок за 1-14 сентября и 1 650 за 1-14 октября, хотя расходы у них в октябре не менялись: в примере это допущение. TikTok сюда не берут: в октябре у него сменились география и событие оптимизации. Вместе пропало около 500 установок, и эта пропажа объясняет примерно половину установок 2210. Двух недель для вывода мало: спрос в начале октября мог отличаться от сентябрьского. Ответ даст тест: выключить 2210 на две недели и сравнивать вторую, потому что в первую ещё досчитываются установки по старым кликам из семидневного окна. По Attributed Touch Time проверьте, что установок с кликами 2210 после отключения нет, и посмотрите, вернутся ли органика и установки Meta и Google на Android.

3105. У 55% установок от клика до запуска прошло меньше 10 секунд. Это след click injection. Регистрации и заказы нормальные, 40% и 13%: если это подкладка, люди начали установку сами, а сеть подставила клик в последний момент. Пришёл ли клик позже начала установки, по одному CTIT не сказать, поэтому вывод вероятный, а не окончательный.

Остальные площадки. 1 600 установок, 30% дольше часа, 40% регистраций и 10% первых заказов, как у Meta в сентябре. Похоже на обычный трафик из рекламы в приложениях.

Теперь деньги. В худшем случае, если 2210 и быстрые клики 3105 целиком забрали чужих покупателей, сеть привела не 360 первых заказов, а от 160 (одни остальные площадки) до 225 (если все заказы 3105 пришли от обычных кликов). Это от 4 444 до 6 250 ₸ за первый заказ вместо 2 778 ₸, примерно как у Meta. Если чужими окажутся только те 500 установок 2210, которые объясняет пропажа, а 3105 чистая, выйдет около 285 заказов (160 + 60 с оставшихся 400 установок 2210 + 65), около 3 500 ₸ за первый заказ. Остальные площадки отдельно стоят 400 000 ₸ и дают 160 первых заказов, по 2 500 ₸: их и стоит тестировать дальше.

Фрод после атрибуции

Protect360 работает в два слоя (гайд по Protect360). Первый блокирует установку в реальном времени, второй находит фрод уже после атрибуции, в день установки и до 7 дней после, и отмечает её в отчётах Post-attribution. Приложение у человека работает в обоих случаях, меняется только атрибуция. С Protect360 AppsFlyer советует сверяться с сетью в начале месяца по отчётам Blocked и Post-attribution.

У сервиса доставки Protect360 нет. На тарифе Growth у AppsFlyer базовая защита (Basic fraud protection), а Protect360, защита после атрибуции и правила проверки (Validation Rules) отмечены только в тарифе Enterprise (тарифы AppsFlyer). Поэтому сверка своя: сырые данные, af_siteid и заказы за D7. Платить сети раз в месяц, когда у установок последнего дня месяца прошли 7 дней, а не авансом каждую неделю: иначе вы оплатите установки, которые сами потом отбракуете.

У Adjust такие фильтры собраны в Fraud Prevention Suite, это отдельный платный пакет. Библиотека SDK Signature, как правило, уже входит в SDK Adjust версии 5, а отклонение трафика без подписи включают в настройках.

Договор до первого клика

С сетью, которая работает по ссылке атрибуции, условия записывают до запуска:

  • Оплачиваются установки из AppsFlyer, кроме заблокированных и установок с площадок, отключённых по порогам. Сверка после D7 последних установок месяца, оплата после сверки.
  • В каждом клике есть af_siteid, и сервис может отключить любую площадку своим решением.
  • Пороги по площадке названы заранее, например: CTIT больше часа не более чем у 50% установок, по ориентиру AppsFlyer, а доля sign_up не ниже половины средней по приложению. Площадка ниже порога по регистрациям приводит тех, кто не может или не собирается заказывать.
  • Объём теста такой, чтобы команда успевала разбирать его каждую неделю, и потолок бюджета.

Задание: план проверки для своей сети

Возьмите приложение, с которым работаете, или сервис доставки из урока:

Выполнено 0 из 6

Теперь ситуация. Менеджер сети отвечает на ваш разбор: «Длинный CTIT у 2210 - это нормально, люди скачивают вечером, а открывают утром. И покупатели у неё лучшие в сети». Что вы ответите?

Люди и правда открывают приложение утром, поэтому около 30% установок с CTIT больше часа - норма, и на остальных площадках сети их столько и есть. У 2210 их 70%. Довод менеджера можно проверить: если дело в привычке, клики 2210 приходят вечером, а установки утром. Посмотрите в сырых данных время кликов по часам и долю CTIT больше пяти часов: норма около 20%, подозрительно больше 40%. Хорошие покупатели тоже не довод: при click spamming сеть присваивает настоящих людей, которые пришли бы и так. Органика на Android за те же недели упала с 300 до 150, хотя по двум неделям причину не назвать. Поэтому ответьте предложением: 2210 выключаем на две недели, и если во вторую неделю органика и установки Meta и Google на Android вернутся, её установки не оплачиваются. До результата оплату 2210 откладываем.

Видео: основные механизмы mobile ad fraud

Forensiq Fraud Labs: Understanding Mobile Ad Fraud

Обзор схем на английском от impact.com.

Нужна помощь с аналитикой вашего проекта?