1. 前言
在之前的项目中,发现一些网站使用不同的客户端会得到不同的结果,比如使用浏览器访问正常没问题,但使用python写脚本或者curl请求就会被拦截,当时也尝试数据包1:1还原,但还是不能解决。
测试指纹拦截站点:ascii2d.net
最近拜读了师傅的文章《绕过 Cloudflare 指纹护盾》,很有感触,感觉之前遇到的应该就是这个问题;之前写爬虫遇到类似这种指纹护盾(反爬机制),也都是尝试通过selenium模拟浏览器来绕过的,这一次也算是见了世面,学到了一些新的东西。
本次内容主要分为2部分,1是绕过TLS指纹识别,2是绕过Akamai指纹(HTTP/2指纹)识别
2. TLS指纹相关
2.1. 什么是TLS指纹
TLS指纹是一种用于识别和验证TLS(传输层安全)通信的技术。
TLS指纹可以通过检查TLS握手过程中使用的密码套件、协议版本和加密算法等信息来确定TLS通信的特征。由于每个TLS实现使用的密码套件、协议版本和加密算法不同,因此可以通过比较TLS指纹来判断通信是否来自预期的源或目标。
TLS指纹可以用于检测网络欺骗、中间人攻击、间谍活动等安全威胁,也可以用于识别和管理设备和应用程序。
TLS指纹识别原理(ja3算法):github.com/salesforce/…
2.2. 测试TLS指纹
测试一下不同客户端之间的指纹差异(ja3_hash)
深入分析的话可以用wireshark抓TLS包进行对比分析
测试网站:tls.browserleaks.com/json
- CURL v7.79.1
- CURL 7.68.0
- Chrome 112.0.5615.137(正式版本) (x86_64)
- Burp Chromium 103.0.5060.114(正式版本) (x86_64)
- Python 2.11.1
可见不同的客户端都存在区别,针对最后一个python的ja3_text做一个简单的说明
- 第一个值
771
:表示 JA3 版本,即用于生成指纹的 JA3 脚本的版本。 - 第二个值
4866-4867-4865-49196-