JA3 与 JA4 指纹
Scrapeless Agent Browser 为涉及浏览器执行和网络通信的网页自动化提供托管的浏览器会话。
摘要
- JA3 和 JA4 总结了选定的 TLS 客户端行为。 这两种指纹都无法识别个人身份,也不能证明流量是自动化的。
- JA3 在其所选输入列表中保留顺序。 握手顺序的变化可能会改变生成的指纹。
- JA4 使用了一种不同的结构化和标准化表示形式。 应比较兼容的实现,而不是将 JA3 和 JA4 视为可互换的哈希。
- TLS 观察点决定测量的是哪个客户端。 终止中介可以向目标端发起其自己的握手。
了解 TLS 指纹测量的内容
TLS 客户端指纹汇总了连接握手中所选属性。JA3 和 JA4 描述了这些属性的不同表示方式。生成的值对于比较观测到的流量很有用,但它不是用户身份,也不是对浏览器的完整描述。
The TLS 握手规范 定义了 ClientHello 交换以及客户端提供的功能。指纹算法从该交换中选择信息,并应用其自身的规范化和编码。将协议定义与指纹格式分开。TLS 不要求每个实现都生成 JA3 或 JA4 值。
安全团队可以将指纹模式作为证据来源之一,与请求行为和其他上下文一起使用。应用程序运营人员可以使用它们来比较不同环境或调查网络路径。在这两种情况下,解读都需要观测点、算法以及底层连接上下文。单独将一个裸哈希值复制到事件记录中会遗漏其中的大部分信息。
比较 JA3 和 JA4 表示形式
JA3 与 JA4 是对表示方式的比较,而不是保证较新的标签能够更准确地分类每一个连接。
| 维度 | JA3 | JA4 |
|---|---|---|
| 核心主题 | 选定的 TLS ClientHello 字段 | 结构化的 TLS 客户端指纹 |
| 表示 | 有序字段字符串和 MD5 摘要 | 具有规范化和哈希处理内容的组件 |
| Ordering sensitivity | 所选列表顺序会影响输入 | 归一化会减少某些顺序效应 |
| 解读 | 比较兼容的 JA3 计算 | 比较兼容的 JA4 计算和组件 |
| 身份声明 | 不会建立用户身份 | 不建立用户身份 |
仅通过重命名字段无法将 JA3 值转换为 JA4 值。需要原始握手信息和相关算法。将算法名称与该值一同存储,以便下游系统不会将不相关的指纹命名空间合并。
JA3 保留所选握手顺序
请提供需要翻译的英文文本。 原始 JA3 算法 从 ClientHello 的版本、密码套件、扩展、支持的椭圆曲线组和点格式构建一个字符串,然后使用 MD5 对该表示进行哈希。文档中记录的算法会排除 GREASE 值。保留下来的各列表的顺序对该表示仍然具有意义。
这种排序会产生解释方面的约束。即使应用程序的用途并未改变,客户端所提供的扩展顺序发生变化也会改变 JA3。不同的库配置也可能改变所提供的字段。不要把每一个新的 JA3 值都当作是新设备或新用户的证据。
摘要是针对选定输入的紧凑标签。它并不包含所有握手字段、请求头、浏览器存储值或渲染行为。相同的选定输入可能会在许多客户端上产生相同的标签。因此,仅基于该标签做出的安全决策可能会将彼此无关的会话归为一组。
在此情境下,MD5 是一种指纹编码选择,而不是对 TLS 密码学防护的替代。应将传输安全性评估与指纹匹配分开进行。一个请求即使具有熟悉的指纹,仍然需要进行常规的证书和授权检查。
JA4 增加结构和规范化
The JA4 网络指纹规范和实现 使用具有规范化组件的结构化客户端表示。此设计使指纹的各个部分在比较时更有用,并降低了对某些顺序变化的敏感性。它仍然只对选定属性进行摘要,而不是整个客户端。
区分 JA4 与更广泛的 JA4+ 家族。相关的指纹类型观察的是不同的层或方向。JA4H 涉及 HTTP 客户端指纹识别;不应将其描述为 TLS JA4 值的另一种拼写。请在日志中明确记录类型、实现以及所观察到的协议层。
规范化会改变哪些差异仍然可见。稳定的 JA4 并不能证明两个会话来自同一用户,而变化的 JA4 也不能证明存在恶意行为。应结合连接环境和应用程序的预期流量一同解读该值。
如果你部署解析器或收集器,请根据选定的规范确认其行为。实现细节和可用字段可能会有所不同。仅凭仪表板标签并不能证明两个产品计算完全相同的变体,或以相同方式处理不完整的握手。
GREASE 和随机化是不同的概念
GREASE 值和扩展顺序应分别进行诊断。 TLS 扩展性的 GREASE 机制 保留用于行使协议可扩展性的值。JA3 的说明排除了这些值;将每个 JA3 变化都归因于 GREASE 与该已记录的规范化相矛盾。
保留扩展的顺序仍然会影响 JA3。比较记录应说明原始选定输入是否发生了变化、是否仅仅是它们的顺序发生了变化,以及收集器是否应用了相同的规范化处理。没有这些细节,已更改的摘要几乎无法提供解释。
对于经过授权的诊断捕获,在可行的情况下保留所提供握手字段的非机密摘要。在根据摘要推断原因之前先比较该摘要。避免将一个简化的博客示例视为所有 TLS 客户端行为的证据。
定位 TLS 终止点
测得的指纹属于在 TLS 观测点可见的客户端。你的应用进程和面向目标的 TLS 客户端并不总是同一个组件。
终止连接并建立新的 TLS 连接的中介可以向目标服务器发起它自己的握手。传输隧道而不终止内部 TLS 连接的中介与所观察到的客户端则有不同的关系。在将目标端的指纹归因于本地库之前,应先识别出实际路径。
记录观察者位置、连接方向、目标地址以及相关的路由配置。在内部网关进行的测量,可能描述的是与在公共服务边缘进行的测量不同的连接。如果在比较这些数值时没有标明边界,就可能产生虚假的差异。
浏览器自动化又增加了一层边界:与远程浏览器的控制连接,与浏览器到目标页面的连接是分离的。在控制服务上观察到的指纹,并不会自动描述面向目标页面的导航。请诊断产生该证据的连接。
在不将信号转换为身份的情况下关联它们
当指纹能够缩小调查范围时,它才最有用。它可以提示一组请求共享某些客户端特征,或者某次部署改变了其网络行为。但它本身无法确立这些请求的意图。
对于你运营的某项服务,将指纹与端点使用情况、请求速率、会话连续性、认证上下文以及观察到的结果进行对比。定义与某条规则相关联的操作,并在广泛强制执行之前审查误报情况。一个看起来像熟悉浏览器的握手并不是足够的授权信号。
对于数据采集而言,即使页面导航成功,仍然需要检查最终 URL、内容一致性以及必填字段。诊断指纹值并不能证明所采集的页面包含所请求的数据。请将网络观测与输出验收分别记录在不同的记录中。
尽量减少保留的可识别信息。调查可能只需要指纹类别和连接事件,而不是完整的用户档案。为运营日志设定访问和保留边界,而不是无限期保留所有可用信号。
在其实际层使用托管浏览器基础设施
无痕代理浏览器 提供了受管浏览器执行功能。 Agent Browser 简介 描述的是该基础设施的角色;这并不意味着 JA3 或 JA4 能保证获得许可、实现隐身或成功进行采集。
在比较本地运行和远程运行时,应在实际可行的范围内尽量保持目标任务和浏览器配置不变。记录是哪一个环境打开了目标连接,以及是哪一个观察者提供了指纹。将渲染结果与网络标签分开进行比较。
该 浏览器网络指纹层 提供相关背景信息,但算法细节应来自主要的 JA3 和 JA4 定义。请审阅。 无爬取版定价 基于你的任务所需的浏览器会话,而不是基于声称的通用指纹成功率。
结论:比较同类观测结果
在定义好的观测点,将 JA3 和 JA4 用作具名且与实现相关的信号。保留足够的输入上下文,以解释变更、区分 TLS 指纹与其他网络层,并将它们与行为证据结合。谨慎的对比应描述所观测到的连接,而不虚构用户的身份或意图。
清晰地观察你的浏览器工作流程
使用托管浏览器执行授权任务,并将连接观察与内容接收分开。
立即注册即可获得 $5 免费额度 — 无需信用卡.
领取你的 $5 额度 →常见问题
问:JA4 是 JA3 哈希的直接替代品吗?
JA4 并不是对 JA3 哈希的直接重命名。这两种算法在选择和表示握手信息方面不同。请为它们的取值保留独立字段,并使用兼容的实现,从相应的连接证据分别计算。
问:JA3 是否包含 GREASE 值?
已公开的 JA3 算法会排除 GREASE 值。当保留的字段或其顺序发生变化时,JA3 仍然可能发生变化。在将变化的取值归因于某个特定机制之前,请先检查所选握手输入以及采集器的行为。
问:指纹能识别单个浏览器用户吗?
TLS 指纹本身不能可靠地识别单个用户。许多客户端可能共享所选的握手属性,而且某个客户端的属性也可能发生变化。请将指纹作为关联证据使用,并配合适当的隐私和留存控制。
问:代理是否总会改变 TLS 指纹?
代理并不总会改变面向目标的 TLS 指纹。结果取决于它是终止 TLS,还是传输客户端的内部连接。在将该取值归因到某个组件之前,请先确定实际的 TLS 终止点和观测点。
问:匹配浏览器指纹是否就能保证获得访问权限?
匹配选定的类似浏览器的握手属性并不能保证获得访问权限。服务还可以评估身份验证、行为、策略以及其他信号。你的工作流仍然必须遵守授权要求,并验证目标页面和提取的数据。