Bootstrap

TSL指纹

请求遇到403,查看了一些主流网站的博文,发现都是讲解ua的问题,但是很少说到TSL指纹也会导致请求遇到403。

如何解决这个问题呢 ?

首先我们需要知道TSL指纹是什么东西:

正常的应用会通过TLS/SSL对通信流量进行加密,以确保数据安全传输; 恶意软件也会对其通信流量进行TLS/SSL加密,以此来躲避检测。

为了建立TLS/SSL连接,客户端与服务端之间会先完成TCP三次握手,建立可靠的通信; 然后进入TLS/SSL握手阶段,客户端会发送 Client Hello 请求数据包,如果服务端同意建立TLS/SSL连接,则会根据请求数据包和服务端配置生成并发送 Server Hello响应数据包。

快速过滤tls指纹的指令:

tls.handshake.version== 0x0303

 我们主要看的就是Client Hello这个包的详细信息。

然后根据这个包的相关信息去openssl网站对应找到对应的信息即可。

/docs/man1.1.1/man1/openssl-ciphers.htmlhttps://www.openssl.org/docs/man1.1.1/man1/openssl-ciphers.html

如果觉得通过wireshark的方式比较麻烦,也可以通过sslscan的方式去查看。

sslscan https://xxx | grep Accept

最终将映射出来的信息通过:进行拼接。

在python请求的时候,添加上这一串信息即可。

import requests


 

import requests

requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA:AES256-SHA'

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67'}

s = requests.Session()


s.mount('https://ja3er.com', DESAdapter()) 
resp = s.get('https://ja3er.com/json').json() 
print(resp)

;