Когда рекламодатель решает защититься от ботов, первый вопрос обычно технический: «Блокировать по IP или ставить скрипт на страницу?» Это два разных способа смотреть на визит. Блокировка по IP оценивает, откуда пришёл запрос. JavaScript-проверка оценивает, что за программа его отправила. У каждого подхода своя слепая зона, и именно поэтому серьёзная защита не выбирает, а сочетает их.
Ниже — как работает каждый подход, что он ловит хорошо, где ошибается и как устроить их совместную работу так, чтобы не потерять скорость страницы.
Блокировка по IP: как она работает
Сервер получает запрос и знает о нём немного: IP-адрес, заголовки браузера, адрес страницы, с которой пришли. По IP можно узнать много полезного:
- кому принадлежит сеть — домашний провайдер, мобильный оператор, хостинг, облако (по номеру автономной системы, ASN);
- страну и город — с точностью, которой хватает для гео-фильтра;
- отметки в базах — известный VPN, прокси, Tor, адрес из спам-ловушек;
- историю — сколько раз этот адрес уже приходил и чем это заканчивалось.
Решение принимается до того, как страница отдана посетителю. Это главное достоинство подхода: оно ничего не стоит по скорости и работает даже против программ, которые не умеют выполнять скрипты.
Что ловит блокировка по IP
- Серверных ботов. Большинство дешёвых ботов, парсеров и сканеров работают в дата-центрах. Блок по ASN хостинга убирает их почти без ошибок. Подробнее — в статье VPN, прокси и IP дата-центров.
- Известные VPN и серверные прокси. Их адреса регулярно попадают в базы.
- Повторяющиеся адреса. Лимит кликов с одного IP и чёрный список IP отсекают назойливых визитёров и конкурента, который кликает из офиса.
- Чужое гео. Клик из страны, на которую вы не таргетировались, — почти всегда не покупатель.
Слабые места блокировки по IP
- Резидентные и мобильные прокси. Бот выходит в сеть через адрес домашнего абонента или SIM-карту оператора. Для фильтра по IP это обычный человек. Этому случаю посвящена отдельная статья — резидентные и мобильные прокси.
- Общие адреса. За одним мобильным адресом сотни абонентов, за офисным — десятки сотрудников. Блок такого адреса отсекает живых.
- Ротация. Бот, который меняет адрес на каждый клик, обходит лимиты частоты и чёрные списки.
- Запаздывание баз. Новый адрес попадает в базу через часы или дни — за это время он успевает сделать свою работу.
- Нет взгляда внутрь. IP ничего не говорит о том, браузер это или скрипт, есть ли у него экран и двигается ли мышь.
JavaScript-проверка: как она работает
Страница отдаёт посетителю небольшой скрипт. Он выполняется в браузере и собирает то, что видно только изнутри:
- признаки автоматизации — флаг
webdriver, следы инструментов управления браузером, характерные для headless-режима особенности; - отпечаток устройства — экран, видеокарта, шрифты, список возможностей браузера;
- настройки системы — часовой пояс, язык, раскладка;
- согласованность — совпадает ли то, что заявляет заголовок
User-Agent, с тем, что браузер умеет на самом деле; - поведение — движения мыши и пальца, прокрутку, время до первого действия.
Скрипт отправляет результат на сервер, сервер выносит решение. О том, как устроен отпечаток и где его подделывают, — в статье headless-браузеры и отпечаток браузера.
Что ловит JavaScript-проверка
- Программы без браузера. Парсеры и простые боты, которые скачивают страницу, но не выполняют скрипт, не вернут ответ вовсе. Это сильный признак.
- Headless-браузеры и автоматизацию. Даже на резидентном адресе бот на управляемом браузере оставляет следы.
- Подделку устройства. «iPhone», у которого видеокарта серверная, а экран 1920×1080, выдаёт себя противоречием.
- Расхождение сети и системы. IP из Германии, а пояс и язык — азиатские. Сеть этого не видит, скрипт видит.
- Механическое поведение. Ровные движения, мгновенный уход, клик без единого движения до него.
Слабые места JavaScript-проверки
- Время. Скрипт нужно скачать, выполнить и дождаться ответа сервера. Это задержка, которой у блокировки по IP нет.
- Не все визиты её выполняют. Встроенные браузеры соцсетей иногда загружают страницу в фоне и замораживают таймеры; старые телефоны выполняют скрипт медленно; часть людей уходит раньше, чем проверка закончилась.
- Подделываемость. Данные приходят от клиента — значит, продвинутый бот может их подменить. Антидетект-браузеры для этого и созданы.
- Ложные срабатывания на необычных устройствах. WebView в приложениях, браузеры с усиленной приватностью, расширения, блокирующие отпечаток, — всё это похоже на «подделку», хотя за экраном человек.
- Зависимость от места установки. Скрипт работает только там, где он стоит. Если ссылка ведёт на страницу без скрипта, проверки не будет.
Сравнение подходов
| Блокировка по IP | JavaScript-проверка | |
|---|---|---|
| Когда решает | до отдачи страницы | после загрузки скрипта |
| Влияние на скорость | почти нет | десятые доли секунды |
| Серверные боты | ловит отлично | ловит, но позже и дороже |
| Боты на резидентных и мобильных IP | почти не видит | видит по браузеру и поведению |
| Программы без JavaScript | ловит, только если адрес серверный | ловит по отсутствию ответа |
| Подделка | адрес подменяют прокси | данные подменяют антидетект-браузеры |
| Главный риск ошибки | общие адреса, широкие блоки | WebView, приватные браузеры, медленные телефоны |
Таблица хорошо показывает главное: слабые места двух подходов почти не пересекаются. То, что не видит сеть, видит браузер, и наоборот.
Почему их сочетают
Если поставить только блокировку по IP, через фильтр пройдёт весь фрод на резидентных и мобильных адресах — а это как раз самая дорогая его часть: клики выглядят как живые и оплачиваются по полной цене. Если поставить только скрипт, каждый серверный бот будет получать страницу, скачивать скрипт и нагружать сервер, а простые боты, не выполнившие проверку, будут неотличимы от людей, которые не дождались загрузки.
Рабочая схема выглядит так:
- Сеть — первый слой. Жёстко отсекаются дата-центры, известные боты, адреса из чёрного списка и чужое гео. Это дешёво, быстро и почти без ошибок.
- Браузер — второй слой. Всё, что прошло сеть, проверяется скриптом: автоматизация, отпечаток, пояс и язык, поведение.
- Оценка доверия вместо запретов. Мягкие сигналы — отметка о прокси, мобильный адрес, несовпадение пояса, отсутствие метки клика — не блокируют визит сами по себе, а складываются. Решение принимается по сумме.
- Статистика по источнику — третий взгляд. Даже лучшая проверка одного визита не заменит взгляда на площадку целиком: доля подозрительных визитов, конверсии, апрув. Именно так видны клики с ферм и систематический фрод в рекламе.
Так ошибки складываются в пользу рекламодателя: живой человек с VPN не будет отсечён за один признак, а бот на домашнем адресе не пройдёт только потому, что адрес чистый.
Как это влияет на скорость страницы
Скорость важна не только для удобства: каждая лишняя секунда загрузки снижает конверсию, и защита, которая отпугивает покупателей, обходится дороже ботов. Что можно сделать:
- Решать сетевое заранее. Пока браузер грузит скрипт, сервер уже может проверить IP, ASN и базы. К моменту, когда скрипт пришлёт данные, половина решения готова.
- Маленький скрипт и одно соединение. Чем меньше запросов и чем ближе сервер к посетителю, тем короче ожидание. Сжатый скрипт и переиспользование соединения экономят десятки миллисекунд на мобильном интернете.
- Не ждать поведение там, где оно не нужно. Проверка движений мыши требует, чтобы посетитель что-то сделал на странице. Её включают для строгих источников, а не для всего трафика.
- Отсекать серверных ботов до скрипта. Если бот отсеян по сети, ему не нужно отдавать скрипт — это экономит ресурсы сервера и делает статистику чище.
- Измерять. Смотрите на время от клика до показа страницы на реальных визитах, а не на лабораторный замер на быстром компьютере.
Итог по скорости: при разумной реализации комбинированная проверка добавляет к загрузке доли секунды. Это заметно меньше, чем теряется на тяжёлых картинках и сторонних счётчиках, — и несравнимо дешевле, чем оплаченные клики ботов.
Пример: три визита глазами двух слоёв
Чтобы увидеть, как подходы дополняют друг друга, разберём три клика по одной кампании с таргетингом на Германию.
Визит А. Адрес облачного хостинга во Франкфурте, заголовок браузера — свежий Chrome на Windows. Сетевой слой отсекает визит сразу: сеть хостинга в рекламном трафике — сервер, а не покупатель. Скрипт даже не понадобился, страница не отдавалась, сервер не потратил ресурсы.
Визит Б. Адрес домашнего провайдера в Мюнхене, в базах чисто, метка клика на месте. По сети придраться не к чему. Скрипт сообщает: флаг автоматизации включён, видеокарта программная, часовой пояс America/New_York, движений мыши до клика не было. Блокировка по IP пропустила бы этот визит и вы заплатили бы за него как за живого. Браузерный слой его останавливает.
Визит В. Мобильный адрес немецкого оператора, адрес отмечен как общий, встроенный браузер соцсети, пояс Europe/Berlin, язык немецкий. Скрипт выполнился с задержкой — приложение грузило страницу в фоне. Если бы фильтр резал мобильные адреса или требовал мгновенного ответа скрипта, этот покупатель был бы потерян. Оценка доверия видит, что признаки согласованы, и пропускает визит.
В этом примере каждый слой по отдельности ошибся бы хотя бы раз: только сеть пропустила бы визит Б, только жёсткий скрипт без оценки доверия рисковал бы отсечь визит В. Вместе они разобрали все три верно. На реальном потоке так же: большую часть мусора снимает дешёвый сетевой слой, браузерный добирает то, что замаскировано под людей, а сумма признаков страхует от лишних отказов.
Где проверка не нужна или вредна
- Страницы без платного трафика. Если на страницу не ведёт реклама, строгая проверка браузера чаще мешает, чем помогает.
- Источники с почти полностью встроенным браузером. Там стоит смягчить требования к выполнению скрипта и опираться на оценку доверия.
- Поисковые роботы на основном сайте. Защищать стоит посадочные страницы кампаний, а не весь сайт с SEO-трафиком. Подробнее о выборе — в статье антибот для сайта.
Как это устроено в ArtisanClo
ArtisanClo использует оба слоя: сетевые проверки отсеивают трафик дата-центров, VPN и прокси, а проверка браузера ловит автоматизацию и подделку устройства на адресах, которые по сети выглядят чистыми. У каждого клика в журнале виден код причины решения — сразу понятно, сработала сеть или браузер. Встроенный трекер считает расход, конверсии, прибыль и ROI по кампаниям, поэтому видно, сколько денег ушло на мусорный трафик и какой источник его приносит. Все проверки перечислены на странице возможностей.
Итог
Блокировка по IP и JavaScript-проверка отвечают на разные вопросы: «откуда пришёл визит» и «что за программа его прислала». Первая быстрая, дешёвая и надёжная против серверных ботов, но слепа к прокси на домашних и мобильных адресах. Вторая видит браузер изнутри, но стоит времени, подделывается продвинутыми ботами и ошибается на необычных устройствах. Их слабые места почти не пересекаются, поэтому сеть ставят первым слоем, браузер — вторым, мягкие признаки складывают в оценку доверия, а итог проверяют статистикой по источникам. Как посчитать, во что обходятся пропущенные боты, — в статье сколько бюджета теряется на ботах.

