Как определить мошенничество CPA-сетей с помощью Logs API Yandex.Metrika и R

Несколько дней назад я написал статью о том, как можно определить мошенничество CPA-сетей с помощью API Google Analytics. В этой статье я решил реализовать тот же самый алгоритм, только используя Logs API Yandex.Metrika.

Для тех, кто пока не понял о каком мошенничестве идет речь коротко излагаю суть проблемы: были замечены случаи, когда пользователям находящимся на сайте по прямому источнику трафика «внезапно» приписывались UTM-метки CPA-сетей. Участники таких сетей получают деньги тогда, когда целевое действие выполнено пользователями с такими метками. От себя добавлю, что я лично встречал такую подмену источников трафика на одном из украинских интернет магазинов.

В подтверждение этому явлению можно прочитать эту и эту публикацию, а так же отдельный кейс компании OWOX и Райффайзенбанка по этой проблеме.

В этой статье я хочу показать готовый код на R, который используя Logs API выгружает данные из Yandex.Metrika и находит случаи перезаписи (смены) источника трафика пользователя на одной и той же странице в пределах 60 секунд. Это решение имеет преимущество перед решением с API Google Analytics, поскольку оно работает для всех аккаунтов — в скрипте используются только стандартные для Yandex.Metrika поля. Самые нетерпеливые могут найти код скрипта внизу этой страницы.

Если вы никогда не использовали язык программирования R, то стоит для начала установить интерпритатор языка R (Windows/Mac) и R Studio. Так же, не забудьте установить все используемые библиотеки — команды для их установки находятся в конструкциях "#install.package". Чтобы установить библиотеку достаточно выделить комадну (без знака решетки) и нажать Ctrl+Enter (для Mac — Cmd+Enter). Чтобы запустить весь скрипт — можно выделить весь код и нажать Ctrl+Enter (для Mac — Cmd+Enter).

Дальше перейдем к конфигурациям скрипта, полный код которого находится внизу этой страницы. Обязательно перед запуском нужно:
  • в 9 и 10 строке нужно указать даты, за которые вы хотите выгрузить данные из Yandex.Metrika;
  • в 14 строке нужно указать Counter ID счетчика, из которого будут выгружаться данные. Это значение можно найти в интерфейсе Yandex.Metrika.
Остальные поля/строчки можно не менять. В каждой строчке кода находятся комментарии, потому можно разобраться в моей логике обработки данных и по необходимости усовершенствовать скрипт. Напомню, скрипт позволяет получить таблицу в Google Sheets, которая показывает список всех пользователей (ClientID), для которых на одной и той же странице в пределах 60 секунд была зафиксирована смена источника трафика.

Пример таблицы, которая получается в результате выполнения скрипта:

Подробнее о полях этой таблицы:
  • ym.pv.clientID — уникальный идентификатор пользователя;
  • ym.pv.UTMSource — перезаписанный источник визита пользователя;
  • ym.pv.UTMMedium — перезаписанный канал визита пользователя;
  • ym.pv.dateTime — пользовательское время на момент перезаписи источника;
  • ym.pv.URL — страница, на которой был перезаписан источник трафика;
  • ym.pv.referer — адрес страницы, с которой был совершен переход на текущую;
  • timeFromLastHit —столько секунд назад для этого пользователя был зафиксирован хит с другим (предыдущим) источником трафика;
  • lastPageURL —предыдущая страница пользователя, которую просмотрел этот пользователь перед перезаписью источника трафика;
Анализируя данные такой таблицы не забывайте за возможные случаи, когда один и тот же пользователь из одной поисковой выдачи в пределах 1 минуты может кликать по платным и органическим объявлениям одного сайта — такие случаи должны отображаться в таблице. Так же, если в такой таблице у вас в Referrer будут отображаться ссылки вашего сайта — это будет свидетельствовать о том, что у вас замечена подозрительная активность CPA-сетей.

Если вы тоже изучали этот вопрос (мошенничества СРА-сетей) — пишите в комментариях, какие случаи встречали и помогло ли мое решение в выявлении такой проблемы.

Версия скрипта для Yandex.Metrika (спасибо Алексею Селезневу за библиотеку rym):

Комментарии

  1. Спасибо за пост!
    Дмитрий, подскажите, как поправить сохранение client ID в символьном формате? При сохранении в CSV client ID сохраняется как число и не пригоден для дальнейшей работы http://take.ms/GRska

    ОтветитьУдалить
    Ответы
    1. Если еще актуально, то попробуйте в 41 строке вектор с ClientID конвертировать в String вот так:

      subrawmetrikadata$ym.pv.clientID <- as.character(subrawmetrikadata$ym.pv.clientID)

      Удалить

Отправить комментарий

Популярные сообщения из этого блога

Настройка Conversions API (Server-Side API) для Facebook Pixel

Как незаметно поломать систему аналитики для сайта на базе SPA

Как бесплатно настроить автоматический импорт расходов на Facebook Ads в Google Analytics