{"id":13505,"url":"\/distributions\/13505\/click?bit=1&hash=ca3734639136826288c9056e5c8fa03a05e87c4060ae84df200f2c90f5262470","title":"\u0412\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a? \u0410 \u043f\u043e\u043d\u0438\u043c\u0430\u0435\u0442\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432 \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435 \u043a\u043e\u0434\u0430?","buttonText":"\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c","imageUuid":"f5f0e11f-fefd-52f5-8712-82164a59b7ce","isPaidAndBannersEnabled":false}

Скликали рекламу на 23 100 рублей за 8 дней. Как это происходит в реальности?

Меня зовут Максим Кульгин, и моя компания clickfraud занимается защитой от скликивания контекстной рекламы в «Яндекс.Директе» и Google Ads. Летом к нам обратился клиент, который захотел перед тем, как подключить защиту, проверить есть ли у него скликивание рекламы. Всегда ведь любопытно разобраться изнутри, что происходит на своем сайте и сколько там «паразитов». Делимся тем, что нашли.

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

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

Что тут видно? На сайт клиента было сделано 3 захода (визита) с одного IP- адреса (вот этот адрес 178.214.248.145) в один день (8 июня 2021 года). При этом каждый визит пользователя содержал одно действие (Actions, по сути один клик) и длительность первых двух визитов была порядка 6 секунд, третий 22 секунды (все визиты короткие). Источник определялся как город Уфа, оператор связи ufanet.ru. Все эти три визита были сделаны по контекстной рекламе Яндекс.Директ (поле referrername, видны utm метки, частично мы их удалили для конфиденциальности).

Почему именно это привлекло наше внимание и легло в основу публикации? Дело в том, что наша система защиты от скликивания считает «цифровой отпечаток» браузера, с которого был выполнен заход. И в данном случае он одинаковый (поле FingerPrint на изображении выше). Вот он:

48e3923c1519e3ac85e4859b542c13c5

Почему это важно? Если говорить сильно упрощенно, то «цифровой отпечаток» браузера — это механизм, используемый для отслеживания уникальности посетителей. Посетителям присваивается уникальный идентификатор («отпечаток», последовательность цифр и символов). При генерации идентификатора используется много информации о настройках и возможностях браузера посетителя.

Согласно результатам исследований, уникальность «отпечатка» браузера очень высока. Если говорить о статистике, то только раз на ~300 000 случаев случается полное совпадение отпечатков браузеров двух разных пользователей. Исходя из этого, мы можем с очень высокой вероятностью предположить, что по рекламе, в нашем рассматриваемом кейсе, кликал один и тот же пользователь (дальше будем называть его бот, хотя допускаем, что это был человек, которые вручную скликивал рекламу).

Есть ли способы генерировать на каждый визит уникальный «отпечаток» браузера? Да, но существует несколько ограничивающих факторов. Первый — не может быть бесконечное количество уникальных отпечатков даже при их генерации (иными словами всегда будет выборка из некой базы, конечное число), второе — это требует определенных усилий от кликера. Если вы посмотрите как работают программы по скликиванию то заметите, что это далеко не rocket science (ниже видео с youtube, если редакция оставит, то многое станет понятно). Есть расширения для браузеров, которые позволяют подделывать отпечаток, но при их обнаружении можно сразу вывешивать «красный флаг», т.к. 99% обычных пользователей вашего сайта эти расширения не нужны.

Посмотрите статью ниже, где мы как раз проводили анализ уникальности «цифровых отпечатков»:

Есть ряд исследований, который подтверждают, что самые обычные действия, которые приходят «на ум» для смены отпечатка браузера, не сильно помогут.

1. Файлы cookie: генерация «отпечатков» браузера не полагается на файлы cookie для создания уникального идентификатора. Таким образом, хотя их отключение может обеспечить некоторую степень конфиденциальности бота, оно не влияет на возможности получения «отпечатков».

