由于 TLS/SSL 协议历史悠久,存在大量握手参数,且握手时的参数是明文传递的。这使得握手时的参数的排列与组合方式便可以当做一种特征,即 TLS 指纹。通过 TLS 指纹,可以推断客户端的浏览器版本、操作系统等信息。
为了保护隐私和防止非标准 TLS 客户端检测,Surge 新加入了 Adaptive TLS Fingerprint 功能。Surge 将从处理的流量中自动提取和复制系统请求的 TLS 指纹(目前复制对象为 gateway.icloud.com 的 HTTPS 请求)。通过这种方式,Surge 所产生的 TLS ClientHello 数据包将与 iOS 系统请求完全一致,避免产生独特的 TLS 指纹。
目前该功能与 Shadow TLS v3 绑定,无需单独配置开启。
这是系统与 gateway.icloud.com 通讯时 Wireshark 所抓取到的 Client Hello 握手包。
这是 Surge 使用 gateway.icloud.com 的 SNI 与 Shadow TLS V3 服务器通讯时 Wireshark 所抓取到的 Client Hello 握手包。
可以看到,除了 Client Random 和 Session ID 两个随机字段外,其余参数均一致。所产生的 JA3 指纹也一模一样。
可从 JA3 指纹数据库中发现该指纹所对应的客户端信息:https://ja3.zone/hash/773906b0efdefa24a7f2b8eb6985bf37