Защита от накрутки

Накрутка в Яндекс.Директе: как распознать и защититься

18 September 2026 · 5 мин чтения
Накрутка в Яндекс.Директе: как распознать и защититься

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

Я разбирал реальный случай: за полтора часа ночью на сайте прошли два десятка пустых «звонков с сайта». Тридцать четыре разных домашних адреса на тридцать девять визитов, один и тот же user-agent, прямой заход — и каждая сессия честно шла по пути «просмотр страницы → клик по телефону». То есть бот исполнял скрипт сайта, а не бил запросом в лоб. Ниже — как такое распознать и чем от него закрыться.

Откуда берётся накрутка и кому она выгодна

Причин несколько, и путать их не стоит, потому что защита от них разная:

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

Признаки: как распознать накрутку

Одиночный признак не значит ничего — у звонка из метро тоже мало «следов». Смотреть надо на совпадение нескольких:

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

Почему обычные лимиты не держат

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

Отсюда мой главный вывод: наплыв надо ловить по сайту в целом, а не по IP. Ротация адресов от порога по сайту не спасает — сколько бы адресов ни было, все нажатия приходят на одну посадочную.

Как я защищаю CRM: билет, работа и оценка доверия

Доказать человека со стороны браузера нельзя — повторю это ещё раз, потому что на этом ломаются все «умные капчи». Страница целиком в руках того, кто её открыл. Поэтому задача другая: сделать подделку дорогой, заметной и безвредной. Вот три опоры, на которых стоит защита в Пробите.

Билет при загрузке

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

Соразмерная работа (proof-of-work)

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

Оценка доверия вместо «да/нет»

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

И ещё одно правило, которое я считаю важнейшим: цель в Метрику уходит только за обращением, которому поверили. Раньше конверсия часто отмечалась в момент клика, до ответа сервера, — то есть Директ учился на любом нажатии. Это и есть главная цена накрутки, и закрывается она именно здесь.

Что делать с уже пойманным спамом

Пометить заявки спамом — полдела. Дальше их надо выгрузить аудиторией в Яндекс.Метрику и поставить в Директе на эту аудиторию корректировку ставок −100%. Реклама просто перестаёт показываться тем, кто вас накручивал. Это разбор темы для отдельной статьи — как выгрузить спам-заявки и срезать показы, — но принцип держите в голове уже сейчас: накрутку мало отфильтровать, её надо вернуть источнику отказом в показах.

Коротко

Накрутка — это не про мусор в базе, а про испорченное обучение стратегии и враньё в отчётах. Лимиты по IP её не держат. Работает связка: подписанный билет, соразмерная работа для браузера и оценка доверия, которая помечает сомнительное, но не трогает живых, с порогом по сайту, а не по адресу. А то, что всё-таки попало в базу, — выгрузить аудиторией и закрыть корректировкой в Директе. Как эта защита устроена внутри коробки, можно посмотреть на странице Пробита.

Частые вопросы

Как понять, что по мне идёт накрутка?

Смотрите на аномалии: всплеск пустых обращений без разговора, один и тот же user-agent, прямые заходы, новые адреса почти на каждую заявку. Одна метрика ничего не докажет, но три-четыре разом — уже картина.

Помогает ли лимит «5 заявок в час с одного IP»?

Против ручной шалости — да, против ботоводов — нет. Они ротируют адреса, и по IP такое не ловится. Порог надо ставить по сайту в целом, а не по адресу.

Можно ли на стороне браузера доказать, что заявку оставил человек?

Нет. Страница целиком в руках того, кто её открыл. Задача другая — сделать подделку дорогой, заметной и безвредной, а сомнительное пометить, а не выбросить молча.

Что делать с накрученными заявками, которые уже в базе?

Пометить спамом и выгрузить их аудиторией в Метрику, а в Директе поставить на эту аудиторию корректировку −100%. Реклама перестанет показываться источнику накрутки.

Попробовать Пробит бесплатно 30 дней →