反爬虫系统、CDN 和风控服务识别客户端时,常常不只看它发了什么,还看它 怎么连接。最常见的是 JA3、JA4 TLS 指纹,以及针对 HTTP 请求的 JA4H。HTTPS Capture 会为 iPhone 上的流量计算这三种指纹,你可以看到 Safari、App 内置浏览器或某个 SDK 在服务器眼里是什么样子,也能把不同客户端放在一起对比。
这些指纹是什么
- JA3:TLS ClientHello 的哈希,由 TLS 版本、加密套件、扩展、支持的曲线组和点格式组成。用得很广,但浏览器打乱扩展顺序后它就会变化。
- JA4:更新、可读的 TLS 指纹,形如
t13d1516h2_8daaf6152771_e5627efa2ab1。它包含传输层和 TLS 版本、是否带 SNI、加密套件和扩展的数量、ALPN,以及排序后的套件和扩展哈希,不受扩展顺序影响。 - JA4H:每条 HTTP 请求的指纹,由方法、HTTP 版本、是否带 Cookie 和 Referer、Header 数量、语言,以及 Header 名和 Cookie 的哈希组成。
查看指纹
- 对目标 App 或网站 抓包。
- 打开一条 HTTPS 请求,切到 概览 标签页。
- 在 Client Fingerprints 区域可以看到:
- JA4:TLS 连接的指纹(HTTPS、WSS)
- JA4H:这条请求本身的指纹(HTTP、HTTPS、WS、WSS)
点指纹可以进入详情页。
读懂详情
TLS Fingerprint 页面逐段解释 JA4:传输层、客户端提供的 TLS 版本、SNI、ALPN,以及套件和扩展的哈希。Observed ClientHello 列出实际的加密套件、扩展、曲线组和签名算法。可以复制 JA4、JA3 或 JA3 原始串。
HTTP Fingerprint 页面把 JA4H 拆成前缀和各段哈希,还列出实际观察到的 Header 顺序和 Cookie 名,方便看出两条请求的指纹为什么不同。
实际用途
- 排查“被识别为机器人”:对比 App 所用 HTTP 库和 Safari 的指纹。
- 检查 SDK 或 WebView:看内置浏览器和系统浏览器的连接方式是否不同。
- 验证 TLS 库升级:更换网络库后,确认 ClientHello 仍然符合预期。
- 学习 TLS:看看真实的 iOS App 都提供了哪些加密套件和扩展。
说明
- 指纹描述的是 App 连接 HTTPS Capture 本地代理时发出的 ClientHello,也就是 App 自己的握手特征,这正是你要研究的部分。代理再连服务器时使用的是它自己的 TLS 设置。
- 不解密、直接放行的主机(比如做了证书固定的 App 和 Apple 系统域名)流量照常通过,但没有 HTTP 层面的 JA4H。
准备好试试了吗?
HTTPS Capture · Capture and decrypt HTTPS traffic on iPhone
App Store 免费下载