跳转到内容
搜索文档

JA3/JA4 指纹

最后更新 查看 MarkdownAgent 设置

JA3JA4 指纹 根据 TLS 客户端发起连接的方式来识别它们。每个客户端类型(浏览器、bot 或应用程序)都有不同的连接特征,因此生成的指纹可作为跨不同目标 IP、端口和证书的稳定标识符。

JA4 通过对 ClientHello 扩展进行排序改进了 JA3,这减少了现代浏览器的唯一指纹数量,并使分组更加容易。

如果您希望使用 JA4 指纹和 Signals Intelligence,您的 Workers 脚本必须能够处理数组中任何字段缺失的情况,包括:

  • JA4 指纹可能缺失的情况。
  • ja4Signals 数组可能缺失的情况。
  • 值为 NaNInfinity 的结果将被排除在数组之外。
{
  "ja4Signals": {
    "h2h3_ratio_1h": 0.98826485872269,
    "heuristic_ratio_1h": 7.288895722013e-05,
    "reqs_quantile_1h": 0.99905741214752,
    "uas_rank_1h": 901,
    "browser_ratio_1h": 0.93640440702438,
    "paths_rank_1h": 655,
    "reqs_rank_1h": 850,
    "cache_ratio_1h": 0.18918327987194,
    "ips_rank_1h": 662,
    "ips_quantile_1h": 0.99926590919495
  },
  "jaSignalsParsed": {
    "ratios": {
      "h2h3_ratio_1h": 0.98826485872269,
      "heuristic_ratio_1h": 7.288895722013e-05,
      "browser_ratio_1h": 0.93640440702438,
      "cache_ratio_1h": 0.18918327987194
    },
    "ranks": {
      "uas_rank_1h": 901,
      "paths_rank_1h": 655,
      "reqs_rank_1h": 850,
      "ips_rank_1h": 662
    },
    "quantiles": {
      "reqs_quantile_1h": 0.99905741214752,
      "ips_quantile_1h": 0.99926590919495
    }
  }
}

当缺少 JA4 信号时,输出如下所示:

缺少 JA4 信号时的输出json
{
  "ja4Signals": {},
  "jaSignalsParsed": {
    "ratios": {},
    "ranks": {},
    "quantiles": {}
  }
}

JA3 或 JA4 指纹是基于 SSL/TLS 的标识符,在特定情况下,日志中的值可能为空(null)或为空字符串:

  • 由于 JA3 和 JA4 是在 TLS(SSL)握手期间计算的,因此对于未加密的 HTTP 流量,这些值不会存在。
  • Worker 向 Cloudflare 内部网络中的区域(未代理的 O2O 流量)或第三方源发送请求时,或当 Worker 将流量路由到目标区域时,该字段可能为空。
  • 当 Bot Management 本身因某个请求被跳过时,指纹可能不存在,因为该功能负责计算并填充这些值。
  • 使用 TLS Session Resumption 时,一旦初次 TLS 握手成功完成,后续连接将被简化处理,不再进行指纹计算。

通常,O2O 流量应包含 JA3 或 JA4 指纹,除非使用了 Worker 将流量从终端用户(面向客户端)区域路由到目标区域。

分析

要在可能为 bot 的请求上获取更多信息,请在以下工具中使用这些 JA3 和 JA4 指纹:

操作

要调整您的应用程序对特定指纹的响应方式,请在以下工具中使用它们:

用例

阻止或允许特定流量

一组相似的请求可能会共享相同的 JA3 指纹。因此,JA3 在阻止传入威胁时可能很有用。例如,如果您注意到现有防御措施未捕获 bot 攻击,请创建一个自定义规则,阻止或质询用于攻击的 JA3。

或者,如果现有防御措施阻止了实际上合法的流量,请使用 Skip 操作创建一个自定义规则,允许在友好请求中看到的 JA3。

如果您想通过 Bot Management 立即解决误报或漏报,JA3 也可能会很有用。

允许移动端流量

通常,移动端应用程序流量会在不同设备和用户之间产生相同的 JA3 指纹。这意味着您可以通过其 JA3 指纹识别您的移动端应用程序流量。

使用 JA3 指纹允许来自您移动端应用程序的流量,但阻止或质询剩余流量。

这篇文档对您有帮助吗?