ja3简介:
JA3 通过客户端应用程序通过 TLS 进行通信的方式进行指纹识别
字段顺序如下:
TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats
例:
769,47–53–5–10–49161–49162–49171–49172–50–56–19–4,0–10–11,23–24–25,0
然后对这些字符串进行 MD5 哈希处理,以生成JA3 TLS 客户端指纹。
ada70206e40642a3e4461f35503241d5
为什么该项技术对python是毁灭打击呢?
python目前只能改Ciphers里面的算法套件 Extensions,EllipticCurves,EllipticCurvePointFormats是没法改的, 原因是python发https请求是借助openssl库暴露出来的方法,因为openssl库对外提供的方法或者接口是没办法这么高度自定义的,Ciphers部分也最多能改改算法,都不能给个自己定义的算法进去的,所以python 发送的所有请求都会带有显著的指纹,和浏览器正常发送的不一样
国内使用现状
1.政府的一些网站 2. 国内一些大厂,国外大厂使用的相对比较多,比较经典的就是Akamai 3. 懂ja3爬虫的程序员搭建的网站
国内的网站使用ja3 大都停留在初级阶段,没有很深入,现在python还能靠修改Ciphers里面的算法套件绕过
python 怎么彻底解决ja3 呢
- 修改python 源码,重新编译
- 通过CFFI 调用三方的请求模块
- 更换语言栈,例如golang
golang 有个很强大的爬虫库gospider,这个库对ja3的支持非常深入
gitee地址
https://gitee.com/baixudong/gospider
github地址
https://github.com/baixudong007/gospider