2. Режим Инкогнито: этот метод неэффективен для предотвращения получения «отпечатков» браузера, так как доступны другие параметры, помимо истории просмотров, которые могут использоваться для идентификации посетителей. Кому любопытно, может посмотреть вот это исследование, которое демонстрирует возможности определения режима Инкогнито. Согласитесь, очень странно, если вдруг пользователь будет кликать по рекламе и заходить на сайт в режиме Инкогнито!

3. VPN подключение эффективно для сокрытия истории просмотров посетителя или сокрытия реального IP -адреса и геолокации пользователя. Однако это не очень эффективно для предотвращения получения «отпечатков», поскольку многие скрипты для их генерации не используют IP-адрес в качестве основного источника.

Есть несколько механизмов усложнения снятия «отпечатков», но и они не являются надежными. Некоторые браузеры предлагают встроенные функции; например, Firefox дает пользователям возможность блокировать сторонние запросы к сайтам, которые генерируют «отпечатки». Другой возможный способ уменьшить количество доступных источников — полностью отключить функциональные возможности, такие как canvas HTML или аудиоконтент, которые обычно используются для генерации «отпечатков». Однако многие сайты не будут правильно загружаться без этих технологий, и это позволит быстро выявить бота.

Возвращаемся к анализу, что получается? Бот в этот день кликнул три раза на рекламу в Яндекс.Директ, у него был в каждом случае один IP — адрес, один отпечаток браузера и… разные Яндекс.ClientID (поле YandexClientID на изображении выше). Обратите внимание на поле reCaptchaOdd с значением 0.1, мы чуть позже обязательно вернемся к этому, т.к. данное значение на 99% подтверждает наше подозрение, что это бот.

Что такое Яндекс.ClientID?

ClientID — это идентификатор, который Яндекс.Метрика автоматически присваивает каждому уникальному посетителю сайта. Идентификатор создается по сути случайным образом и определяет браузер, в котором посетитель просматривает ваш сайт. Если бот заходил на один и тот же сайт, например, с помощью Google Chrome и Opera, в Яндекс.Метрике будет зафиксировано два разных ClientID.

В нашем случае Яндекс.Метрика выдавала каждый раз разные ClientID одному пользователю-боту. Почему так? Чтобы ответить на этот вопрос, мы провели простой эксперимент и вы можете легко повторить его сами. Наш сотрудник зашел на один и тот же сайт напрямую три раза с одного ПК (рабочий ПК). Первые два раза он зашел с одного браузера с интервалом в один час, третий раз — он открыл сайт с браузером в режиме «Инкогнито».

Яндекс.Метрика корректно определила второй заход (мы специально выждали час, чтобы закрыть сессию) и присвоила одинаковые ClientID. А в третий раз (13.43), из-за режима «Инкогнито», был сгенерирован новый ClientID и для Яндекс.Метрика это по сути новый пользователь.

Возвращаясь к кейсу. С очень высокой вероятностью можно предположить, что скликивание осуществлялось каждый раз с очисткой cookies браузера, чтобы Яндекс.Метрика вновь идентифицировала пользователя как нового и соответственно присваивала новые clientID. Зачем? Чтобы данные клики учитывались как действительные и средства с бюджета Яндекс.Директ клиента списывались. По этому же принципу работают простые программы для скликивания (видео выше).

Давайте посмотрим, как часто пользователь с указанным «цифровым отпечатком» заходил на данный сайт вообще (по рекламе и нет). Посмотрите на изображение ниже. Это данные за один день. Видно, что заходы происходят постоянно.

Какие характеристики у этих визитов? Всегда одно действие (клик), 3-5 секунд на сайте и разные IP- адреса. Обратите внимание, что в некоторых случаях Яндекс не присвоил клиенту ClientID. Это может быть в нескольких случаях. Первый — бот слишком быстро ушел с сайта и счетчик Яндекс.Метрика просто не запустился, второй — Яндекс сам определил визит как бота и посчитал клик «недействительным». К сожалению, таких визитов мало. В основном каждый визит получает новый ClientID, при одинаковом «цифровом отпечатке». Только не пишите в комментариях, что Яндекс сам скликивает рекламу это, простите, полная ерунда. Ровно как и то, что Яндекс не борется с ботами. Просто основная задача Яндекса — продажа рекламы, в не борьба с кликфродом. Если посмотреть на Google то, несмотря на его колоссальные возможности, процветают сторонние сервисы, которые обеспечивают дополнительную защиту.

