IBM Cloud Docs
JavaScript 检测

JavaScript 检测

IBM Cloud® Internet Services (CIS) 机器人功能部件包含 JavaScript 检测。 使用 Google的 Picasso 指纹技术将少量 JavaScript 注入到客户机设备中。 将毕加索结果计入机器人评分中,并帮助 CIS 将流量分类为自动或人工流量。BotScoreSrc: Not Computed 和分数 0 与 Picasso JavaScript 指纹请求相关。 这些请求不受任何防火墙规则的阻止。

此检测技术收集有关到达 CIS的机器的常规数据。 例如,如果某个用户在 MacBook Pro上通过 Google Chrome 访问 CIS,因为有数百万用户使用 Google Chrome 在 MacBook Pro上,所以 CIS 无法识别特定个人。CIS 还采取措施对数据进行匿名处理和逐步淘汰,以增加隐私性。

仅为响应 HTML 页面或页面视图 (不包括 AJAX 调用) 的请求而注入 JavaScript。 API 和移动应用程序流量不受影响。 此外,在其 30 分钟的会话寿命到期之前,不会再次注入代码。 毕加索脚本大约为 70 KB,执行时间因设备而异,从 90 ms 到 500 ms 左右。

JavaScript 的片段将包含指向具有以 /cdn-cgi/challenge-platform/... 开头的路径的验证问题平台的源。

启用 JavaScript 检测

对于免费试用计划(机器人对战模式),JavaScript 检测会自动启用,无法关闭。

对于所有其他套餐 (Super Bot 战斗方式和 Bot Management for Enterprise),JavaScript 检测是可选的。 要调整设置,请转至 安全性> 机器人

强制执行 JavaScript 检测

要确保访问者先前已运行并通过 JavaScript 检测,您可以使用用于执行“受管提问”操作的字段 cf.bot_management.js_detection.passed 创建防火墙规则。 在 表达式预览 部分中输入 (cf.bot_management.js_detection.passed) 作为单数规则。

注意事项

  • 如果您有内容安全策略 (CSP):
    • 确保允许 /cdn-cgi/challenge-platform/ 下的任何内容。 CSP 应允许从源域 (script-src self) 提供的脚本。

    • 如果 CSP 将 nonce 用于脚本标记,那么 CIS 将通过解析 CSP 响应头向其插入的脚本添加这些非词。

    • 如果 CSP 未将 nonce 用于脚本标记,并且已启用 JavaScript 检测,那么您可能会看到控制台错误,例如

      Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-b123b8a70+4jEj+d6gWI9U6IilUJIrlnRJbRR/uQl2Jc='), or a nonce ('nonce-...') is required to enable inline execution.
      
    • 建议不要使用 unsafe-inline。 建议改为在 CDN 中解析并支持的脚本标记中使用 CSP nonces