Классификация ботов
Как настроить жёсткость фильтрации для разных типов трафика.
|
Доступно только для режима защиты Антибот. Подключается по запросу. Если внутри Пользовательских правил в UI вкладка «Классификация ботов» неактивна, напишите в поддержку — откроем её для вас. |
О группе правил
Описание
«Классификация ботов» — группа правил, с помощью которой вы устанавливаете пороговое значение bot score. Источники запросов, чей bot score равен порогу или выше, считаются ботами.
Таким образом вы управляете жёсткостью фильтрации. В общих чертах, это работает так:
-
Низкий порог: при малейшем подозрении источник будет считаться ботом. Защита надёжнее, но можно зацепить некоторых легитимных пользователей.
-
Средний порог: средняя жёсткость фильтрации.
-
Высокий порог: только очень подозрительные источники будут считаться ботами. Риск ложных срабатываний ниже, но некоторые боты могут проскочить.
|
В нашем UI вы также можете встретить термин «JS bot score». Это то же самое, что и bot score. |
Подробнее о bot score
Что такое bot score?
Bot score — числовая оценка того, насколько источник запроса похож на бота: насколько его технические и поведенческие признаки похожи на признаки автоматизации.
Какие значения принимает, что они значат?
От 0 до 1 с шагом 0.1:
-
0— нет признаков автоматизации. -
От
0.1до0.9— есть признаки автоматизации. Чем выше значение, тем больше признаков. -
1— очевидная автоматизация.
0.5 можно условно считать средним значением.
Как система рассчитывает его значение?
Процесс состоит из пяти этапов:
-
Пользователь отправляет запрос.
-
Система анализирует телеметрию запроса на уровнях L3/L4–L7: оценивает, как запрос проходит по сети, как устанавливается соединение и что передаётся внутри HTTP. Эти данные понадобятся позже.
Примеры параметров-
Признаки статистических аномалий
-
Репутация источника запроса
-
HTTP-параметры запроса
-
Параметры TLS-соединения
-
Другие признаки, которые помогают понять характер трафика
-
-
Система отправляет пользователю JS-челлендж — страницу с JavaScript-кодом, который выдаёт браузеру небольшую математическую задачу и собирает характеристики клиентского окружения.
Примеры характеристик окружения-
Размер окна браузера
-
Характеристики видеокарты
-
Наличие виртуализации
-
Поддержка и работа различных браузерных API
-
-
Браузер пользователя выполняет JavaScript-код: отправляет ответ на задачу и собранные характеристики окружения.
-
Система проверяет ответ.
Если ответ не пришёл или оказался неверным, bot score не формируется: система сразу классифицирует источник как бота.
Если ответ верный, система анализирует характеристики клиентского окружения и сопоставляет их с информацией, полученной на шаге 2. На основании всех собранных данных вычисляет bot score источника.
Когда bot score сформирован, система сравнивает его с порогом, который вы установили на вкладке «Классификация ботов». Если значение равно порогу или выше, источник будет помечен как «бот».
Для всех ли источников рассчитывается bot score?
Нет, только для тех, кому система защиты выдала JS-челлендж и он его прошёл.
Запоминает ли система bot score источника?
Да.
Если источник запроса недавно проходил JS-челлендж и получил bot score, при следующих запросах система узнает его и использует уже рассчитанный bot score.
Что будет с запросами источника, чей bot score превысил порог?
По умолчанию система их заблокирует. Исключения:
-
Запросы от IP-адресов из белого списка — они всегда пропускаются.
-
Запросы от верифицированных ботов (например, поисковых краулеров) — они всегда пропускаются.
По желанию вы можете отключить автопропуск верифицированных ботов через Настройки ресурса. -
Запросы, которые попали под созданное вами правило защиты. В настройках правила вы сами указываете, что делать с такими запросами — пропускать, блокировать, выдавать cookie-челлендж, выдавать JS-челлендж или выдавать CAPTCHA.
-
Трафик, который мы «обелили» по вашей просьбе (например, это может быть трафик вашего мобильного приложения) — такие запросы всегда пропускаются, если их не запрещают ваши другие приоритетные настройки: чёрный список, геоограничения, лимиты запросов или правила защиты.
Как работает «Классификация ботов»
-
Источник запроса проходит JS-челлендж. После прохождения система вычисляет его bot score.
-
Bot score источника сравнивается с пороговым значением, которое вы установили через «Классификацию ботов».
-
Если bot score если равен порогу или выше, система признаёт данный источник ботом.
Работа нескольких порогов одновременно
Через «Классификацию ботов» вы можете установить разные пороги bot score для разных типов трафика. Если между ними возникнет конфликт, будет применён самый строгий.
Например, вы создали два правила классификации ботов:
-
запросы к
/login— порог bot score 0.4; -
запросы из Пакистана — порог bot score 0.2.
Запрос к /login из Пакистана подходит под оба правила, но система применит только второе: в нём порог ниже (0.2).
Рекомендации
-
Помните: чем ниже порог bot score, тем строже фильтрация.
-
Сначала настройте базовое правило для всего трафика.
-
Для чувствительных зон приложения создайте отдельные правила с более низким порогом.
-
Следите за оранжевой подсветкой: она указывает на правила, которые не будут работать, потому что конфликтуют с другими, более строгими правилами.
-
Не устанавливайте слишком низкий порог bot score, не убедившись в его необходимости с помощью анализа логов. Из-за очень низкого порога много легитимных источников могут быть признаны ботами.
-
Настройте Правила защиты, чтобы явно указать системе, что делать с трафиком, классифицированным как ботовый.
Настройка
Открыть «Классификацию ботов»
Перейдите в раздел Защита приложений → Ресурсы. Напротив ресурса, для которого хотите настроить лимит, нажмите на три точки (…) и выберите Пользовательские правила. Откроется раздел, где вы найдёте вкладку Классификация ботов.
Создать правило классификации ботов
-
Нажмите
+ Создать правило классификации. Откроется окно создания правила, все дальнейшие шаги выполняйте в нём.
-
В поле Описание введите произвольный текст — это название правила, которое вы создаёте.
Советуем написать здесь, для какого трафика настраиваете правило. Пример:
Страница входа. -
Добавьте Условия.
Правило будет применяться к запросам, которые одновременно соответствуют всем указанным условиям. Например, если вы настроили
Страна — РоссияиПуть URL начинается с /login, правило:-
сработает для источников из России, которые отправили запрос к
/login; -
не сработает для источников из России, которые отправили запрос к другой странице;
-
не сработает для источников из других стран.
Чтобы добавить условие, нажмите
+ Добавить условие, выберите параметр (например,Путь URL), выберите оператор сравнения (например,равно) и укажите значение (например,/panel).Параметры: описания, требования к значениям, примерыНазвание параметра Описание параметра Требования к значению Пример условия СтранаГеографическое местоположение IP источника
Выберите значение из выпадающего списка
СтранавRussian FederationQuery stringПараметры, которые указаны в URL после знака
?-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Можно указать только ключ или пару «ключ-значение».
-
Длина строки — от 1 до 200 символов.
-
Не начинайте строку с пробела, символа
/или?. -
Используйте только символы, допустимые для URL.
-
Указывайте специальные символы в формате percent-encoding. Например, вместо
/укажите%2F.
Query stringсодержитdebug=trueПуть URLПуть URL запроса (часть URL после домена и до знака
?)-
Всегда начинайте строку с символа
/. -
Не указывайте доменное имя, например
site.com. -
Не указывайте протокол, например
https://. -
Не добавляйте параметры после знака
?. -
Используйте только символы, допустимые для URL.
Путь URLначинается с/adminСегмент пути URLЛюбая часть пути URL
-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Длина значения — от 1 до 200 символов.
-
Можно указать любую часть пути: название раздела (
api), расширение (.php) или даже набор символов из середины адреса (1/use). -
Используйте только символы, допустимые для URL.
Сегмент пути URLсодержитbackupContent-TypeФормат передаваемых в запросе данных, например: JSON, обычный текст, изображения или данные из веб-форм
-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Длина значения — от 1 до 200 символов.
-
Не начинайте строку с пробела.
-
Укажите тип целиком или его часть.
Content-Typeравноapplication/jsonCookie_any (или)Имена и значения cookie-файлов (правило сработает при наличии в запросе хотя бы одной из указанных связок «имя + значение»)
-
Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку
+ Или). -
Длина имени — до 200 символов.
-
Длина значения — до 4096 символов.
Имя равно user_typeЗначение начинается с premiumИЛИ
Имя равно partner_idЗначение равно anyCookie_all (и)Имена и значения cookie-файлов (правило сработает при наличии в запросе всего набора указанных связок «имя + значение» одновременно)
-
Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку
+ И). -
Длина имени — до 200 символов.
-
Длина значения — до 4096 символов.
Имя равно promo_codeЗначение равно activeИ
Имя равно is_subscriberЗначение равно yesЗаголовокИмена и значения HTTP-заголовков
Особенности параметра-
Для разных заголовков действует логика И: запрос должен содержать все указанные пары «имя + значение».
-
Для нескольких значений одного заголовка действует логика ИЛИ: достаточно совпадения с любым из них.
-
Эти условия работают одновременно: для разных заголовков действует И, для нескольких значений одного — ИЛИ.
Пример. Вы указали заголовки
X-Env: prod,X-Region: ruиX-Region: us. Если запрос содержит:-
X-Env: prodиX-Region: ru— правило сработает -
X-Env: prodиX-Region: us— правило сработает -
только
X-Env: prod— не сработает -
только
X-Region: ru— не сработает
-
Можно добавить до 100 связок «имя + значение» в одно условие (используйте кнопку
+ Или). -
Длина имени — до 200 символов.
-
Длина значения — до 200 символов.
Имя равно X-App-VersionЗначение начинается с 2.0Имя хостаЗначение заголовка Host (доменное имя сервера, к которому обращается клиент)
-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Длина значения — до 200 символов.
-
Не начинайте строку с пробела.
-
Укажите домен целиком или его часть.
-
Не указывайте протокол, например
https://. -
Не указывайте путь, например
/main.
Имя хостаравноapi.site.comХостинговая подсетьТрафик с IP-адресов, которые принадлежат хостинг-провайдерам или дата-центрам
Не задаются
—
Метод запросаТип используемого HTTP-метода
Выберите из выпадающего списка один или несколько методов
Метод запросавPOSTRefererЗначение заголовка Referer — то есть адрес страницы, с которой пользователь перешёл на ваш ресурс
-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Длина значения — до 200 символов.
-
Укажите полный URL-адрес, домен или его часть.
-
Не начинайте строку с пробела.
-
Используйте только символы, допустимые для URL.
Refererначинается сgoogle.comASNНомер автономной системы (ASN), которой принадлежит IP источника
-
Используйте число с префиксом AS (например,
AS13335илиas13335). -
Длина номера должна составлять от 1 до 10 цифр.
-
В одном поле можно указать до 100 уникальных номеров.
-
Один и тот же номер не может быть указан одновременно в списках
вине в.
ASNвAS13238ХэшиУникальный «цифровой отпечаток» устройства (хэш), одного из трёх уровней точности на выбор:
Servicepipe hash (loose),Servicepipe hash (medium)илиServicepipe hash (strict)-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Значение должно быть положительным числом от 1 до 200 символов.
Servicepipe hash (strict)в1234567890Запрос от нового пользователяТрафик от пользователей, которые зашли на ресурс впервые и чей «цифровой отпечаток» (хэш) пока не зафиксирован в нашей базе
Не задаются
—
Исходные подсетиIP-адрес или подсеть отправителя
-
Можно добавить до 200 значений в одно условие (используйте кнопку
+ Или). -
Укажите конкретные IP-адреса или их диапазоны (подсети).
-
Можно указывать адреса форматов IPv4 (например,
192.168.1.1) и IPv6 (например,2001:db8::1). -
Для указания диапазонов используйте формат CIDR — запись со слэшем (например,
/24для всей сети или/32для одного адреса).
Исходные подсетив192.168.1.0/24или2001:db8::1User-AgentЗначение заголовка User-Agent (идентификатор браузера, устройства или программного клиента, который делает запрос)
-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Длина значения — до 200 символов.
-
Не начинайте строку с пробела.
-
Используйте нужный регистр (например,
Chromeиchrome— это разные значения).
User-AgentравноBadBot/1.0X-Forwarded-ForЗначение заголовка X-Forwarded-For (цепочка IP-адресов прокси-серверов, через которые прошёл запрос до попадания на ваш ресурс)
-
Можно добавить до 100 значений в одно условие (используйте кнопку
+ Или). -
Длина значения — до 200 символов.
-
Не начинайте строку с пробела.
-
Укажите конкретные IP-адреса или их диапазоны.
X-Forwarded-Forсодержит203.0.113.10Tor (The Onion Router)Трафик из сети Tor, которая скрывает реальный IP-адрес источника
Не задаются
—
Описание операторовНабор операторов зависит от выбранного параметра. Оператор Когда сработает правило равноПри полном совпадении значения.
Пример: вы указали
Путь URL равно /login. Правило сработает для запроса к/login, но не сработает для запроса к любому другому пути — в том числе и к вложенному вроде/login/reset.не равноЕсли значение не совпадает с указанным.
Пример: вы указали
Имя хоста не равно api.example.com. Правило сработает для запросов к другим хостам — например,example.com,www.example.comилиadmin.example.com. А для запросов кapi.example.comне сработает.содержитЕсли значение содержит указанную последовательность символов.
Пример: вы указали
Query string содержит debug=true. Правило сработает только для запросов, где среди параметров естьdebug=true— например,?id=10&debug=true. Последовательность должна быть точной: если вместоdebug=trueв параметрах стоит что-то похожее, но не идентичное (например,degub=trueилиdebug=treu), правило не сработает.не содержитЕсли значение не содержит указанную последовательность символов.
Пример: вы указали
Content-Type не содержит json. Правило сработает для запроса с любым значением заголовка без «json»: например,text/plain,application/xml,multipart/form-dataи других. А вот дляapplication/json,application/ld+jsonи подобных не сработает.начинается сЕсли значение начинается с указанной последовательности символов.
Пример: вы указали
Путь URL начинается с /admin. Правило сработает для запросов к/adminи ко всем вложенным путям:/admin/users,/admin/accessи другим.не начинается сЕсли значение не начинается с указанной последовательности символов.
Пример: вы указали
Имя хоста не начинается с api. Правило сработает для запросов к хостамexample.com,www.example.com,admin.example.comи другим, названия которых не начинаются сapi. А дляapi.example.comилиapi-test.example.comне сработает.заканчивается наЕсли значение заканчивается указанной последовательностью символов.
Пример: вы указали
Сегмент пути URL заканчивается на .php. Правило сработает для значенийlogin.php,index.phpиprofile.php. А дляlogin.html,index.jsилиphp-loginне сработает: указанная последовательность должна находиться именно в конце значения.не заканчивается наЕсли значение не заканчивается указанной последовательностью символов.
Пример: вы указали
X-Forwarded-For не заканчивается на 10. Правило сработает для запросов, в которых значение заголовка заканчивается на другие символы, например192.0.2.15или198.51.100.25. А для значений192.0.2.10,203.0.113.10и других, заканчивающихся на10, правило не сработает.вЕсли значение входит в указанный список.
Пример: вы указали
Метод запроса в GET, POST. Правило сработает для запросов с одним из этих методов. Для запросов с методамиPUT,DELETE,PATCHи другими, которых нет в списке, правило не сработает.не вЕсли значение не входит в указанный список.
Пример: вы указали
Страна не в Russian Federation, Belarus. Правило сработает для запросов из всех стран, кроме России и Беларуси.пустоеЕсли у параметра нет значения.
Пример: вы указали
Content-Type пустое. Правило сработает для запросов, в которых заголовокContent-Typeне передан. Если заголовок есть и содержит любое значение, напримерapplication/jsonилиtext/plain, правило не сработает.не пустоеЕсли у параметра есть значение.
Пример: вы указали
Content-Type не пустое. Правило сработает для запросов, в которых заголовокContent-Typeсодержит любое значение, напримерapplication/jsonилиtext/plain. Если заголовок не передан, правило не сработает.любоеПри любом значении параметра.
Пример: вы указали
Cookie_all (и): Имя — session, Значение — любое. Правило сработает при наличии cookiesessionс любым значением. Если cookie с таким именем в запросе нет, правило не сработает. -
-
Установите порог bot score.
Напомним:
-
bot score — это числовая оценка того, насколько источник запроса похож на бота: насколько его технические и поведенческие признаки похожи на признаки автоматизации;
-
источники, чей bot score равен порогу или выше, система классифицирует как ботов.
Среднее значение bot score — 0.5. Значения выше можно считать мягкой фильтрацией, ниже — жёсткой.
Если не знаете, какой порог bot score установить, обратитесь в поддержку — наши специалисты помогут настроить правило.
-
-
Нажмите
Создать.
Правило создано! Оно появится в списке на вкладке Классификация ботов. Чтобы правило начало работать, включите тоггл в столбце Включено: он должен загореться зелёным.
|
Если ваше правило распространяется на весь входящий трафик, рядом с ним будет зелёная плашка «Весь трафик». |
Примеры настройки
Базовая классификация для всего трафика
Цель: классифицировать источники как ботов при bot score 0.7 и выше.
Настройка:
-
условия: не заданы;
-
порог bot score:
0.7.
Порог 0.7 будет установлен для всего трафика. Исключение — трафик, для которого вы настроили специальные правила с более жёсткой фильтрацией.
Более строгая классификация для административной панели
Цель: строже классифицировать трафик к административной панели.
Настройка:
-
путь URL содержит
/admin; -
порог bot score:
0.4.
Правило устанавливает порог 0.4 для запросов к административной панели. На запросы к другим путям оно не влияет.
Отдельная классификация для API-эндпоинтов
Цель: настроить более мягкую фильтрацию для API-эндпоинтов.
Настройка:
-
путь URL начинается с
/api/; -
порог bot score:
0.75.
Правило устанавливает порог 0.75 для запросов к API-эндпоинтам. На запросы к другим путям оно не влияет.
|
Проверьте, нет ли у вас более строгого правила для всего трафика. Если оно есть, мягкое правило не сработает: настройки будут конфликтовать и система станет использовать наименьший порог. |
Управление правилами
Откройте вкладку Классификация ботов. Там вы можете управлять созданными правилами:
-
Включить/выключить: в строке с нужным правилом нажмите на тоггл Включено. Зелёный цвет тоггла значит, что правило работает и участвует в фильтрации, серый — что оно неактивно.
-
Редактировать: напротив нужного правила нажмите на три точки (
…) и выберите Редактировать. -
Удалить: напротив нужного правила нажмите на три точки (
…), выберите Удалить и подтвердите удаление.