Как бот менял свой IP- адрес? Скорее всего он использовал прокси- сервера. Мы не будем писать детально что такое прокси, информации масса и я думаю читатель уже знает этот термин. Сейчас важно понимать, что все клики были по рекламе (тип источника campaign, что означает любой «платный источник»). Очевидно, что имеет место быть яростное скликивание рекламы.

Как часто этот бот менял IP- адреса при кликах на рекламу сайта? Мы сделали простую выборку, см. изображение ниже. Видно, что каждый IP- адрес использовался несколько раз (Visitcount) и легко заметить, что некоторые IP- адреса явно брались с одного пула (например 176.222.*.* или 176.214.*.*). Не так уж сложно купить пул адресов.

Почему мы вообще решили, что это бот? Дело в том, что в своей защиты мы используем несколько алгоритмов, которые работают последовательно, шаг за шагом идентифицируя ботов. В самих алгоритмах нет секретов, вы можете повторить их на своем сайте при наличии программистов. Например, мы проверяем вхождение IP- адреса в «черные» списки.

Если мы возьмем адрес 178.214.248.145 (см. изображение выше — это адрес бота), то можно легко проверить его на чистоту с помощью любого сервиса. Вы можете сделать это сами, перейдя по ссылке: https://dnschecker.org/ip-blacklist-checker.ph? query=178.214.248.145 (учтите, что через некоторое время адрес может уйти из черных списков, поэтому важно делать проверку оперативно). Данный адрес был найден в нескольких списках.

Что мы делаем еще? Мы проверяем визит с помощью Google reCaptcha v3, чтобы получить дополнительную оценку качества сессии. Если мы вернемся на изображения выше, то увидим, что для всех визитов ботов коэффициент reCapcha был равен 0.1 (очень высоко вероятно это бот в терминологии Google), а визит нашего сотрудника при проверке расчета Яндекс.ClientID дал коэффициент 0.9 (очень высоко вероятно это человек). Следом у нас работает алгоритм машинного обучения (если быть конкретнее, алгоритм К-ближайшее), который кластеризует все визиты, чтобы находить тех ботов, который стараются мимикрировать под обычных пользователей. В статье ниже мы подробно рассказываем про нейронную сеть.

Возвращаясь к поведению данного скликивающего бота. Мы посчитали, сколько раз вообще данный бот менял свое окружение так, что Яндекс.Метрика определяла его каждый раз как нового — 462 раза!

Почему мы решили, что это точно бот, ведь наверняка сказать невозможно? Это так, никогда нет абсолютно точной вероятности, что мы заблокировали именно бота. Но мы можем судить по подмене ClientID, по одинаковому цифровому «отпечатку» Fingerprint (который вкупе с другими данными только подтверждает нашу гипотезу). Такое поведение не похоже на действие реального пользователя. Также, чтобы убедиться, можно дополнительно посмотреть через Вебвизор в Яндекс.Метрика — часто действия ботов отличаются однообразием и линейностью движений мышкой, в то время как у реального пользователя они более хаотичны. Однако не всегда наши клиенты готовы предоставить доступ к данному инструменту нашим аналитикам, поэтому приходится полагаться на те данные, которые мы собираем сами в представленных в этом обзоре таблицах.

Данный клиент подключился к нашей системе 2 июня 2021. За 8 первых дней июня было сделано порядка 462 клика по рекламе. Мы не знаем стоимость одного клика, предложим, что она находится в пределах 50 руб. К сожалению, у нас нет доступа к Яндекс.Метрика/Яндекс.Директ, чтобы точно проверить какое количество кликов было признано Яндексом как недействительные, но из нашего опыта анализа других клиентов знаем, что при наличии Яндекс.ClientID в 80-90% случаев клики засчитываются как действительные и деньги списываются.

