0


tls指纹之到底怎么判断是否有tls、到底怎么对抗tls

声明

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

tls指纹之到底怎么判断是否有tls、到底怎么对抗tls (qq.com)

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

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

一、前言

其实自从大概一年前,发了tls/ja3那篇文章之后开始 ,就时不时有朋友找我私聊,让我帮忙看看某某平台,“怎么回事啊?”,“怎么python请求不到?”,“到底是不是tls?”,“怎么过tls?”,等等...

真的还挺多的

所以,这篇文章,我把我想的写出来,还不太懂的,请仔细看,一个字一个字的看,因为有的朋友问的问题,之前的文章其实都有的,所以我希望各位朋友,这篇文章请认真看

如果看完我这篇文章,还是无法确定是否是tls的话,也可以继续问我,但我希望你是经过自己思考还是没搞定的情况下再来的。

对tls还很陌生的朋友,可以看下猿人学的题,外部题19题,内部题22、29题,5s盾,阿什么迈

以及下面这几篇文章(请按顺序从上到下看)

https://mp.weixin.qq.com/s/Qx7PjnBgrTR30oCurU6CGw

https://www.cnblogs.com/Eeyhan/p/15662849.html

深度剖析ja3指纹及突破

ja3指纹补充说明

python完美突破tls/ja3

python突破tls后续:pip install

能过tls检测的curl-impersonate win版,搞起来啊

二、怎么判断有没有tls

这个话题我其实之前也说过了

你先排除以下情况:

1.验证了请求头顺序

比如猿人学的一道题,就验证了请求参数

我以前写过的博客:

https://www.cnblogs.com/Eeyhan/p/15292983.html

2.强制HTTP2.0协议

还是猿人学的一道题

我以前写的博客

https://www.cnblogs.com/Eeyhan/p/15662528.html

3.请求参数保证和抓包工具完全一致

比如,你的cookies,还有请求参数json.dumps的时候,是否要去掉空格

separators=(',', ':')

1.某车xx

群友给的,就不好说全名了,postman可以:

用python就是不行:

加下这个separators就可以了

2.某姓平台

访问进去的会有个验证,主要他还提示有个ssl安全加密

让你不得不联想到可能有tls,但是其实并没有,requests就可以访问的

3.某家平台

浏览器访问:

python下复制过来啥都不改就能访问的:

4.请求编码问题

某量引擎的请求参数 ,需要这样编码,才能正常请求

data="""{"keyword_list":["xxx"],"start_date":"20230115","end_date":"20230215","app_name":"aweme","region":[]}""".encode("utf-8")

某音也有类似的问题

更多的就得你自己具体问题具体分析

5.补充

补充一点就是,新版的requests 和 urllib3库,对ssl有校验,导致你开了抓包工具后,就无法请求数据,即使设置了verify=False,

解决办法就是安装低版本的requests和urllib3库即可

ip uninstall requests urllib3  # 先卸载pip install requests==2.27  urllib3==1.25.8 -i https://pypi.doubanio.com/simple  # 指定版本安装,不然默认会装最新版

4.其他语言或者工具可以请求,就python不行

你到这里,那确实可能有tls校验,注意我说的词,【可能有】,因为也不一定

5.web平台,除了浏览器可以,其他语言都不行,app平台,除了app,其他语言都不行

你到这里,那有tls校验概率就很高很高了。

为啥还是没法100%确定有?别急,下面有解释

三、怎么判断有没有强校验的tls

请先用上面的流程判断是否有tls之后,再来看这里

1.弱校验

就是postman可以 ,javascript也可以(js也可能不行),curl也可以,就python不行,那大概率是很弱的校验,只需要照着我下面的方案即可解决:

以猿人学的题为例:

https://www.cnblogs.com/Eeyhan/p/15662849.html

2.中校验

按照我上面的改tls套件的方法不行,但是curl或者postman就是可以

毕竟方案已经公开,可能针对性的改了下,所以你针对性的分析,

可以用以下方案过可以过

3.强校验

python、postman、curl、js请求都不行,只有浏览器可以

用以下方案可以过:

  • 魔改的pycurl,具体见我之前的文章:python完美突破tls/ja3,python突破tls后续:pip install
  • pyhttpx
  • curl_impersonate

四、误区:抓包工具没法判断是否有tls

很多人用抓包工具(wireshark,charles)看是否有tls,这个也是我之前对tls还不了解犯的错:

https://www.cnblogs.com/Eeyhan/p/15662849.html

抓包工具看到的是tls的套件算法,能不能验证是否有tls,这个是服务端判断的,只要有ssl,都会有tls套件的,比如,我用抓包工具看百度

比如上面,这里面能看到一堆tls算法,他就一定是tls吗,python也能直接请求百度啊。****

tls真正的验证实际在服务端,所以我上面说判断是否有tls,我都没用肯定的语气词,都说的可能,大概率,这东西只有靠排除和猜的,在服务端的东西,前端是看不到的

五、哪些网站、平台确定有tls检测

有某迈、5s防护盾的网站

国外的电商平台基本都有tls(某逊等)

六、怎么过tls校验

请先用上面的流程判断是否有tls之后,再来看这里

上面解释怎么判断tls强弱的时候,已经总结了点,之前的文章【ja3补充说明】也总结了点,这里我重新做一个比较全面、完整的总结:

根据tls校验程度从小到大排序:

1.原生python层面修改tls套件

参考:

https://www.cnblogs.com/Eeyhan/p/15662849.html

2.用go的库ja3transport

https://github.com/CUCyber/ja3transport

3.用go的库requests

https://github.com/wangluozhe/requests

4.用go的库cycletls

https://github.com/Danny-Dasilva/CycleTLS

5.魔改openssl

志远大佬的方案,我就不好贴地址了

6.用python的库 pyhttpx

这个是我群里的大佬自己实现了底层socket搞出来的:

https://github.com/zero3301/pyhttpx

7.用杆总魔改的pycurl

我之前的文章里有详细配置步骤:

python完美突破tls/ja3

8.用python的库

其实就是魔改的pycurl的简易安装版,群里一个大佬编译好的,

里面有详细的步骤:

https://github.com/synodriver/pycurl/blob/master/special.markdown

9.pycurl 的docker版

我的docker镜像:

docker pull geekbyte1/pyantitls:v1.0docker run -it -d geekbyte1/pyantitls:v1.0

Q佬的docker file:

https://mp.weixin.qq.com/s/UZlLuzlQZrI7w82HI7zGuw

10.直接调用curl_impersonnate

就是魔改版的pycurl,用的核心的东西,直接操作终端然后调用curl_impersonnate

现在curl_impersonnate已经出windows版

能过tls检测的curl-impersonate win版,搞起来啊

11.cycletls的python版

https://github.com/Danny-Dasilva/cycletls_python

cycletls的作者已经在开发python版的cycletls了,刺不刺激

不过别高兴太早,目前还没pip install ,作者自己也说了,在积极开发中

去年12月我跟他发过邮件,想让他帮忙搞个python版出来,他到现在没回我,也不知道是不是因为我发的邮件让他想搞个python版出来,总之是有了,且快了

结语

这次应该算是够完整了吧,如果你还遇到问题,也乐意交流的

工作避坑&内推(仅成都)、技术交流、商务合作、报课优惠、技术交流群

扫码或者搜ID:geekbyte

标签: 安全 爬虫 python

本文转载自: https://blog.csdn.net/Y_morph/article/details/129488724
版权归原作者 I am geekbyte 所有, 如有侵权,请联系我们删除。

“tls指纹之到底怎么判断是否有tls、到底怎么对抗tls”的评论:

还没有评论