跳至正文
中文
立即开始

TLS 指纹识别

TLS 指纹识别通过 TLS 握手中的特征模式判断客户端软件,帮助网站区分浏览器、应用和自动化工具。

文章目录(8 个章节)

TLS 指纹识别的工作原理

客户端发送 ClientHello 消息,发起 HTTPS 连接。在交换任何页面内容之前,该消息会声明客户端支持的 SSL/TLS 能力,包括:

  • **协议版本:**客户端支持的 TLS 版本。
  • **密码套件:**客户端提供的加密选项及其顺序。
  • **扩展:**SNI、支持的组、签名算法等项目。
  • **应用协议:**ALPN 值,例如 h2 和 http/1.1。

指纹识别系统会选取并规范化这些字段,通常还会将其转换为较短的哈希值。不同的浏览器版本、操作系统和网络库可能产生不同的模式。软件更新可能改变指纹,多个客户端也可能共用同一指纹,因此它并非唯一身份标识。

TLS 指纹识别与浏览器指纹识别

TLS 指纹识别 浏览器指纹识别
信息来源 TLS 握手 浏览器 API 和页面行为
常见信号 密码套件、扩展和 ALPN Canvas、字体、屏幕和 WebGL
是否需要 JavaScript 否 通常需要
典型结果 客户端或库分类 更详细的浏览器环境

浏览器指纹识别发生在安全连接建立之后。网站通常会结合这两种方法,而不会单独把其中任何一种结果当作确凿证据。

TLS 指纹识别为何与代理有关

代理会改变网站看到的源 IP,但不一定会改变 TLS 指纹。使用 HTTP CONNECT 或 SOCKS 隧道时,通常仍由客户端通过隧道建立 TLS 连接。因此,目标网站看到的是浏览器、采集工具或 HTTP 库生成的指纹。

如果中间服务终止 TLS,再与目标网站建立新连接,目标网站看到的会是该中间服务的指纹。CDN 或 Web 应用防火墙可能会将其与 User-Agent、HTTP/2 设置、Cookie、IP 信誉和请求行为一并比较,用于机器人检测。如果模拟浏览器的 User-Agent 搭配非浏览器的 TLS 模式,各项信号就可能显得不一致。

如何负责任地使用

  • **使用仍在维护的客户端。**当前版本的浏览器和 HTTP 库会采用最新的 TLS 设置,并包含安全修复。
  • **保持信号一致。**不要在请求头中声称使用无关的浏览器版本。
  • **保留会话上下文。**处理一系列相关请求时,应保持 Cookie、客户端设置和代理会话稳定。
  • **遵守网站限制。**遵守网站条款和 robots.txt,遇到验证时降低并发,并遵守限速要求。

常见问题

TLS 指纹识别能识别具体个人吗?

不能。它通常识别的是客户端系列、版本或 TLS 库,而不是具体个人。网站需要结合其他信号,才能区分使用相同指纹的用户。

使用代理会改变我的 TLS 指纹吗?

通常不会。隧道代理会改变网站看到的 IP,但仍由客户端与目标网站完成 TLS 握手。如果代理终止并重新建立 TLS 连接,则可能改变目标网站观察到的指纹。

JA3 与 TLS 指纹识别相同吗?

不同。JA3 是一种 TLS 指纹识别方法,会对选定的 ClientHello 字段计算哈希值。TLS 指纹识别的范围更广,还包括其他格式、字段和匹配方法。

相关术语

查看全部术语