tls/ja3指纹补充说明

声明

以下只是搬运下我公众号的东西。很早就发过了。原帖地址:

ja3指纹补充说明 (qq.com)

已经发公众号的为什么还发csdn

有的圈内朋友,不经过我的允许,删减摘录我公众号的内容,这里就不提谁了,心里清楚,还能获得一些关注和流量。很无语,所以我还不如自己也发发。【猛男落泪】

前言

之前那篇深度剖析ja3指纹因为一些不可抗力原因删除,删除之后发现适得其反,所以也别找我要了(哭了,卧槽...)

tls/ja3指纹补充说明_第1张图片

也有很多朋友遇到ja3相关的问题都开始在探讨以及直接群里圈我探讨。用微信好友Pluto的话,“你是万恶之源”,谁也妹想到,就因为一篇文章推动内卷了......下次我发文章都得仔细斟酌了,就怕又推动内卷了

而且在这个时间里,我开始看到有很多ja3相关的文章,在之前,我查阅大量资料的时候可是少之又少的,这点我至少觉得是一个好的影响,而不好的就是我居然看到有人抄袭我的文章放到知乎(是谁我就不说了),这个人就把案例改下,思路一模一样,而他的主页展示发现还在卖课....

还有的把我的文章机翻成英文挂到外网去的.....

tls/ja3指纹补充说明_第2张图片

那如果时间久了他们怕是得说这些都是他自己研究出来的了?不是不让你抄,你抄完好歹加个原文地址吧......

这些我就真的没法忍了,技术不是抄来的,不是你的始终不是你的,即使你学会了抄到了,以后遇到稍微改动过的你一样不会。(不针对所有人,只针对我说的那少部分人)

所以以上种种,觉得有必要再继续聊下ja3指纹

回顾tls指纹五个特征数组

再简单聊聊,不然怕有些朋友已经忘了

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爬虫

tls指纹与市面上的各种混淆有什么不同点

相信你可以看到,现在国内国外的各种混淆加密,什么jsvmp啊,风控检测啊,滑块验证啊,某数,某美啥的加密啊,jsl,5秒盾,shape盾啥的,各种反爬手段层出不穷,即时对目前的你来说可能搞不定,但是至少都是有迹可循的。

而tls指纹,就是种很另类的东西,如猿人学外部题第19,没有任何数据加密,也没有加密的请求参数,cookie也是没有奇奇怪怪的字段,接口直接能用,浏览器直接访问,哎~,当你用代码请求它就是不行,因为它验证的是ssl层的指纹,在三次握手之后就可以判断你是不是正常浏览器了,这种就很骚啊

怎么判断是tls指纹

在你排除了http2.0协议,排除了验证请求头的情况,即使你已经确保代码设置得跟浏览器请求模拟得完全一致了,还是没法正常拿到数据,返回403或者权限不足的提示,此时浏览器就是可以访问的情况,那这种多半就是tls指纹了。

当然也不绝对,因为也有可能就是个很小的细节,只是你没注意到而已。多验证再说,别一看到你搞不定的就都说是ja3指纹,多检测你自己的代码逻辑

tls指纹发展趋势

目前的话,tls指纹里最成熟的还是ja3指纹了,以后应该会有其他的验证,目前这种指纹验证也分了cdn式和非cdn式,而像某迈就是cdn式的,猿人学外部第19题就是非cdn式的,即不用cdn在服务层一样可以判断。什么是cdn这里就不解释了。

我大概率猜测后续会有很多类似的出来,因为某为的waf就是带有这个指纹认证的。

tls最新指纹验证方案

据微信好友@未来说的,ssl3.0有史诗级bug,会导致心跳出血和farker,其中心跳出血就可以安全实现自定义加密套件,不然的话说不定现在都没有tls这个概念了。所以目前来看,最新的还是tls1.3,相关的指纹验证还是ja3指纹

目前的ja3指纹突破方法总结

python半突破

之前我查到的是已知的只能改ciphers加密套件,然后根据微信好友渔滒的发现,用pyqt可以改第三个扩展列表和第四个椭圆算法,最后一个椭圆标准还是没法改,相关链接:https://doc.qt.io/qt-5/qsslconfiguration.html

go库另类突破

  • ja3transporgt

  • cycletls

为什么不叫完美突破了,因为之前跟一个大佬聊过之后他说我这个其实不叫完美突破,所以我把名改了,并且即使以后我有完美突破方案我也不会发了(还是文章开头说的原因,不想加速内卷,不想被人抄袭,也不得不保留点了)

node

也就是上面的go库的node版

浏览器/rpc

不要纠结于手段,你只要能拿到数据,管他那么多呢

tls指纹有办法完全自定义吗?

目前我有空就在研究,没有结果之前,不好意思暂不便多说

猿人学内部29题怎么个情况

有很多朋友在问我29题怎么搞.....

说来惭愧,卞大之前来成都面基,他当着我面跟我说过,他就是看了我的文章对这个tls指纹重新燃起了希望,然后出现了29题,这个题就是针对上面的go库cycletls设计的。

相信有些朋友已经试过了,用这个库请求29题是不行的。(不得不说卞大是真的强)

在访问29题前,浏览器访问ja3官网记录指纹,访问29题之后,再访问ja3官网,指纹变了,这个是降低难度之前

tls/ja3指纹补充说明_第3张图片

出题人把降低难度之后,访问29题前后ja3指纹都不会变了

tls/ja3指纹补充说明_第4张图片

所以现在有朋友或许可以误打误撞搞出来

具体情况需要懂原理然后自己悟的,因为经某大佬嘱咐,我不能说出来,这个必须守约的。

结语

以上都是个人见解,如果有误还望指正,有任何问题,我很乐意跟各位大佬们交流,我微信id:geekbyte

你可能感兴趣的:(tls/ja3,反爬虫与爬虫,python,爬虫,安全,反爬)