Анализ данных о посещении сайта роботами и людьми в Яндекс.Метрике. Часть I

23 февраля, 2023

Материал о том, как в Яндекс.Метрике проанализировать аудиторию собственного сайта на предмет переходов роботов и настоящих пользователей согласно алгоритмам определения самого Яндекса. Часть первая.

Предпосылки

Слушатели моих онлайн-курсов нередко задают мне один и тот же вопрос:

Яков, а как отличить скликивание рекламы от реальных людей, переходы роботов от настоящих посетителей? Есть ли какие-нибудь алгоритмы или способы определения таковых в Яндекс.Метрике?

И да, и нет. Как вы знаете, у того же Яндекса в их рекламном сервисе Яндекс.Директ есть встроенный механизм определения скликивания, так называемый антифрод. Такая система фильтрует четыре основных типа некачественного трафика, где на разных уровнях отсеиваются разные типы фрода:

  1. Склик (кликфрод) - накрутка кликов с целью потратить бюджет рекламодателя. Возможность такого мошенничества вызывает больше всего вопросов и опасений;
  2. Скрутка - накручивание показов. Например, чтобы испортить CTR конкурентов. Как и поддельные клики, фальшивые показы не засчитываются системой;
  3. Повторные клики - при просмотре объявления пользователь нередко делает сразу несколько кликов: по заголовку, визитке, быстрым ссылкам. В таком случае рекламодателю нужно заплатить только за один переход по рекламе. Отследить остальные, «повторные» - серьезная задача для системы антифрода;
  4. Случайные клики - когда человек нечаянно нажал не на ту ссылку и сразу закрыл страницу.

Повторных и случайных кликов фильтруется больше всего, хотя они и не являются мошенничеством. В блоге Яндекса (материал за 2016 г.) подробно описаны основные шаги фильтрации каждого из этих типов фрода. Схожая информация представлена в их официальной документации.

Технология антифрода в Директе

На верхнем уровне воронки автоматически отсеиваются все очевидные боты, которых в сети очень много. Алгоритм работает на базе технологии машинного обучения Матрикснет. Эта система анализирует каждый клик, сверяясь со списком из 250 разных характеристик. При анализе учитываются сиюминутные признаки (время суток, сезон, география клика и так далее), а также некоторые события до клика и типичные паттерны поведения, которые свойственны людям и «человекообразным» роботам.

Яндекс не раскрывает факторы, которые применяются для оценки качества трафика, чтобы не облегчать задачу мошенникам. Фильтры меняются вместе с поведением пользователей — специальная служба асессоров Яндекса анализирует долгосрочные тренды в трафике, и если поведение пользователей меняется, правила работы антифрода также могут измениться.

Благодаря первым двум шагам фильтрации, львиная доля некачественного трафика отсеивается до того, как успевает повлиять на статистику и деньги рекламодателей. Но на этом работа антифрода не заканчивается: весь трафик проходит через дополнительные офлайновые фильтры.

Если в момент клика Директ анализирует разные типы данных по отдельности (домен, запрос, регион и т. д.), то на следующих этапах можно объединить все эти факторы и увидеть картину целиком, построив граф поведения пользователей. Аномальные уплотнения на графе сигнализируют, что пользовательское поведение отличается от нормы и помогают обнаружить сложные случаи фрода. Система антифрода использует распределенные алгоритмы кластеризации данных и каждый день изучает порядка 4 000 000 000 событий.

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

Вы можете просмотреть количество кликов, отсеянных системой защиты от фрода, в Мастере отчетов, в отчетах Общая статистика и Поисковые запросы в строке Недействительные клики:

Недействительные клики в Яндекс.Директе

Эта цифра может меняться со временем в случае признания части кликов недействительными при дальнейшей фильтрации. А в некоторых случаях Яндекс действительно может вернуть вам деньги за фрод, при условии, что это будет доказано по результатам проверки.

Возможно, вы не знали, но в интернете существуют специализированные площадки (кликфрод-фермы, биржи скликивания), на которых размещаются задания от реальных людей на скликивание рекламы такими же реальными людьми. Они чем-то похожи на сервисы накрутки подписчиков в социальных сетях. Алгоритмы работы очень схожи, особенно в плане автоматизации процессов.

Задания по скликиванию рекламы на бирже (пример)

