用requests库请求某小说网站:
import requests
url = "mark一下"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81',
'Referer': 'mark一下'
}
sess = requests.Session()
resp = sess.get(url, headers=headers)
print(resp)
print(resp.text)
报错:
Just a moment...
可以看到,打印出来的resp.text中包含Just a moment...字样。
某佬告诉我,这是典型的TLS/JA3指纹,算是一种新的反爬手段。
浏览器地址栏输入https://tls.browserleaks.com/json可以查看浏览器的JA3指纹。同样,使用requests库、httpx库或者别的什么库,都可以查看通过这类库从客户端发出请求的JA3指纹。
参考:https://zhuanlan.zhihu.com/p/601474166
import requests
r=requests.get('https://tls.browserleaks.com/json')
r.json()
参考:https://baijiahao.baidu.com/s?id=1760958257477378891&wfr=spider&for=pc
浏览器指纹是指通过收集一个设备或浏览器的特定信息,以识别其唯一身份的技术。这些信息可以包括:浏览器类型、版本、语言设置、操作系统类型、屏幕分辨率、字体、插件等。JA3指纹是一种用于识别 TLS/SSL 客户端的技术。它通过分析 TLS/SSL 客户端的特定特征来识别和跟踪客户端。这些特征包括客户端支持的加密算法、协议版本、扩展字段等。通过分析这些特征,网络安全专业人员可以识别和跟踪客户端,并识别可疑的恶意软件和攻击行为。JA3 指纹是一种高效且简单易用的识别 TLS/SSL 客户端的方法,广泛用于网络安全监测和威胁情报研究等领域。
具体来说,JA3指纹是由客户端发送的ClientHello消息中的TLS版本、密码套件以及一些其他参数生成的一个32字节的哈希值。通过观察和分析网络流量中的TLS握手消息,可以提取并计算出相应的JA3指纹。不同的TLS客户端实现、配置和版本可能会生成不同的JA3指纹,因此可以将其用作识别不同客户端的一种方法。
TLS/JA3指纹可以被用于以下目的:
- 安全审核和追踪:通过分析和识别不同客户端的JA3指纹,可以对TLS连接进行安全审核和追踪,识别异常或不受信任的客户端。
- 威胁情报和恶意行为检测:将已知的恶意客户端的JA3指纹加入黑名单,并监控网络中的JA3指纹,以便检测到类似的恶意行为或攻击。
- 身份验证和防范欺骗:通过比对客户端的JA3指纹与其宣称的握手参数是否一致,可以用于检测假冒客户端、恶意代理等欺骗行为。
需要注意的是,由于JA3指纹是基于客户端发送的握手消息生成的,因此可能会受到一些因素的影响,例如中间人攻击、网络代理等。此外,随着TLS客户端实现的更新和演进,JA3指纹也可能发生变化,因此在使用和分析JA3指纹时要保持及时的更新和验证。
解决办法:
pyhttpx库import pyhttpx
url = "mark一下"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.81',
'Referer': 'mark一下'
}
sess = pyhttpx.HttpSession(browser_type='chrome', http2=True)
resp = sess.get(url, headers=headers, allow_redirects=False) # allow_redirects设置是否允许自动重定向
print(resp)
print(resp.text)
用Wireshark和Fiddler配合使用可以分析网络协议和JA3(没看大懂,回头研究)
Wireshark和Fiddler都是流行的网络分析工具,用于捕获和分析网络数据流。
Wireshark是一个免费的开源网络协议分析工具。它能够在网络上捕获流经网卡的数据包,并对这些数据包进行详细的解析和分析。Wireshark支持多种网络协议,可以帮助你分析网络流量、排查网络问题、监控网络性能等。它提供强大的过滤和搜索功能,可视化展示数据包信息,并提供各种统计和报告。
Fiddler是一款强大的Web调试代理工具,用于截取、检查和修改网络流量。当你使用Fiddler作为代理时,它会拦截应用程序发送的HTTP/HTTPS请求,并将其转发到目标服务器。同时,Fiddler也会拦截来自目标服务器的响应,并返回给应用程序。这使得你可以轻松监视和修改请求和响应,进行网络调试和分析。Fiddler提供了很多功能,如请求修改、自定义脚本、性能分析等。
虽然Wireshark和Fiddler都可以用于网络数据分析,但它们的应用场景略有不同。Wireshark主要关注网络协议的全面解析和分析,适用于对底层协议和整个网络流量进行深入研究。而Fiddler则更侧重于Web应用程序的调试和分析,它提供了更高级的功能,可以拦截、修改和监控特定的HTTP/HTTPS请求和响应。
总结来说,Wireshark和Fiddler是两个功能强大的网络分析工具,Wireshark适用于全面的网络协议分析,而Fiddler更适合于Web应用程序的调试和分析。
参考资料:
https://blog.csdn.net/Y_morph/article/details/121893114
https://blog.csdn.net/weixin_45080737/article/details/131580439