Нехитрая математика дает нам оценку потерь: 8 дней, 462 кликов * 50 руб. = 23 100 руб. (не стал делать поправку на 80% вероятности засчитать клики, т.к. предложенная стоимость клика в 50 руб. кажется не очень высокой для сферы деятельности бизнеса).

В заключении хочется чтобы был happy end. Клиент с нами, упомянутый бот был еще несколько дней и после блокировки (отключили ему показ рекламы) не появлялся (разумеется, мы анализируем по «отпечатку»). Но откровенно говоря защита от кликфрода — это как борьба «брони» и «снаряда». Бот, например, мог изменить свое окружение и появится с новым «отпечатком» браузера. В данном кейсе бот «туповат» и скорее всего ботовод не занимался сложными манипуляциями, а просто переключился на контекстную рекламу другой компании.

0
69 комментариев
Написать комментарий...
Ivan

Тут интересно другое, яндексу доказали? Деньги вернули?
Если нет, то смысл в этом?

Ответить
Развернуть ветку
Theodoro Karalenka

Яндекс же заинтересован в скликивании :)
Есть страшилка, что в подвалах Яндекса и Гугла есть секретные лаборатории, занимающиеся скликиванием, которое не отличишь от поведения реальных пользователей :-/
Они просто обязаны быть! %)
Как и лаборатории по созданию вирусов в подвалах антивирусных компаний

Ответить
Развернуть ветку
2 комментария
Максим Кульгин
Автор

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

Ответить
Развернуть ветку
9 комментариев
Alexandr Khu

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

Ответить
Развернуть ветку
Александр Кафтайкин

У нас была похожая ситуация, прогер добавил в код поле имя и фамилия но в форме их не отобразил, когда эти поля заполняются ipадрес отправляется в бан и данные не отправляются

Ответить
Развернуть ветку
1 комментарий
vvvvlll vvvlll

Enterprise recapcha вас спасёт :)

Ответить
Развернуть ветку
5 комментариев
Genio Genio

Сейчас проще заплатить блогеру, а не Я и G, где рекламная свалка, это вроде того, когда вы не замечаете рекламу на уличных носителях, потому что её перебор

Ответить
Развернуть ветку
Ivan Tischenko

Обычно на такие случаи я ставлю корректировку -100% на отказы, и не показываю рекламу одному и тому же юзеру более 2 раз, да это не защитит на 100% но помогает в большинстве случаев

Ответить
Развернуть ветку
Максим Кульгин
Автор

Clientid разный - и ваша стратегия Иван не поможет . Но да, это точно стоит делать

Ответить
Развернуть ветку
1 комментарий
Илья Константинович

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

Ответить
Развернуть ветку
Максим Кульгин
Автор

Илья мы блокируем показ рекламы боту в будущем. Вы правы деньги всегда теряются при первом клике

Ответить
Развернуть ветку
4 комментария
Ivan Tischenko

ну вот зачем вы такой красивый кейс испортили, человек писал, старался

Ответить
Развернуть ветку
1 комментарий
Lord Raiden

Добрый вечер , Максим. Делайте почаще видео на ютубе.

Ответить
Развернуть ветку
Влад Охотников

3 захода с одного браузера и быстрый клик по рекламе? Что именно вас тут насторожило? С теокыона постоянно ложные клики по рекламе. Открываешь сайт, хочешь что то сделать, а открывается рекламный ьанер на весь экран и ты случайно нажимаешь. А в мобильных приложениях это ещё чаще происходит. У меня сайт знакомств стоит Баду. Я листаю анкеты, и он постоянно подсовывает рекламу, на которую я каждый раз нажимаю и тут же делаю выход (возврат) назад...

Ответить
Развернуть ветку
Максим Кульгин
Автор

ip в черных списках, рекапча 0.1 (бот 99%)... а больше ничего не насторожило :)

Ответить
Развернуть ветку
2 комментария
Василий Новоселов

В этом году со скликом творится что то невероятное.
в разных регионах в конкурентных нишах просто жесть.
В МСК клиенты получают прямо на рабочие телефоны вот такие сообщения.