За каждый клик по рекламе человек получает вознаграждение. Как правило, это небольшие суммы, но если эти заниматься профессионально и часть задач автоматизировать и поставить на поток, то заработать несколько тысяч рублей в месяц вполне реально. Мой друг имеет сервис в похожей тематике, поэтому порядок цифр и размеры заработка аудитории мне известны. Если этим заниматься в промышленных масштабах, а не на бытовом уровне, то суммы, разумеется, выходят другие.

В связи с этим отличить ручной фрод, когда реальные пользователи скликивают рекламу конкурента специально или же за вознаграждение, от хорошо накрученных ботов крайне сложно. Но даже если это делает сам бот/программа, а не человек, то выявить его все равно не так-то просто. Потому что ботов можно "нагуливать" - имитировать действия пользователя, делать их максимально похожими с целью их валидации (чтобы они не были заблокированы сразу и считалась за реальных пользователей). Тогда срок жизни такого бота будет дольше, и он сможет совершить большее количество действий, которые будут нужны его создателю.

Ваш покорный слуга был свидетелем уникальной демонстрации работы таких ботов. Пару лет назад мой друг написал программу, имитирующую поведение реальных пользователей на платформе YouTube. Сама программа открывала браузер, авторизовывалась под учетной записью Gmail на YouTube, затем переходила на какой-нибудь видеоролик, просматривала его, ставила на паузу, скроллила страницу, имитируя чтение комментариев, ставила лайк, переходила на другое видео из списка рекомендованных, затем сама вводила запрос в поисковую строку YouTube, и дальше переходила на один из результатов выдачи. После этого открывала профиль страницы пользователя и подписывалась на этот канал. И так в течение дня много раз, нагуливая профиль и совершая разные действия. А Google к этой учетной записи добавлял определенные интересы, сохранял историю лайков, просмотров, запросы в YouTube, подписки и т.д.

Все это делалось с одной простой целью - научиться обходить алгоритмы Google, чтобы в дальнейшем иметь возможность автоматически засчитывать лайки и подписки под видео для своего сервиса накрутки подписчиков и лайков, то есть проверять корректность выполнения задания исполнителем и выплачивать ему вознаграждение за работу. Часть таких ботов Google банил сразу, а часть не смог распознать и учитывал как реальных людей. Вопрос состоял лишь в том, чтобы обмануть алгоритмы Google таким образом, чтобы % заблокированных аккаунтов был менее 30% от общего числа и чтобы YouTube не скручивал лайки и подписки. Тогда использовать ботов в сервисе было экономически целесообразно. Через полгода тестов мой друг смог достигнуть результата в 85% валидации. То есть на выборке из 10000 ботов Google банил только 1500 (снимал лайки, подписки на канал), остальные 8500 продолжали работать в течение нескольких месяцев и учитывать все задания. Аналогично можно делать и в ВКонтакте, Twitter, TikTok, Quora, Reddit и других платформах.

Нагуливать профили ботов=пользователей можно как вручную, так и в автоматическом режиме. Мой друг написал программу самостоятельно. Но на рынке вы можете встретить и готовые решения. Наиболее популярной утилитой для задач автоматизации является программа ZennoPoster. Она позиционируется как средство автоматизации любых веб-задач, но может быть применена и в скликивании рекламы. Если вы зайдете на форум этого продукта, то узнаете очень много нового о возможностях программы и того, для каких целей ее можно использовать, в том числе и для накрутки поведенческих характеристик профилей пользователей:

Статьи про скликивание и использование программы ZennoPoster

Защита от скликивания

С другой стороны, фрод - это целая индустрия с оборотом, исчисляемым миллиардами долларов. Например, когда я работал в компании MobiSharks (подразделение Kokoc Group) и занимался рекламной мобильных приложений в 2017-2018 гг., 50% нашего трафика из Facebook *, Google Ads и myTarget являлось фродом! То есть практически каждый второй клик по рекламе был пустым. Поэтому мне приходилось закладывать эту цифру в экономику своего проекта. Со временем этот показатель снизился и в 2020 году уже составлял ~35%.

* Деятельность американской компании Meta (бывшая Facebook) запрещена в России, организация признана экстремистской

Ситуация в вебе, конечно же, лучше, но все равно не идеальна. Ведь, если звезды зажигают — значит — это кому-нибудь нужно? Значит — кто-то хочет, чтобы они были? (с) Яндекс с этим борется, но в меру своих возможностей и аппетитов.

