Скликивание и фейковые заявки: как сделать себе антифрод, который отсечёт ботов до отдела продаж

Скликивание и фейковые заявки: как сделать себе антифрод, который отсечёт ботов до отдела продаж

**Ключи (Wordstat, показов/мес):** скликивание (686) • защита сайта от ботов (576) • защита от скликивания (185) • скликивание рекламы (173) • директ скликивание (144) • фейковые заявки (106)

## Знакомая история

Реклама крутится, бюджет уходит, заявки идут. Руководитель смотрит отчёт и радуется: сорок обращений за неделю. Отдел продаж смотрит на те же сорок и тихо звереет.

Потому что из сорока живых там пятнадцать. Остальное - номера, по которым никто не берёт трубку. Номера, где отвечают: «Я ничего не оставлял». Один и тот же телефон под четырьмя разными именами. Заявка, где в поле «имя» набор букв, а в поле «регион» - то, чего не бывает.

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

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

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

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

## Почему привычные способы почти не помогают

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

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

**Блокировка по IP.** За одним адресом сидит вся компания, весь коттеджный посёлок с общим интернетом или половина абонентов мобильного оператора. Блокируя адрес, вы блокируете всех, кто за ним.

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

## Что на самом деле отличает бота от человека

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

**Он проводит время на странице.** Читает, сомневается, возвращается наверх, перечитывает цену. Пятнадцать секунд от загрузки до отправки - это не человек, изучивший предложение. Это скрипт.

**Он двигает мышью или касается экрана.** Причём двигает криво: рука дрожит, курсор ходит дугами, промахивается мимо поля и возвращается. Идеально прямые отрезки от кнопки к кнопке - признак программы.

**Он печатает.** Или вставляет из буфера, или пользуется автозаполнением - но что-то из этого происходит. Заявка, где значения появились в полях сами собой, без единого нажатия клавиши и без автозаполнения, приехала не от человека.

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

**Его таймер дрожит.** Это тонкий признак, но надёжный. У живого браузера интервалы между кадрами всегда чуть плавают, потому что машина занята сотней других дел. У виртуального дисплея на сервере эти интервалы бывают идеально ровными. Идеальная ровность в реальном мире - сама по себе аномалия.

Ни один из этих признаков по отдельности ничего не доказывает. Человек может ответить с телефона за двадцать секунд, потому что уже всё решил. У кого-то в браузере отключён JavaScript. Поэтому работает не одиночный признак, а сумма.

## Как это собрать: баллы вместо приговора

Рабочая схема простая. Каждый подозрительный признак добавляет заявке несколько баллов. Набралось много - заявка помечается серой, набралось очень много - блокируется. Отдельно живёт короткий список жёстких правил, каждое из которых блокирует само по себе, без накопления.

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

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

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

## Ошибка, из-за которой антифрод начинает резать живых

Это самое важное во всей статье, и на этом спотыкаются почти все.

**Отсутствие данных нельзя приравнивать к нулю.**

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

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

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

Вторая ошибка того же рода - считать повторную отправку признаком атаки. Живой человек, получивший отказ, пробует ещё раз. И ещё. Мы наблюдали случай, когда человек одиннадцать раз подряд отправлял форму, с каждым разом сокращая своё имя, потому что решил, что дело в нём. Это был не бот, а пожилой мужчина, который очень хотел оставить заявку. Серия отправок с одного номера - это отчаяние, а не ферма. Ферма - это серия с одного адреса с разными номерами.

## Где этому место в системе

Отдельно стоящий антифрод на сайте - половинчатое решение. Он видит один сайт и одну форму, и ничего не знает о том, что тот же телефон час назад приходил с другого лендинга, а тот же отпечаток браузера за сутки засветился на трёх площадках.

У нас антифрод встроен в систему приёма и распределения заявок - ту, через которую проходят обращения со всех источников сразу: сайты, лендинги, квизы, лид-формы соцсетей, звонки, площадки объявлений. Интеграция с amoCRM на выходе, приём с чего угодно на входе.

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