Ответить
Развернуть ветку
Максим Кульгин
Автор

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

Ответить
Развернуть ветку
Станислав Виленский

Смысл сервиса можно проверить только ч учётом сквозной аналитики, подключили сервис, отмотали, есть рост лидов и снижение стоимости, значит сервис полезный, остаётся всё тоже самое, значит пустая трата денег

Ответить
Развернуть ветку
Serg Ignatov
на ~300 000 случаев случается полное совпадение отпечатков браузеров двух разных пользователей

Только если это не iPhone + Safari одной версии - вариантов не очень много

Ответить
Развернуть ветку
Михаил Шевченко

А какая цель бота? И автора бота? Нагадить вашему клиенту? Ведь бот, это время и затраты ресурсов, пусть и не большие возможно.

Ответить
Развернуть ветку
Максим Кульгин
Автор

Конкурентны в поиске скликивают, веб мастера в РСЯ. Цель одинаковая - заработать самому

Ответить
Развернуть ветку
Алексей Додонов

А вот приведенная математика про 23 тысячи - какой процент забаненых ботов пришел бы еще раз на сайт? То есть бот пришел, деньги списались, мы его идентифицировали как бота и забанили. Но если он больше никогда на сайт не придет, то получается, что можно было бы и не банить его. Он больше урона не принесет.

Ответить
Развернуть ветку
Максим Кульгин
Автор

В этом случае он больше не пришёл по рекламе - мы отключили ему показ рекламы на площадках и в поиске.

Ответить
Развернуть ветку
Dan Priwalow

При играх, на телефоне, могу и 20 раз нечаянно кликнуть. Рекламодатели, простите пожалуйста.

Ответить
Развернуть ветку
Василий Новоселов

Такие вещи отсеиваются на уровне блока площадки, и это надо делать регулярно. Там где есть рекламные блоки неудачно расположенные всегда будет сумашедший CTR

Ответить
Развернуть ветку
Ivan

Думаете просто бот гуляет и скликивает всех подряд? Может заказ... на сайт, но так от бота не избавится... сменит фингер (раскладкой например) и опять. Просто мне кажется цель была не прогнать, а денежки сохранить/вернуть. Именно тогда получается защита от бота, а не "пугало".

Ответить
Развернуть ветку
Максим Кульгин
Автор

можно и так и так. чаще это да, заказ на скликивание.

Ответить
Развернуть ветку
Сергей Поляков

Статья по объему больше, чем код скликивалки.

Ответить
Развернуть ветку
Евгений Демюк

Это все конечно интересно , только как это работает скажем в рекламе AdWords ? Эдвордс вобще скликивается на ура а деньги не возвращает ?

Ответить
Развернуть ветку
Максим Кульгин
Автор

Ровно так же как и в Яндекс . Только к счастью там лимит 500 адресов на 1 кампанию , а в Яндексе 25

Ответить
Развернуть ветку
Vladimir Sobolev

Может у вас есть уже готовые базы ботов/отпечатков и вы можете предоставить (платно) к ней доступ каким-то образом? Краудсорсить ее, например, как вариант.

Ответить
Развернуть ветку
Максим Кульгин
Автор

Есть конечно, но никто не просил :) я не думал что это ценно кому-то . Зачем она вам? Есть база ip и отпечатков

Ответить
Развернуть ветку
8 комментариев
Куприян Ермаков

Не понял, что такое "скликивания"? Раз не понял что это такое, значит не пойму статью. Не пойму, значит эта статья не для меня, я пошёл отсюда, читать не буду...

Ответить
Развернуть ветку
Артур Артурович

Статья больше для хабра,а не для этого ресурса

Ответить
Развернуть ветку
Максим Кульгин
Автор

Я старался писать максимально доступно. Ничего сложного

Ответить
Развернуть ветку
Bob Marly

Рекламка подъехала, МММ.. Почему это так важно??? Почему мы так решили??? Тупые устаревшие фразочки.

Ответить
Развернуть ветку
Читать все 69 комментариев
null