Помимо Яндекса на рынке существуют специализированные сервисы, которые пытаются бороться с фродом. Принципы работы этих инструментов схожи. На ваш сайт устанавливается специальный код платформы (как правило, JavaScript), который начинает собирать данные о посетителях вашего сайта в общую базу данных платформы. Сбор информации происходит по многим метрикам, которые условно можно разделить на технические и поведенческие:

  • технические критерия - User-Agent, IP-адрес, провайдер трафика, география, файлы cookie, информация об устройстве, версия браузера, часовой пояс, язык, время клика, время конверсии, использование прокси и т.д. Сюда относится и fingerprint (цифровой отпечаток) - более продвинутая версия User-Agent. Он может содержать в себе множество других данных - свойства аудиокарты, видеокарты, список шрифтов, разрешение экрана, глубина цвета, отпечаток canvas вашего браузера, установленные плагины и другие специфические свойства;
  • поведенческие критерии - анализ движения мыши, анализ поведения пользователя, Google reCAPTCHA, скорость выполнения действий (клики, набор текста на клавиатуре, скроллинг/прокрутка страницы, просмотр видео), разница во времени между двумя событиями, общее время нахождения на странице, длительность визита и т.д.

Затем на основе определенных алгоритмов, заложенных в сервис, каждому критерию назначается определенный вес (рейтинг). После этого система анализирует все критерии визита/клика с учетом своей Big Data (большого объема данных, собранного не только с вашего сайта, но и с других проектов), автоматически производит расчет итоговой величины и присваивает конкретному визиту/клику соответствующий статус - Скликивание (Бот) / Качественный клик (Пользователь).

Вот пример таблицы из интерфейса сервиса CLICKFRAUD:

Пример данных (интерфейс сервиса CLICKFRAUD)

Как видите, напротив каждого визита пользователя/бота система назначает причины блокировки. При обнаружении подозрительных сессий алгоритмы сервиса блокируют показ рекламы ботам в будущем с помощью API. В следующий раз, когда бот попытается осуществить скликивание, ему просто не будет показана реклама в поиске Яндекс/Google или на сторонних площадках (например, в РСЯ).

После того, как сервис определил кликеров (ботов или людей, которые осуществляют скликивание рекламы), он автоматически передает эту информацию в Яндекс.Метрику на уровне пользователя (с привязкой к Client ID) с определенной меткой, используя API Метрики. Например, сервис CLICKFRAUD передает в качестве такой метки параметр пользователя isBadSession = 1:

Загрузка данных в Яндекс.Метрику (пример CLICKFRAUD)

По этому признаку (что это был плохой клик) в дальнейшем строится сегмент Яндекс.Метрики, и в Яндекс.Директе ему назначается корректировка -100%:

Сегмент в Яндекс.Метрике (по данным сервиса CLICKFRAUD)

Таким образом, ваши рекламные объявления не будут показываться нежелательным визитам. А имея большую базу ботов со всех сайтов рекламодателей, подключившихся к сервису, накопленные аудитории из разных аккаунтов контекстной рекламы, их сегменты из Яндекс.Метрики, а также активную базу ботоводов, промышляющих на различных биржах, сервисы типа ClickFrog, Botfaqtor и CLICKFRAUD могут помочь вам с выявлением нецелевой аудитории и сохранить ваш рекламный бюджет.

В рамках данной статьи я не планирую затрагивать способы борьбы с фродом, рекламировать какие-либо сервисы от скликивания, а также описывать их преимущества и недостатки, поскольку данная тема - очень обширная, на нее можно написать целую диссертацию (и не одну!), десятки статей, услышать сотни мнений, и каждое из них будет иметь право на существование. Более того, инструменты владельца сайта и веб-аналитика по борьбе с фродом ограничены, поскольку блокировка или обнаружение робота/бота фактически идет после перехода на ваш сайт, и не важно, был ли он с органической выдачи, рекламы или другого источника трафика. Он уже был осуществлен, то есть повлиял на ваши данные. Предугадать или предовратить такие переходы крайне сложно, а в некоторых случаях - в принципе невозможно. Поэтому мы всегда работаем с ПОСТ-ситуацией.

Если вы желаете познакомиться со скликиванием рекламы, то рекомендую начать свое знакомство с лекции eLama по скликиванию в Яндекс.Директе:

