Сбор JS score

Назначение

Сбор JS score (Score collection) позволяет определить, при каких запросах система должна отдавать JS-скрипт для сбора JS score.

JS score используется для оценки источника запроса. Он помогает системе отличать обычных пользователей от автоматизированных источников и может использоваться в дальнейшей классификации и правилах защиты.

Как работает сбор JS score

  1. Пользователь или клиент обращается к защищённому ресурсу.

  2. Система проверяет правила Сбора JS score.

  3. Если запрос соответствует правилу и в cookies отсутствует JS score, система отдаёт JS-скрипт.

  4. Браузер выполняет скрипт.

  5. После выполнения скрипта система сохраняет JS score в cookies.

  6. При следующих запросах score уже может использоваться в правилах классификации и защиты.

Важно: JS-скрипт отдаётся только если JS score отсутствует в cookies. То есть только в случае, если источник запроса ранее не проходил JS-проверку или score недоступен.

Что делают и чего не делают правила сбора JS score

Правила сбора JS score:

  • определяют, где можно отдавать JS-скрипт;

  • помогают собрать score у источников запросов;

  • не блокируют трафик;

  • не принимают решение, является ли источник ботом;

  • не применяют защитные действия.

Для классификации источника используйте Классификацию ботов. Для блокировки, challenge или других действий используйте Правила защиты.

Важное ограничение

При настройке правил обязательно учитывайте архитектуру приложения.

Не отдавайте JS-скрипт в ответ на запросы, где JavaScript не может быть корректно выполнен:

  • AJAX/API-запросы;

  • JSON-эндпоинты;

  • webhooks;

  • запросы мобильных приложений;

  • запросы, ожидающие изображение, файл или другой не-HTML-ответ;

  • служебные запросы фронтенда, которые не рассчитаны на выполнение JS-страницы.

Если отдать JS-скрипт в ответ на такой запрос, приложение может получить неожиданный ответ вместо ожидаемых данных. Это может привести к ошибкам в интерфейсе или нарушить работу интеграций.

Когда использовать правила сбора JS score

Используйте эти правила для страниц и маршрутов, где пользовательский браузер может корректно выполнить JavaScript.

Подходящие примеры:

  • HTML-страницы сайта;

  • страницы входа;

  • страницы каталога;

  • страницы карточек товаров;

  • посадочные страницы;

  • страницы личного кабинета, если они открываются в браузере и могут корректно выполнить JS.

Неподходящие примеры:

  • /api/*;

  • /webhook/*;

  • /ajax/*, если endpoint ожидает JSON;

  • endpoints мобильного приложения;

  • загрузка файлов;

  • обращения к ресурсам, которые должны возвращать строго определённый формат ответа.

Основные элементы правила

Позиция

Позиция определяет порядок проверки правил. Чем выше правило в списке, тем раньше оно проверяется.

Если правило без условий применяется ко всему трафику, оно может повлиять на широкий набор запросов. Используйте такие правила осторожно.

Описание

Описание помогает понять назначение правила в списке.

Рекомендуется указывать, для каких страниц или сценариев создано правило.

Примеры:

  • Collect score on login page;

  • Collect score for catalogue pages;

  • Collect score during DDoS attacks.

Условия

Условия определяют, к каким запросам применяется правило.

Доступны две группы условий:

  • Трафик;

  • Статус DDoS-атаки.

Если условия не заданы, правило применяется ко всему трафику, который не был обработан другими правилами.

Условия по трафику

Условия по трафику позволяют ограничить правило конкретными запросами.

В зависимости от доступных настроек можно использовать:

  • страну;

  • путь URL;

  • сегмент пути URL;

  • query string;

  • Content-Type;

  • Cookie;

  • Header;

  • Hostname;

  • hosting subnet;

  • метод запроса;

  • Referer;

  • ASN;

  • hashes;

  • признак нового пользователя;

  • source subnet;

  • User-Agent;

  • X-Forwarded-For.

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

Условия по статусу DDoS-атаки

Правило можно применять в зависимости от текущего статуса DDoS-атаки:

  • Всегда;

  • Пока нет DDoS-атаки;

  • Во время DDoS-атаки.

Например, можно собирать JS score только во время DDoS-атаки, чтобы не добавлять лишнюю проверку в обычном режиме.

Создание правила

  1. Перейдите в раздел Защита приложений → Ресурсы.

  2. Найдите ресурс, для которого нужно настроить правила, нажмите на три точки (…) в конце строки и выберите Пользовательские правила.

  3. Откройте таб Сбор JS score.

  4. Нажмите Создать правило сбора JS score.

  5. Укажите позицию правила.

  6. Добавьте описание.

  7. Настройте условия по трафику.

  8. Настройте условие по статусу DDoS-атаки.

  9. Нажмите Создать.

Редактирование правила

Чтобы изменить правило:

  1. Откройте таб Сбор JS score.

  2. Найдите правило в списке.

  3. Откройте меню действий.

  4. Выберите Редактировать.

  5. Измените описание или условия.

  6. Нажмите Сохранить.

Включение и выключение правила

В списке правил можно включить или выключить правило с помощью переключателя.

Выключенное правило остаётся в списке, но не применяется к трафику.

Удаление правила

Чтобы удалить правило:

  1. Откройте меню действий в строке правила.

  2. Выберите Удалить.

  3. Подтвердите действие.

После удаления правило перестанет применяться.

Примеры настройки

Сбор score на HTML-страницах каталога

Цель: собрать JS score у пользователей, которые открывают страницы каталога.

Пример условий:

  • Путь URL начинается с /catalogue/;

  • Статус DDoS-атаки: Всегда.

Сбор score только во время атаки

Цель: включать сбор score только в период повышенной нагрузки или атаки.

Пример условий:

  • Путь URL начинается с /;

  • Статус DDoS-атаки: Во время DDoS-атаки.

Исключение API-запросов

Цель: не отдавать JS-скрипт в ответ на API-запросы.

Рекомендация: не создавайте широкое правило без условий, если ресурс содержит API-эндпоинты. Настройте правило только на HTML-страницы или явно исключите пути API через условия, если такая логика доступна.

Рекомендации

  • Отдавайте JS-скрипт только там, где клиент может выполнить JavaScript.

  • Не используйте широкие правила без условий для ресурсов, где есть API, webhooks или мобильные endpoints.

  • Для начала настройте сбор score на основных HTML-страницах.

  • Проверьте поведение приложения после включения правила.

  • Используйте логи запросов, чтобы убедиться, что JS-скрипт не отдаётся на технические endpoints.

  • Если нужно применять действия к источникам после сбора score, настройте Классификацию ботов и Правила защиты.