以下只是搬运下我公众号的东西。很早就发过了。原帖地址:
ja3指纹补充说明 (qq.com)
有的圈内朋友,不经过我的允许,删减摘录我公众号的内容,这里就不提谁了,心里清楚,还能获得一些关注和流量。很无语,所以我还不如自己也发发。【猛男落泪】
之前那篇深度剖析ja3指纹因为一些不可抗力原因删除,删除之后发现适得其反,所以也别找我要了(哭了,卧槽...)
也有很多朋友遇到ja3相关的问题都开始在探讨以及直接群里圈我探讨。用微信好友Pluto的话,“你是万恶之源”,谁也妹想到,就因为一篇文章推动内卷了......下次我发文章都得仔细斟酌了,就怕又推动内卷了
而且在这个时间里,我开始看到有很多ja3相关的文章,在之前,我查阅大量资料的时候可是少之又少的,这点我至少觉得是一个好的影响,而不好的就是我居然看到有人抄袭我的文章放到知乎(是谁我就不说了),这个人就把案例改下,思路一模一样,而他的主页展示发现还在卖课....
还有的把我的文章机翻成英文挂到外网去的.....
那如果时间久了他们怕是得说这些都是他自己研究出来的了?不是不让你抄,你抄完好歹加个原文地址吧......
这些我就真的没法忍了,技术不是抄来的,不是你的始终不是你的,即使你学会了抄到了,以后遇到稍微改动过的你一样不会。(不针对所有人,只针对我说的那少部分人)
所以以上种种,觉得有必要再继续聊下ja3指纹
再简单聊聊,不然怕有些朋友已经忘了
TLSVersion,Ciphers,Extensions,EllipticCurves,EllipticCurvePointFormats
例:
771,4865-4866-4867-49195-49199-49196-49200-52393-52392-49171-49172-156-157-47-53,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-21,29-23-24,0
其实之前也说过这五个数组,TLSVersion 就是tls版本,目前比较新的就是771版本了,后面四个这里补充说明下
第二个Ciphers就是加密套件,之前也给过openss官方的链接:
https://www.openssl.org/docs/man1.1.1/man1/ciphers.html
第三个Extensions是扩展列表,相关链接:
https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml
第四个数EllipticCurves椭圆算法,后改成了supported_groups,但实际是同一个,相关链接:
https://blogs.sap.com/2020/11/08/troubleshoot-tls-1.2-with-elliptic-curve-cryptography/
第五个数EllipticCurvePointFormats椭圆标准,用这个特征就可以很肉眼可见的区分浏览器还是python爬虫
相信你可以看到,现在国内国外的各种混淆加密,什么jsvmp啊,风控检测啊,滑块验证啊,某数,某美啥的加密啊,jsl,5秒盾,shape盾啥的,各种反爬手段层出不穷,即时对目前的你来说可能搞不定,但是至少都是有迹可循的。
而tls指纹,就是种很另类的东西,如猿人学外部题第19,没有任何数据加密,也没有加密的请求参数,cookie也是没有奇奇怪怪的字段,接口直接能用,浏览器直接访问,哎~,当你用代码请求它就是不行,因为它验证的是ssl层的指纹,在三次握手之后就可以判断你是不是正常浏览器了,这种就很骚啊
在你排除了http2.0协议,排除了验证请求头的情况,即使你已经确保代码设置得跟浏览器请求模拟得完全一致了,还是没法正常拿到数据,返回403或者权限不足的提示,此时浏览器就是可以访问的情况,那这种多半就是tls指纹了。
当然也不绝对,因为也有可能就是个很小的细节,只是你没注意到而已。多验证再说,别一看到你搞不定的就都说是ja3指纹,多检测你自己的代码逻辑
目前的话,tls指纹里最成熟的还是ja3指纹了,以后应该会有其他的验证,目前这种指纹验证也分了cdn式和非cdn式,而像某迈就是cdn式的,猿人学外部第19题就是非cdn式的,即不用cdn在服务层一样可以判断。什么是cdn这里就不解释了。
我大概率猜测后续会有很多类似的出来,因为某为的waf就是带有这个指纹认证的。
据微信好友@未来说的,ssl3.0有史诗级bug,会导致心跳出血和farker,其中心跳出血就可以安全实现自定义加密套件,不然的话说不定现在都没有tls这个概念了。所以目前来看,最新的还是tls1.3,相关的指纹验证还是ja3指纹
之前我查到的是已知的只能改ciphers加密套件,然后根据微信好友渔滒的发现,用pyqt可以改第三个扩展列表和第四个椭圆算法,最后一个椭圆标准还是没法改,相关链接:https://doc.qt.io/qt-5/qsslconfiguration.html
ja3transporgt
cycletls
为什么不叫完美突破了,因为之前跟一个大佬聊过之后他说我这个其实不叫完美突破,所以我把名改了,并且即使以后我有完美突破方案我也不会发了(还是文章开头说的原因,不想加速内卷,不想被人抄袭,也不得不保留点了)
也就是上面的go库的node版
不要纠结于手段,你只要能拿到数据,管他那么多呢
目前我有空就在研究,没有结果之前,不好意思暂不便多说
有很多朋友在问我29题怎么搞.....
说来惭愧,卞大之前来成都面基,他当着我面跟我说过,他就是看了我的文章对这个tls指纹重新燃起了希望,然后出现了29题,这个题就是针对上面的go库cycletls设计的。
相信有些朋友已经试过了,用这个库请求29题是不行的。(不得不说卞大是真的强)
在访问29题前,浏览器访问ja3官网记录指纹,访问29题之后,再访问ja3官网,指纹变了,这个是降低难度之前
出题人把降低难度之后,访问29题前后ja3指纹都不会变了
所以现在有朋友或许可以误打误撞搞出来
具体情况需要懂原理然后自己悟的,因为经某大佬嘱咐,我不能说出来,这个必须守约的。
以上都是个人见解,如果有误还望指正,有任何问题,我很乐意跟各位大佬们交流,我微信id:geekbyte