Цель же моего кейса несколько другая - познакомить вас с возможностями определения роботов в Яндекс.Метрике и показать на собственном примере и сайта какое количество роботов и реальных пользователей ежедневно посещает мой блог, чтобы вы в дальнейшем смогли сделать тоже самое для своего проекта. А все, что было написано выше - лишь прелюдия к основному действию.

Отображение роботов в Яндекс.Метрике

Наверняка вы знаете, что в Яндекс.Метрике существуют собственные механизмы определения роботов.

Роботы (согласно официальной документации Яндекса) - программы, которые обходят сайт с определенной целью. Например, для индексирования сайта или проверки его работы. Какие-то роботы представляются сами, другие — наоборот, стараются маскироваться под реального пользователя, чтобы аналитические системы их не вычислили. Метрика определяет роботов по поведенческим факторам и другим техническим сигналам.

Другими словами, Яндекс.Метрика выделяет два типа роботов:

  1. роботы, которые явно представляются, то есть являются реальными роботами. Например, роботы индексирования страниц, определяющие зеркала сайтов, или которые скачивают файлы с вашего сайта (целевые страницы, фавиконки, файлы календарей, контент, мультимедиа и т.д.) для проверки их доступности пользователям;
  2. роботы, которые притворяются людьми и которые не хотят, чтобы их обнаружили. Такие роботы вычисляются с помощью технологии машинного обучения

Владельцу счетчика также доступны настройки в самом счетчике. До обновления интерфейса пользователь мог сам выбирать фильтрацию о роботных визитах через интерфейс одним из доступных вариантов (раздел Настройка - Фильтры):

Фильтрация роботов (старый вариант)

  • учитывать визиты всех роботов (во всех отчетах Метрики будут учитываться посещения роботов);
  • фильтровать роботов только по строгим правилам (по умолчанию). Система выявляет роботов по IP-адресам и User-Agent. Обнаруживает не всех роботов, поэтому в отчетах могут быть всплески трафика или неопознанные переходы;
  • фильтровать роботов по строгим правилам и по поведению. Позволяет отфильтровать наибольшее число визитов роботов и снизить всплески неестественного трафика.

После обновления фильтрации роботов в Метрике из 3 способов осталось 2 - это фильтрация роботов по строгим правилам, которая сейчас активна по умолчанию, а также фильтрация роботов по строгим правилам и по поведению, активировать которую можно с помощью переключателя (раздел Настройка - Фильтры). Сейчас она называется просто Фильтровать роботов по поведению:

Фильтр роботов по поведению (новый вариант)

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

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

Опция данных по роботам и без над отчетом становится неактивной

Помимо текущей настройки в Яндекс.Метрике есть отчет по роботам. Он называется Роботы и находится в разделе Отчеты - Мониторинг:

Отчет "Роботы"

В этом отчете вы можете увидеть данные о действиях всех типов роботов, которые посещали сайт, с разбивкой по правилам фильтрации. Например, Отфильтрованы по поведенческим факторам или Отфильтрованы по отсутствию JS и Referer, и так далее. Сверху над графиком отображается % роботов от общего количества отправленных в Метрику данных:

Процент роботов от общего количества

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

Роботы, которые представились (их User-Agent известен), сразу исключаются из статистических данных. Их можно посмотреть как раз в этом отчете. Он поможет определить, например, приходят ли на сайт поисковые роботы, чтобы проиндексировать страницы. Таких роботов и у Яндекса, и у Google, и других поисковых систем много. В официальной справке Яндекс.Вебмастера приведен подробный список таких роботов Яндекса с именем, User-Agent и его назначением:

Таблица роботов Яндекса (часть таблицы)

По умолчанию, Яндекс.Метрика убирает из статистики роботов первого типа (которые явно представились и являются реальными роботами), а режим отображения Данные: без роботов убирает из статистики роботов еще и второго типа, которые маскировались под реальных пользователей. Этот режим активен сразу же и находится наверху каждого отчета:

Данные без роботов

В результате вы получаете максимально точные данные без искажений статистики. Сам Яндекс при построении и анализе отчетов рекомендует использовать именно режим без роботов, потому что наличие роботов в статистике может искать данные в Яндекс.Метрике. Исключив роботов, вы получите наиболее правдивые данные о поведенческих характеристиках - показателе отказов, времени на сайте, глубина просмотра. Именно они показывают вовлеченоость пользователей в ваш контент.

