JAR3算法
JA3 Intro
项目地址👉https://github.com/salesforce/ja3
JA3S是服务器的TLS指纹,是通过提取TLS握手协议的一些字段值,再进行md5哈希
JA3是客户端的TLS指纹,和JA3S的生成差不多一样。
The JA3 algorithm takes a collection of settings from the SSL “Client Hello” such as SSL/TLS version, accepted cipher suites, list of extensions, accepted elliptic curves, and elliptic curve formats.
JA3S: MD5(TLS version,Cipher Suite,Ext1-Ext2...)
JA3: md5(TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats)

如这里版本号0x0303对应十进制771,密码套件0xc02f对应十进制49199,以及扩展类型

不同字段的值用,
分隔,同一字段的多个值用-
分隔,拼接起来刚好是JA3S Fullstring
再经过MD5哈希得到JA3S。
一般不同的客户端这些信息相同的概率都很小(包括顺序),所以服务端可能看某个JA3指纹的客户端高频率请求网站就把它封掉。
可以用这个网站来测试自己的JA3指纹:https://tls.peet.ws/
用无痕浏览器,每次刷新都得到不同的指纹,主要是每次扩展的顺序都变了

使用requests库发包,每次得到的也是相同的ja3指纹
import json
import requests
for i in range(5):
r = requests.get('https://tls.peet.ws/api/all')
print(json.loads(r.text)['tls']['ja3_hash'])
Ref
https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967/
Last updated
Was this helpful?