Заодно решается вопрос, который обычно всплывает следом. Если заявка заблокирована - куда она девается? У нас она не исчезает: сохраняется вместе с вердиктом и причинами, просто не уходит в отдел продаж. Любую можно вернуть в работу одной кнопкой. Это принципиально: антифрод, который удаляет заявки без следа, невозможно проверить, а значит невозможно и доверять.

И третье - вопрос, который задаёт руководитель. Сквозная аналитика при таком устройстве получается сама собой: раз все заявки идут через одну точку, видно, какой источник приносит живых людей, какой - мусор, и во сколько обошёлся каждый. Не «сорок заявок за неделю», а «пятнадцать живых, и вот их источники».

## Обязательный шаг, который все пропускают

Никогда не включайте антифрод сразу на блокировку.

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

Мы этот шаг прошли на своей шкуре. Один из антифродов, с которым мы работали на клиентском сайте, за четверо суток заблокировал пятнадцать живых людей из тридцати семи оставивших заявку. Сорок один процент живого потока. Причём среди пропущенных им были заявки с номерами из одних девяток и именем «Тест», а среди заблокированных - человек, проведший на странице семь минут и сделавший шесть тысяч движений мышью.

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

## Что можно сделать себе прямо сейчас

Короткий список по возрастанию сложности:

1. **Ловушка в форме.** Скрытое поле, которого не видно человеку. Заполнено - почти наверняка робот. Важно: назовите поле бессмысленно. Если в имени будет «email», «name» или «url», менеджер паролей заполнит его живому человеку, и вы забаните собственного клиента. 2. **Время от загрузки страницы до отправки.** Считается в две строки. Меньше нескольких секунд - повод присмотреться. 3. **Одноразовый ключ формы.** Сервер при отрисовке страницы кладёт случайное значение в куку и в скрытое поле. Не совпало - форму отправляли не со страницы. 4. **Счётчики поведения.** Движения, нажатия, касания, глубина прокрутки. Помня главное правило: не измеряли - не отправляем. 5. **История по телефону и адресу.** Требует хранилища заявок, зато даёт самые устойчивые к подделке признаки.

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

И трезвая оговорка напоследок. Всё, что собирается в браузере, в принципе подделывается: код исполняется на стороне пользователя, и достаточно мотивированный человек пришлёт вам любые красивые цифры. Браузерный отпечаток - не стена, а фильтр по стоимости атаки: он отсекает массовое и дешёвое. Против целенаправленного скликивания директа конкурентом работают уже серверные признаки и история, а не то, что рассказал о себе браузер.

---

Если статья была полезной, поставьте 👍 - так её увидят те, кому она пригодится.

Где меня ещё найти:

- ТГ-канал «Кочегаров про таргет» - [t.me/kochegarov_pro_target](https://t.me/kochegarov_pro_target) - ВК-сообщество «Кочегаров Кочегарит» - [vk.com/club179084362](https://vk.com/club179084362) - ВК-группа сервиса «ПК-маркетинг» - [vk.com/club232439276](https://vk.com/club232439276) - MAX-канал [«Кочегаров - автоматизация маркетинга»](https://max.ru/id672507662616_biz)

Меня зовут Вячеслав Кочегаров, отвечаю каждому лично.

20

Комментарии0

Читайте также

Как узнать ID пользователя в MAX (и канала, и бота) — простое решение

Как узнать ID пользователя в MAX (и канала, и бота) — простое решение

Вы столкнулись с вопросом, как узнать ID пользователя в Максе для настройки рассылки или интеграции? В отличие от некоторых других мессенджеров, в MAX этот уникальный идентификатор пользователя не ото

2236
Как подключить кнопку выдачи лид-магнита в канале МАХ (даже в приватном)

Как подключить кнопку выдачи лид-магнита в канале МАХ (даже в приватном)

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

1
488