Конечно же, доля роботов является одним из индикаторов качества трафика. В Яндекс.Метрике вы можете сравнивать данные по каждому из источников между собой, чтобы увидеть какой канал приносит наибольший процент роботных визитов, а какой реальных пользователей. Чтобы посмотреть статистику с учетом роботности, над отчетом выберите Данные: с роботами. Тогда в таблице под графиком появится процент роботов из каждого источника:

Столбец "Роботность" в отчете

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

Показатель "Роботность"

Если вы желаете посмотреть абсолютные значения по роботам, то можете воспользоваться сегментами на уровне визитов. Для этого выберите Визиты, в которых - Роботность - Только роботы:

Роботность - Только роботы

Тогда в отчете вы увидите визиты, связанные только с роботами:

Сегмент по роботам

Сохранив этот сегмент, вы можете использовать его в собственных рекламных кампаниях Яндекс.Директа и задавать понижающие корректировки на данную аудиторию.

Чтобы сравнить статистику с роботами и без, в отчете в настройке Данные: без роботов выберите Сравнить с данными с роботами:

Сравнить с данными с роботами

Тогда в отчете статистика будет отображаться по двум сегментам для каждого показателя - Только люди (слева) и Все данные, включая роботов (справа):

Сравнение статистики с роботами и без

А выбрав в качестве графического отображения данных Колонки, вы можете визуально сравнить выбранные типы объектов:

Визуализация данных

Ручная фильтрация роботов в Метрике

Но как вы уже знаете, кликеры (боты или люди, скликивающие вашу рекламу) могут очень хорошо маскироваться под реальных пользователей. Так, что базовые алгоритмы Метрики не смогут их обнаружить. И тогда без ручной проверки фильтрации обойтись не получится.

Дополнительно к роботности вы можете воспользоваться Вебвизором и просмотреть подозрительные визиты в формате видео, проанализировать все действия пользователя и вынести окончательный вердикт на основе своего опыта и увиденного - был ли это бот или поведение напоминает реального посетителя сайта. Но только делать это нужно через отчет Посетители и клиенты, поскольку именно в нем все визиты привязаны к конкретному пользователю по уникальному идентификатору (Client ID) и есть возможность просмотреть видео конкретного визита за последние 15 дней, включая текущий день.

Изначально в отчете вы можете отфильтровать данные по определенным критериям, чтобы сократить перечень анализируемых пользователей. Например, оставить только профили, сумммарное время которых не превышает 30 секунд за 3 визита.

Пользователи, имеющие 3 визита и более с суммарным количеством времени <= 30 секунд

Последовательно открыв каждый из этих профилей, вы можете просмотреть визит в Вебвизоре, нажав на соответствующий значок:

Просмотр визита конкретного пользователя в вебвизоре

Если после анализа вы считаете, что данное поведение характерно для бота, а не человека, вы можете в его профиле добавить комментарий (например, BOT):

Комментарий в профиле пользователя

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

API Метрики и Python

Яндекс.Метрика и интерфейс - это хорошо. Но наибольший результат и гибкость при анализе данных о посещении вашего сайта ботами и людьми вы получите, когда начнете работать с данными Яндекс.Метрики вне интерфейса Метрики. А сделать это можно с помощью API и программирования. В качестве языка программирования я предлагаю использовать Python, поскольку он подходит для многих задач веб-аналитика и имеет большое количество библиотек, существенно упрощающих написание итоговой программы.

А проделав нижеописанные шаги, вы сможете получить такой результат:

Пример распределения роботов и пользователей по дням (Python)

Итак, API сервиса Яндекс.Метрика позволяет:

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

API Яндекс.Метрики состоит из:

  • API управления — позволяет управлять счетчиками, целями, фильтрами и другими объектами Яндекс.Метрики (создать счетчик, отредактировать его настройки, создать цель, выдать права доступа и т.п.).
  • API отчетов — позволяет получать информацию о статистике посещений сайта и другие данные, не используя интерфейс Яндекс.Метрики. Поддерживает все возможности отчетов Яндекс.Метрики: сегментацию, полный набор группировок и метрик, сравнение сегментов и т.п.
  • API, совместимый с Google Analytics Core Reporting API — поддерживает все возможности Google Analytics Core Reporting API (v3), но набор группировок и метрик ограничен.

Чтобы выгрузить статистику по посещениям ботов и людей с помощью API, мы будем использовать API отчетов. А о том, как это сделать и как написать свою собственную программу на Python, разобрано во второй части.

Получайте бесплатные уроки и фишки

По контекстной, таргетированной рекламе и аналитике