INTEGRITY Документация

JavaScript Detections

JavaScript Detections представляет собой отдельный тип проверки, не относящийся к Challenge Pages или Turnstile от Cloudflare. JavaScript Detections помогает Cloudflare решения для защиты от ботов выявлять автоматизированные запросы.

Хотя Challenge Pages и Turnstile полагаются на клиентские сигналы для определения подлинности запроса, функция JavaScript Detections в составе Bot Management также использует клиентские сигналы, но проверяет каждый без исключения запрос к вашему сайту.

Процесс

JavaScript Detections реализуется на вашем сайте с помощью лёгкого, невидимого фрагмента JavaScript-кода, который соответствует Cloudflare стандарты конфиденциальности.

JavaScript внедряется только в ответ на запросы HTML-страниц или просмотры страниц, исключая AJAX-запросы. Трафик API и мобильных приложений не затрагивается.

Срок действия JavaScript Detections составляет 15 минут. Однако код внедряется повторно ещё до истечения сессии. После загрузки страницы скрипт откладывается и, где это возможно, выполняется в отдельном потоке, чтобы свести влияние на производительность к минимуму. Фрагменты JavaScript будут содержать источник, указывающий на Challenge Platform, с путями, которые начинаются с /cdn-cgi/challenge-platform/…

После внедрения JavaScript Detections на HTML-страницу браузер посетителя выполнит этот фрагмент JavaScript-кода, и cf_clearance cookie выдаётся посетителю. Информация JavaScript Detections хранится в cf_clearance cookie и используется для заполнения js_detection.passed.

Когда посетитель сталкивается с пользовательским правилом WAF на вашем сайте, это правило проверяет результат cf_clearance cookie. Результат cf_clearance cookie определяет, будет ли запрос пропущен, заблокирован или отправлен на проверку.

Чтобы включить JavaScript Detections и обеспечить их применение, выполните указанные ниже шаги.

1. Включите JavaScript Detections

Для клиентов с Bot Fight Mode JavaScript Detections включается автоматически, и его нельзя отключить.

Для клиентов Super Bot Fight Mode и Bot Management уровня Enterprise JavaScript Detections является необязательным.

  1. На панели управления Cloudflare перейдите к разделу Security Settings страницу.

    Перейдите в Настройки ↗
  2. В настройках конфигурации плана трафика ботов выберите значок редактирования для JS detections и включите JavaScript Detections включить.

Подробнее о настройке защиты от ботов см. в Документация по ботам.

2. Обеспечьте принудительное выполнение JavaScript Detections

После включения JavaScript detections необходимо использовать cf.bot_management.js_detection.passed поле, чтобы создать Пользовательские правила WAF (или request.cf.botManagement.jsDetection.passed переменную в Workers).

При добавлении этого поля в пользовательские правила WAF его следует использовать на конечных точках, которые ожидают трафик браузера (не для нативных мобильных приложений и не для конечных точек WebSocket), после первого запроса пользователя к вашему приложению (Cloudflare требуется как минимум один HTML-запрос, прежде чем внедрить проверку JavaScript), а также вместе с действием Managed Challenge. Это связано с тем, что существуют законные причины, по которым пользователь мог не пройти проверку JavaScript Detection: проблемы с сетью, блокировщики рекламы, отключённый JavaScript в браузере, нативные мобильные приложения.

Предварительные требования

cf.bot_management.js_detection.passed поле никогда не следует использовать в пользовательском правиле WAF, которое соответствует первому запросу посетителя на сайт. Чтобы Cloudflare мог внедрить обнаружение JavaScript, сначала должен произойти хотя бы один HTML-запрос.

(http.request.uri.path eq "/api/v4/user/create" and http.request.method eq "POST" and not cf.bot_management.verified_bot)
and (cf.bot_management.score lt 30 or !cf.bot_management.js_detection.passed)
"botManagement": {
"jsDetection": {
    "passed": false
}
}

См. Документация по WAF для получения дополнительных сведений о создании пользовательского правила.

API

Если вы включите JavaScript Detections через панель управления, Cloudflare добавит тег script на все HTML-страницы, отдаваемые вашим сайтом. Если вы хотите ограничить, где отображается JavaScript Detections, это можно сделать с помощью скрипта JavaScript Detections API.

JavaScript Detections API предоставляет вам более детальный контроль над тем, когда и где JavaScript Detections внедряется на вашем сайте, а также возможность обработки обратного вызова (для логирования или других дополнительных действий).

Вы можете явно добавить ссылку на скрипт в /cdn-cgi/challenge-platform/scripts/jsd/api.js и ваш собственный код, вызывающий window.cloudflare.jsd.executeOnce на отдельных HTML-страницах вашего сайта.

Следующий скрипт необходимо добавить на каждую страницу, где вы хотите включить JavaScript Detections:

<script>

function jsdOnload(){
  window.cloudflare.jsd.executeOnce(
    {
      callback: function(result){
        console.log('jsd outcome', result);
      }
    }
  );
}
</script>
<script src="/cdn-cgi/challenge-platform/scripts/jsd/api.js?onload=jsdOnload" async>

Особенности

JavaScript Detections не гарантирует конкретный показатель бота.

Ограничения

Если вы включили Bot Management до июня 2020 года

У клиентов, включивших Enterprise Bot Management до июня 2020 года, функция JavaScript Detections по умолчанию не включена (если она не была запрошена отдельно). Такие клиенты могут включить эту функцию самостоятельно в панели управления Cloudflare.

Если это первый запрос к вашему сайту

Первый запрос от нового клиента к вашему сайту или приложению обычно не содержит данных JavaScript Detections (cf.bot_management.js_detection.passed = false). Это связано с тем, что Cloudflare требуется как минимум один HTML-запрос, прежде чем внедрить JavaScript Detection и выдать cf_clearance cookie.

Последующие запросы могут включать cf_clearance cookie, если JavaScript выполнился успешно.

Если у вас есть политика безопасности контента (CSP)

Если у вас есть Content Security Policy (CSP), необходимо выполнить дополнительные шаги для внедрения JavaScript Detections:

Если у вас есть ETags

При включении JavaScript Detections (JSD) будут удалены ETags из HTML-ответов, в которые внедряется JSD.

Если ваш origin-сервер отправляет no-transform заголовок

Если ответ исходного сервера содержит Cache-Control: no-transform директивы Cloudflare не внедряет скрипт JavaScript Detections. cf.bot_management.js_detection.passed поле будет отображаться как missing для этих запросов.

Чтобы использовать JavaScript Detections, удалите no-transform директиву из Cache-Control в заголовках ответа на страницах, где должен выполняться JavaScript Detections. Дополнительные сведения см. в Директивы Cache-Control.