免费工具

JA4 指纹解析工具

粘贴 JA4 或 JA4_r,查看客户端在 TLS 握手中提供了什么。

一次握手,三个部分

t13d1516h2_8daaf6152771_e5627efa2ab1

  • tTCP
  • 13TLS 1.3
  • d服务器名称
  • 15加密套件
  • 16扩展
  • h2HTTP/2
  • 加密套件哈希
  • 扩展哈希

解析指纹

示例

在浏览器本地运行,粘贴的内容不会发送到任何地方。

格式

三个部分,一次握手

  1. t13d1516h2

    可读:协议、版本、SNI、加密套件数、扩展数、第一个 ALPN 值。

  2. 8daaf6152771

    加密套件排序后做 SHA-256,截取 12 个字符。

  3. e5627efa2ab1

    扩展排序(不含 SNI 和 ALPN),再按原顺序附上签名算法,以同样方式哈希。

JA3 与 JA4

JA4 为什么取代了 JA3

项目JA3JA4
哈希对全部字段做一次 MD5可读前缀加两个短 SHA-256 哈希
扩展顺序按发送顺序哈希,Chrome 打乱顺序后每次连接都会得到新的 JA3先排序,顺序不影响结果
无需查表即可阅读否协议、版本、SNI、计数、ALPN
QUIC无标记以 q 开头
许可证BSD 3-ClauseBSD 3-Clause(仅 JA4)

来源

获取请求的 JA4

只有终止 TLS 的一方能看到 ClientHello,页面中的脚本永远看不到。

  • Cloudflare

    Bot Management 在规则中提供 cf.bot_management.ja4,在 Workers 中提供 request.cf.botManagement.ja4。

  • AWS WAF

    规则可以匹配 JA4 指纹,WAF 日志也会记录它。

  • 自建代理

    任何终止 TLS 的组件都能计算 JA4,并通过 X-JA4 等请求头传递。

  • Wireshark

    FoxIO 的插件为抓包结果增加 JA4 列。

Agentscan

每条判定旁都有 JA4

在每次 Agentscan 检查中附上 JA4。它会与判定、地址和网络一起保存,日志可显示每个请求背后的 TLS 客户端。

  • 在 Cloudflare Bot Management 之后,我们的 Worker 会自动读取并发送它。
  • 其他环境下,将它放入 ja4 字段或 X-JA4 请求头。
  • 没有边缘节点就没有 JA4:日志会如实说明,而不是猜测一个。
附带 JA4 的 Agentscan 检查
curl -X POST https://ipscanner.io/v1/agentscan/check \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ip": "203.0.113.7",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
    "ja4": "t13d1516h2_8daaf6152771_e5627efa2ab1"
  }'

常见问题

JA4 指纹问答

什么是 JA4 指纹?

一个描述 TLS ClientHello 的短字符串:客户端提供的协议和版本、是否发送了服务器名称、列出了多少加密套件和扩展、第一个 ALPN 值,后面是这些列表的两个哈希。FoxIO 于 2023 年发布,作为 JA3 的继任者。

t13d1516h2 是什么意思?

基于 TCP 的 TLS、1.3 版本、SNI 中带有域名、15 个加密套件、16 个扩展,第一个 ALPN 值为 HTTP/2。每个 JA4 都以这样的部分开头,这也是唯一无需查表就能读懂的部分。

JA4 与 JA3 有什么不同?

JA3 是按发送顺序对握手字段做的一次 MD5。Chrome 自 2023 年起打乱扩展顺序,导致同一浏览器每次连接都得到新的 JA3。JA4 先对列表排序,因此保持稳定,并保留可读前缀。

JA4 可以伪造吗?

可以。curl-impersonate、uTLS 等工具能复制浏览器的 ClientHello,因此单凭浏览器 JA4 无法证明对方是浏览器。它在与其他信号矛盾时最有用,例如 Chrome 的 User-Agent 却带着 Python 的握手。

JA4 中的哈希可以还原吗?

不可以。b 和 c 部分是截断为 12 个字符的 SHA-256 哈希。要查看背后的加密套件和扩展,请记录 JA4_r,它以明文保留这些列表。

从哪里获取请求的 JA4?

从终止 TLS 的环节获取:CDN、负载均衡器或反向代理。页面中的 JavaScript 无法读取,因为握手在任何脚本运行之前就已结束。

JA4 可以免费使用吗?

JA4(TLS 客户端指纹)采用 BSD 3-Clause 许可。其他 JA4+ 方法(JA4S、JA4H、JA4X、JA4T 等)采用 FoxIO License 1.1,对商业用途设有条件,将它们集成到产品前请先阅读该许可。