type
status
date
slug
summary
tags
category
icon
password
概述
JA3 指纹的计算规则是基于 TLS 客户端在握手阶段发送的
Client Hello
消息中的关键字段,通过标准化的格式转换和哈希处理生成唯一标识。JA3 指纹用于用于识别 TLS 客户端(如浏览器、爬虫工具),其唯一性可用于反爬、威胁情报分析等领域。例如,Python 的
requests
库默认指纹固定,而 Go 的ja3transport
库可自定义指纹以绕过检测。
JA3指纹的组成
字段顺序:
Example:
把版本,加密套件,扩展等内容按顺序排列然后计算hash值,便可得到一个客户端的TLS FingerPrint。
Chrome JA3指纹
第一打开
4031567bddf29a9cb331bdf673285739
771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-5-11-35-27-18-23-17613-51-10-45-65037-43-16-13-65281,4588-29-23-24,0

第二打开
878c9c599e7d5d566b05ae36e9802ed7
771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,51-18-65037-13-0-27-10-23-65281-11-16-43-45-5-35-17613-41,4588-29-23-24,0

刷新以后,Chrome JA3指纹的hash值会发生变换,对比发现只有
SSLExtension
字段发生变化。SSLVersion | Cipher | SSLExtension | EllipticCurve | EllipticCurvePointFormat |
771 | 4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53 | 0-5-11-35-27-18-23-17613-51-10-45-65037-43-16-13-65281 | 4588-29-23-24 | 0 |
771 | 4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53 | 51-18-65037-13-0-27-10-23-65281-11-16-43-45-5-35-17613-41 | 4588-29-23-24 | 0 |
通过查阅资料发现,Chrome 对 JA3 指纹相关的 TLS ClientHello 消息结构进行随机化处理,核心目的是降低浏览器指纹识别的稳定性,从而保护用户隐私、增强 TLS 生态系统的灵活性。
Chrome 的 JA3 指纹随机化措施确实会显著降低传统 JA3 指纹检测的有效性,但并不意味着完全无法被检测。
Chrome JA3指纹 随机方案
随机下列排列

python requests JA3指纹
Python有关SSL的魔改库有很多,我们可以试试
curl_cffi
或者 tls_client
tls_client : https://pypi.org/project/tls-client/curl_cffi: https://pypi.org/project/curl-cffi/
具体使用可以看下面这篇文章
参考
- 作者:404False
- 链接:https://blog.404nofoundx.top//article/208fbc55-d559-8029-97a7-e51b44776500
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。