Продукт 03 · JS-скрипт · Бесплатно

Антибот

Замер и фильтр ботов на телефонных номерах сайта. Сначала скрипт показывает, сколько кликов по номерам похожи на ботов, и звонкам не мешает. Защиту со слайдером включаете, только если она действительно нужна. Установка за 2 минуты, любая CMS.

// Размер
15 KB
минифицированный
// Версия
v1.1
сентябрь 2026 · 4 режима
// Целей Метрики
9
полная аналитика звонков
// Тариф
0 ₽
без рекламы и ограничений

// 01 · Генератор кодаПолучите готовый скрипт

Введите номер счётчика Яндекс Метрики, нажмите «Сгенерировать» — скопируйте код и вставьте на сайт перед </body>. Если не знаете номер — оставьте поле пустым, скрипт найдёт счётчики автоматически.

Генератор кода

Вставьте номер счётчика — получите готовый код для сайта. Можно настроить дополнительные параметры.
Яндекс Метрика → Настройки → Номер счётчика. Можно указать несколько через запятую.
Окна нет, клики по номеру сразу звонят. Скрипт только размечает клики в Метрике как «человек» или «подозрение». Начните с этого режима на 2–4 недели. Подробнее о режимах
Параметры по умолчанию подходят большинству сайтов. Время на странице и активность до клика влияют на оценку «человек / подозрение»: уменьшайте, если много phone_click_suspect у живых людей. Время свайпа и число движений влияют на слайдер: уменьшайте, если много ложных phone_bot_suspect.
Вариант 1: Скачайте файл + вставьте этот код

          ↓ Скачать avs-call-guard.min.js
          

1. Скачайте файл и загрузите в корень вашего сайта.
2. Вставьте код выше перед </body>.

Вариант 2: Весь код целиком

          

Tilda: Настройки сайта → Ещё → «HTML-код для вставки внутрь BODY» (в конец)
WordPress: footer.php перед </body> или плагин «Insert Headers and Footers» (Footer)
Bitrix: шаблон сайта → footer.php перед </body>
GTM: тег «Пользовательский HTML», триггер All Pages (DOM Ready)

// 02 · Режимы работыСначала замер, потом защита

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

По умолчанию
measure

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

Первые 2–4 недели: понять, есть ли проблема.
Рекомендуемая защита
adaptive

Слайдер только для подозрительных кликов. Обычный посетитель, который листал и читал страницу, звонит в один тап.

Замер показал заметную долю подозрительных кликов.
Проверка потерь
ab

A/B-тест. Защита включается части посетителей, остальные работают как в режиме замера. Группа закрепляется за браузером и уходит в параметры визита Метрики.

Посчитать, сколько реальных звонков съедает защита.
Жёсткий фильтр
always

Слайдер при каждом клике. Самая сильная фильтрация и самые большие потери: часть людей закроет окно, особенно на мобильных.

Сильная атака ботов, потеря части звонков приемлема.

Как скрипт отличает человека от подозрения

Оценка строится по поведению посетителя до клика. Клик считается подозрительным, если есть хотя бы один признак:

Порядок внедрения

  1. measure, 2–4 недели. Смотрим долю phone_click_suspect среди всех phone_click, отдельно по трафику из Директа.
  2. Подозрительных мало (условно меньше 5–10 %): защита не нужна. Скрипт можно оставить как мониторинг.
  3. Подозрительных много: режим ab на 2–4 недели. Сравниваем группы по реальным звонкам из коллтрекинга или CRM, а не по целям Метрики.
  4. Потери в группе с защитой приемлемы: переходим на adaptive для всех.
Честно об ограничениях
  • Это фильтр от простых ботов, а не антифрод-система. Бот, который имитирует действия человека (движения мыши, паузы, реалистичный свайп), пройдёт и оценку, и слайдер.
  • Слайдер — это лишнее действие перед звонком. Часть живых людей закроет окно, не разобравшись. Цель phone_modal_close показывает, сколько.
  • Оценка «человек / подозрение» — эвристика. Живой человек, который открыл страницу и мгновенно нажал на номер, попадёт в подозрительные. В режиме adaptive он не теряет звонок, а просто увидит слайдер.

// 03 · Интерактивная демонстрацияОкно подтверждения

Так выглядит окно, которое видит посетитель в режимах adaptive, ab и always. В режиме замера его нет. Проведите ползунок или нажмите кнопки справа: в логе видно, какие цели уходят в Метрику.

Демо слайдера

Интерактивная копия окна подтверждения. Проведите ползунок или нажмите «Тест бота».
Защита от ботов
Подтвердите звонок
+7 (863) 000-00-00
Проведите ползунок вправо — телефон наберёт номер. Или наберите его вручную.
Проведите для звонка
↑ Проведите ползунок или нажмите кнопку справа
[система] Ожидание действия...

// 04 · Цели для МетрикиНастройте 9 целей в Яндекс Метрике

Метрика → Настройки → Цели → Добавить цель → тип «JavaScript-событие». Идентификатор — из списка ниже. Первые четыре цели работают во всех режимах, остальные — только когда включено окно подтверждения.

Для оптимизации в Директе: в режиме замера — phone_click_human, в режимах с защитой — phone_redirect. Цель phone_click для оптимизации не подходит: в неё попадают и боты.

