Skip to content Skip to footer

Как бороться с фейковыми заявками на сайте в Яндекс Директ

Использование интеллектуальных стратегий в контекстной рекламе, при правильной ее настройке, работает гораздо эффективнее, чем при ручном управлении ставками. В этом я убедился на личном опыте, создав эксперимент в рекламной компании Google Ads, где бюджет и показы для двух стратегий (максимум конверсий / ручное управление ставками) делятся пополам. В результате за 4 месяца мне удалось снизить стоимость 1 лида со 120€ до 15-30 €, а их количество при том же бюджете увеличилось в 5 раз.

Точность обучения рекламной кампании в Яндекс Директ (максимум конверсий / оплата за конверсии) во многом зависит от количества и качества подаваемых конверсий в систему. Чем больше мы подаем целевых действий, тем точнее алгоритм учится находить более релевантные аудитории, и показывает ваши объявления людям, которые вероятнее всего совершат нужные вам действия, а именно покупку продукта или заказ услуги.

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

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

Казалось бы, ничего страшного, ну пусть клацают! Однако их действия мешают правильному обучению алгоритмов Яндекс Директа, и вместо того, чтобы приносить вам больше потенциальных клиентов, поисковик приводит еще больше ботов. В результате заказчик жалуется, оптимизаторы разочаровываются, и снова возвращаются к ручному управлению ставками.

Есть простой способ, который помог мне избавиться от фейковых кликов на сайте по номеру телефона, сообщений в окошко чата, и отправка заявок на сайте. Суть метода заключается в том, чтобы заменить тег ссылки, кнопки и элементы формы на обычный тег span. С помощью его стилизации через css и использования js мы можем полностью сымитировать ссылку, кнопку, и даже поля формы. Внешне они ничем не будут отличаться от реальных ссылок, а для ботов это будет обычный кусок текста, который он вероятнее всего проигнорирует, и не будет нажимать.

Имитация ссылки с помощью css/js

Пример имитированной ссылки для номер телефона: +7 977 XXX-XX-XX, и почты example@mail.ru.

Теперь как это сделать? Итак, создаем тег span с любым классом, чтобы применить нужные стили css и создать переадресацию на js при клике по элементу, вот таким образом. <span class=”telspan” data-type=”tel”>+7 977 XXX-XX-XX</span>. Внутри тега span вы указываете номер телефона, а в самом атрибуте (data-type) тип ссылки. Для номера телефона это “tel“, а для почты “mailto“.

Код CSS

Над нашим элементом или в общем файле стилей разместим такой код:

