JavaScript-проверка или блокировка по IP: два подхода к защите от ботов

Блокировка по IP решает до загрузки страницы и ничего не стоит по скорости, но слепа к ботам на домашних адресах. JavaScript-проверка видит браузер изнутри, но требует времени и ошибается на необычных устройствах. Разбираем, что ловит каждый подход и почему зрелая защита использует оба.

Боты и фрод9 мин чтения
Содержание
  1. Блокировка по IP: как она работает
  2. JavaScript-проверка: как она работает
  3. Сравнение подходов
  4. Почему их сочетают
  5. Как это влияет на скорость страницы
  6. Пример: три визита глазами двух слоёв
  7. Где проверка не нужна или вредна
  8. Как это устроено в ArtisanClo
  9. Итог

Когда рекламодатель решает защититься от ботов, первый вопрос обычно технический: «Блокировать по 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, через фильтр пройдёт весь фрод на резидентных и мобильных адресах — а это как раз самая дорогая его часть: клики выглядят как живые и оплачиваются по полной цене. Если поставить только скрипт, каждый серверный бот будет получать страницу, скачивать скрипт и нагружать сервер, а простые боты, не выполнившие проверку, будут неотличимы от людей, которые не дождались загрузки.

Рабочая схема выглядит так:

  1. Сеть — первый слой. Жёстко отсекаются дата-центры, известные боты, адреса из чёрного списка и чужое гео. Это дешёво, быстро и почти без ошибок.
  2. Браузер — второй слой. Всё, что прошло сеть, проверяется скриптом: автоматизация, отпечаток, пояс и язык, поведение.
  3. Оценка доверия вместо запретов. Мягкие сигналы — отметка о прокси, мобильный адрес, несовпадение пояса, отсутствие метки клика — не блокируют визит сами по себе, а складываются. Решение принимается по сумме.
  4. Статистика по источнику — третий взгляд. Даже лучшая проверка одного визита не заменит взгляда на площадку целиком: доля подозрительных визитов, конверсии, апрув. Именно так видны клики с ферм и систематический фрод в рекламе.

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

Как это влияет на скорость страницы

Скорость важна не только для удобства: каждая лишняя секунда загрузки снижает конверсию, и защита, которая отпугивает покупателей, обходится дороже ботов. Что можно сделать:

  • Решать сетевое заранее. Пока браузер грузит скрипт, сервер уже может проверить IP, ASN и базы. К моменту, когда скрипт пришлёт данные, половина решения готова.
  • Маленький скрипт и одно соединение. Чем меньше запросов и чем ближе сервер к посетителю, тем короче ожидание. Сжатый скрипт и переиспользование соединения экономят десятки миллисекунд на мобильном интернете.
  • Не ждать поведение там, где оно не нужно. Проверка движений мыши требует, чтобы посетитель что-то сделал на странице. Её включают для строгих источников, а не для всего трафика.
  • Отсекать серверных ботов до скрипта. Если бот отсеян по сети, ему не нужно отдавать скрипт — это экономит ресурсы сервера и делает статистику чище.
  • Измерять. Смотрите на время от клика до показа страницы на реальных визитах, а не на лабораторный замер на быстром компьютере.

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

Пример: три визита глазами двух слоёв

Чтобы увидеть, как подходы дополняют друг друга, разберём три клика по одной кампании с таргетингом на Германию.

Визит А. Адрес облачного хостинга во Франкфурте, заголовок браузера — свежий Chrome на Windows. Сетевой слой отсекает визит сразу: сеть хостинга в рекламном трафике — сервер, а не покупатель. Скрипт даже не понадобился, страница не отдавалась, сервер не потратил ресурсы.

Визит Б. Адрес домашнего провайдера в Мюнхене, в базах чисто, метка клика на месте. По сети придраться не к чему. Скрипт сообщает: флаг автоматизации включён, видеокарта программная, часовой пояс America/New_York, движений мыши до клика не было. Блокировка по IP пропустила бы этот визит и вы заплатили бы за него как за живого. Браузерный слой его останавливает.

Визит В. Мобильный адрес немецкого оператора, адрес отмечен как общий, встроенный браузер соцсети, пояс Europe/Berlin, язык немецкий. Скрипт выполнился с задержкой — приложение грузило страницу в фоне. Если бы фильтр резал мобильные адреса или требовал мгновенного ответа скрипта, этот покупатель был бы потерян. Оценка доверия видит, что признаки согласованы, и пропускает визит.

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

Где проверка не нужна или вредна

  • Страницы без платного трафика. Если на страницу не ведёт реклама, строгая проверка браузера чаще мешает, чем помогает.
  • Источники с почти полностью встроенным браузером. Там стоит смягчить требования к выполнению скрипта и опираться на оценку доверия.
  • Поисковые роботы на основном сайте. Защищать стоит посадочные страницы кампаний, а не весь сайт с SEO-трафиком. Подробнее о выборе — в статье антибот для сайта.

Как это устроено в ArtisanClo

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

Итог

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

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

01

Что лучше для защиты от ботов: блокировка по IP или JavaScript-проверка?

Ни один подход не закрывает задачу целиком. Блокировка по IP быстро и дёшево отсекает серверы, известные VPN и адреса из чёрных списков, но не видит ботов на резидентных и мобильных адресах. JavaScript-проверка ловит автоматизированные браузеры и подделку устройства, но её можно не выполнить или подделать. Надёжнее всего сеть как первый слой и браузер как второй.

02

Замедляет ли JavaScript-проверка загрузку страницы?

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

03

Можно ли обойти JavaScript-проверку?

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

04

Почему блокировка по IP режет живых людей?

Потому что адрес не принадлежит одному человеку. За одним мобильным адресом сидят сотни абонентов, за офисным — весь офис, а адрес домашнего провайдера переходит к другому клиенту. Широкий блок по подсети или по стране неизбежно задевает покупателей, поэтому мягкие сетевые признаки лучше учитывать как штраф.

05

Что делать с посетителями, у которых отключён JavaScript?

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

Читать также

9 мин чтения

Резидентные и мобильные прокси: почему бот с домашним IP проходит фильтр и как его всё-таки увидеть

Резидентный прокси выглядит как обычный абонент домашнего провайдера, мобильный — как телефон в сети оператора. Проверка IP по спискам дата-центров их не видит, и ботовый трафик через такие адреса оплачивается как живой. Разбираем, как его отличить по совокупности признаков.

8 мин чтения

Антибот для сайта: что это такое и как работает защита от ботов

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

9 мин чтения

Как отфильтровать ботов в рекламном трафике и не потерять живых людей

Фильтрация ботов — это не одна галочка «антибот», а цепочка проверок от IP-адреса до поведения в браузере. Разбираем, как её выстроить, чтобы бюджет уходил на людей.

Проверьте свой трафик на деле

Подключите ArtisanClo к своему сайту, посмотрите, кто на самом деле приходит по рекламе, и почему каждый клик получил своё решение.