phone_click
Любой клик по номеру. Все попытки, включая ботов. В параметрах — оценка, признаки и маршрут.
phone_click_human Главная · measure
Клик похож на человека — по поведению до клика. Цель для оптимизации в режиме замера.
phone_click_suspect
Клик подозрительный. Главный показатель замера: его доля среди всех кликов показывает, насколько статистика искажена ботами.
phone_redirect Главная · защита
Запущен набор номера — сразу или после слайдера. Цель для оптимизации в режимах adaptive, ab и always.
phone_click_try
Открылось окно подтверждения.
phone_slider_success
Слайдер пройден — звонок подтверждён.
phone_bot_suspect
Слайдер «пройден» не по-человечески: слишком быстро или программно.
phone_modal_close
Окно закрыто без звонка. Цена барьера: столько людей не стали проходить слайдер.
phone_copy
Номер скопирован кнопкой в окне (на десктопе), чтобы позвонить с другого устройства.

Для A/B-режима скрипт при загрузке передаёт параметр визита avs_call_guard.group (slider / direct) — по нему в Метрике строятся сегменты для сравнения групп.

// 05 · ПроблемаЗачем считать и фильтровать клики по номерам

Боты кликают по телефонным ссылкам tel: на сайте — это скликивание. Каждый такой клик засчитывается в Яндекс Метрике как «попытка звонка», искажая статистику конверсий. В рекламных кампаниях Яндекс.Директа это приводит к завышенному CR и неправильной оптимизации.

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

// 06 · Как работаетТехнология

Совместимость: Tilda, WordPress, 1С-Битрикс, React, Vue, Angular. Чистый ES5 + Pointer Events + Shadow DOM, без зависимостей. Chrome, Edge, Opera, Яндекс.Браузер, Safari 13+, Firefox.

Исключение отдельных номеров

Если какой-то номер защищать не нужно (например, виджет коллтрекинга обрабатывает клик сам):

<a href="tel:+74950000000" data-call-guard="off">+7 495 000-00-00</a>

// 07 · НастройкиПолная конфигурация

Все параметры задаются в window.AVS_CALL_GUARD_CONFIG до подключения скрипта. Указывайте только то, что меняете:

Много phone_click_suspect с причинами too_early или no_activity у, судя по всему, живых людей? Уменьшите minTimeOnPageMs до 800 и priorActivityMs до 300. Много ложных phone_bot_suspect на слайдере? Уменьшите minDragMs до 120 и minMoves до 3.

// 08 · Проверка установкиУбедитесь, что всё работает

После вставки кода на сайт выполните 4 проверки:

01
Откройте сайт с параметром ?_ym_debug=2 — в консоли браузера (F12 → Console) будут видны все цели и параметры.
02
Подвигайте мышью или полистайте страницу, затем кликните по номеру. В режимах measure и adaptive сразу начнётся звонок, а в консоли появятся phone_click, phone_click_human и phone_redirect. В режиме always откроется окно со слайдером.
03
Выполните в консоли команду — это имитация бота. Уйдёт phone_click_suspect с причиной untrusted. В режимах adaptive и always откроется окно, в режиме замера клик будет только помечен:
document.querySelector('a[href^="tel:"]').click()
04
Через пару минут проверьте Метрику → «Конверсии»: там появятся цели. Через 2–4 недели замера сравните phone_click_suspect и phone_click — это и есть ответ на вопрос, нужна ли защита.

// 09 · FAQЧастые вопросы

01Что делает скрипт «Антибот»?+

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

02Не потеряю ли я реальные звонки?+

В режиме замера (по умолчанию) — нет, звонки проходят как без скрипта. Слайдер — это лишнее действие, и часть людей может закрыть окно. Поэтому защиту стоит включать, только если замер показал заметную долю подозрительных кликов, и сначала через A/B-режим, сравнивая группы по реальным звонкам из коллтрекинга или CRM.

03Это полная защита от ботов?+

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

04Как установить скрипт на сайт?+

Введите номер счётчика Яндекс Метрики в генератор кода вверху страницы, скопируйте готовый код и вставьте на сайт перед </body>. Для Tilda, WordPress, GTM — используйте вкладку «Встроенный код».

05Скрипт платный?+

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

06На каких CMS работает?+

На любых: Tilda, WordPress, 1С-Битрикс, самописные сайты, React, Vue, Angular. Чистый ES5 без зависимостей.

07Пропали звонки в CRM или коллтрекинге?+

В режиме замера скрипт ничего не блокирует. В режимах с окном клик, который уходит в окно подтверждения, не передаётся другим обработчикам. Если коллтрекинг только подменяет номер — всё работает. Если виджет сам обрабатывает клик — добавьте атрибут data-call-guard="off".

08Можно не указывать номер счётчика?+

Да. Если counterId не указан — скрипт автоматически находит все счётчики на странице через Ya.Metrika2.counters(). Если Метрики на странице нет — слайдер в режимах с защитой работает, но цели никуда не отправляются, а режим замера теряет смысл.

09Как проверить, что скрипт работает?+

Выполните 4 проверки из раздела «Проверка установки». Ключевой тест: команда document.querySelector('a[href^="tel:"]').click() в консоли — в Метрику должна уйти цель phone_click_suspect с причиной untrusted.

Боты кликают по номерам? Сначала измерьте — бесплатно, 15 КБ, установка за 2 минуты.

// ЕщёДругие материалы