<style> .telspan { text-decoration:underline; color:#115399; cursor:pointer; } .telspan:hover { color:#ff5d0c; } </style>

Код Javascript

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

<script> (function() { document.addEventListener('DOMContentLoaded', function(){ document.querySelectorAll('.telspan').forEach( button => { button.onclick = function () { var anchor = this.innerText; var type = this.getAttribute('data-type'); var relink = type+':'+anchor; window.open(relink, '_blank'); return false; } }); }); })(); </script>

Имитация формы

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

Заказать звонок
Отправить

Код html для имитации поля input

Здесь мы создадим тег span с пустым содержимым, но с определенными атрибутами. Добавим к нашему тегу атрибут contenteditable=”true”, который позволит нам вносить данные в поле. Атрибут data-text заменяет классический placeholder в теге input. А уникальный идентификатор id необходим для передачи введенного значения на сервер. Так же в форме предусмотрено скрытие кнопки после первого нажатия. Это нужно для того, чтобы посетители не могли много раз нажимать на кнопку “отправить“, и чтобы одни и те же конверсии не дублировались.

<span contenteditable="true" class="refield" id="telefone" data-text="Введите ваш телефон"></span>

Код CSS для имитации поля формы

Стилизируем тег span под поле ввода, имитируя тег формы input.

<style> #reform .refield { display:block; width:calc(100% - 20px); padding:10px 10px; margin:15px 0 15px 0; font-size:16px; background:#fff; border:1px solid #999; box-shadow:inset 0 0 5px #e3dcdc; } #reform .refield:empty:before { content:attr(data-text); color:gray; } </style>

Код JS для отправки формы на сервер

При нажатии на кнопку “отправить” наш скрипт на js соберет введенные данные от пользователя, и отправит их на сервер с помощью технологии Ajax. Далее на сервере вы отправляете заявку на почту либо в телеграм.

<script> (function() { document.addEventListener('DOMContentLoaded', function(){ function sendRequest(yamessdat) { var request = new XMLHttpRequest(); request.open("POST", "https://domain.com/send.php", true); request.setRequestHeader("Content-type", "text/plain;charset=UTF-8"); request.send(yamessdat); } var rebut = document.querySelector("#resubmit"); rebut.onclick = function(e) { var ralert = document.querySelector('#yaload'); ralert.style.display="block"; var phone=document.querySelector('#telefone').textContent; var message=document.querySelector('#remess').textContent; ralert.innerHTML = 'Ваша заявка отправлена! Наш менеджер свяжется с вами по тел. '+phone; } var yamass={}; yamass["phone"] = phone; yamass["message"] = message; yamessdat = JSON.stringify(yamass); sendRequest(yamessdat); }); })(); </script>

Код PHP для обработки заявки

Чтобы принять отправленные данные через Ajax, создадим файл send.php на хостинге со следующим содержимым.

<?php $post = json_decode(file_get_contents('php://input'), true); // загоняем json в массив $post['phone'];// используем принятые данные по назначению ?>

Дополнительная защита от фродовых заявок

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

Ловушки от ботов

Вот несколько простых приемов, которые могут помочь распознать бота от реального пользователя.

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

Куки баннер

Также можно принимать во внимание дополнительные сведения о поведенческом факторе посетителей на сайте, и давать баллы нашему алгоритму в определении роботности: отнести действия визита к роботизированным или к реальному человеку. Например, к таким действиям можно отнести принятие куки на сайте. Если посетитель “принял / отклонил куки”, то подобный визит на 70% можно отнести к человеческому.

Оптимизация РК под принятие куки

Здесь еще дополнительно можно оптимизировать РК в Директе под принятие куки т.к. боты практически игнорируют куки баннер, он его как будто не видит. Попробуйте в Яндекс Метрике посмотреть видео визитов в инструменте Вебизор, и понаблюдайте за реакцией на куки баннер. Весело наблюдать как боты совершают какие то действия в скрытой области за баннером, и спокойненько там что то читают, нажимают на кнопки и переходят по ссылкам в навигации, которую не видно.

Сам Гугл в одной из своих статей о моделировании конверсий без использования куки рассказывает про очень интересную неявную закономерность. Исследования на большой выборке сайтов показали, что коэффициент конверсии у тех, кто отказался от установки файлов cookie, примерно в 2–5 раз ниже, чем у тех, кто ее разрешил.

Простыми словами, из 100 визитов, где пользователи нажали на кнопку принимаю куки, 5 человек совершают конверсию, а из 100 визитов без согласия куки – всего 1 человек. Более точные значения зависят от таких факторов, как доля согласия, отрасль и тип конверсии.

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

Как видите, для рекламодателя доля согласия куки составляет 50 %, но количество конверсий снижается только на 19 % (12 из 62), а коэффициент конверсии повышается на 18 % за счет моделирования конверсий.

Сервис виджетов против фейковых заявок

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

Как работает виджет

Посмотреть работу виджета WaConvert можно на сайте demarkett.com. На каждой странице сайта снизу в углу пульсирует кнопка ватсап, призывающая обратиться к оператору.

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


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

В момент нажатия нажатия на кнопку “перейти в ватсап” в Google Analytics автоматически отправляется событие под названием wa_browser_message, которое можно назначить как конверсию. Такое же событие можно отправлять и в Яндекс Метрику, а затем использовать в качестве конверсии в Яндекс Директ.

Так же на событие отправки сообщения можно добавить сколько угодно других действий-конверсий (Facebook Ads, Tik Tok) в специальное окошко в личном кабинете.

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

На следующий день эти события отобразятся в отчетах Google Analytics под названием wa_offline_message, и мы сможем назначить их в качестве конверсий.

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

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