五秒盾对抗系列
CloudFlare 五秒盾介绍
CloudFlare
js challage 业界俗称五秒盾。CloudFlare
是一个做CDN 内容分发的服务商, 被人戏称为网络菩萨,其名下有非常著名产品 VPN软件Warp+
, 提供DNS查询1.1.1.1
,还有常被用来加速的CloudFlare Worker
等等等等。
开启CloudFlare 免费防护
原理
网站开启CloudFlare
防护之前,会将DNS 服务托管到CloudFlare
的DNS服务器,在输入网址的时候 会返回一个带js 的网站,在浏览器执行完js 之后,会在本地生成cookie,然后刷新网页,带着cookie 访问网站,cf 检验通过之后,才会返回被防护的网站内容。
CloudFlare特征
免费版本
1 |
|
这个在体验上无感的和在浏览器打开瑞数保护的网站一样
付费版本
需要点击input
输入框,这个对于纯代码实现的爬虫来说,做出这样的交互有点困难。
路由
使用cloudflare 防护的网站一般会有一个/cdn-cgi/trace 的路由
比如我访问 https://nowsecure.nl/cdn-cgi/trace
会有响应如下
fl
:Cloudflare 服务器实例h
:网站域名ip
:当前访问者的IP地址ts
:时间戳,格式为“秒.毫秒”(bash中生成同款时间戳的命令为date +%s.%3N
)visit_scheme
:访问者使用的协议usg
:访问者使用的UserAgent信息colo
:被访问的Cloudflare数据中心的所在位置,此处是由IANA定义的机场代码sliver
:请求是否被拆分成多个部分进行处理或传输http
:访问者使用的HTTP协议版本loc
:访问者的所在地(国家)tls
:访问者与服务器建立连接使用的TLS版本sni
:SNI加密或明文传输warp
:访问者是否使用了Warp服务gateway
:访问者是否使用了Cloudflare Gateway服务rbi
:访问者是否使用了Cloudflares Remote Browser Isolation(RBI)服务kex
:TLS密钥交换过程中使用的交换方式
来源: [Lxn-Chan 的博客]https://lxnchan.cn/cloudflare-trace.html
CloudFlare 网站收集
网站 | CloudFlare 版本 |
---|---|
https://nowsecure.nl/ | 付费 |
https://lululemon.co.jp | 付费 |
https://pingcong.rock | 免费 |
https://www.amiami.jp/ | 付费 |
https://nowsecure.nl/ 作为测试网站
短时间内请求同一个ip 请求次数过多,会由原来的无感验证码转化为需要点击的验证码。
我总共抓取了96条数据,每次请求中间会睡眠2秒钟,到第97条的时候就会需要点击验证。
解决方案一览
解决方案 | 部署/使用方式 | 实现原理简介 |
---|---|---|
cloudflare-scrape | python 库 | nodejs 执行 js代码 |
cloudscraper | python 库 | 多种js 执行引擎可选、三方验证码解决方案接口 |
curl-cffi | python 库 | 使用curl-impersonate 的binding 模拟浏览器的指纹 |
undetected-chromedriver | python 库 | 使用脚本抹除chromedriver 的特征,防止检测 |
CDP 协议 | 调试协议,无webdriver 特征 | |
warp+ 网络 | 接入warp 网络 | 使用warp 内部流量,/cdn-cgi/trace 中会 warp=on |
直接访问网站ip | 直接使用 | 使用网络空间测绘引擎、搜索扫描到的ip和证书,如果能找到 |
基于CDP 调试协议的方案
库名 | 部署/使用方式 | 优势 |
---|---|---|
flaresolverr | docker部署,API 调用,其他语言调用 | |
browserless | docker部署,API 调用 | |
ichrome | ||
pychrome | ||
DP | 可以使用session 或者使用 | 国人开发 有很好的支持 可以加QQ群 |
其他方案
1 |
|
使用 flaresolverr
python 脚本
1 |
|
添加granfana 监控
1 |
|
五秒盾对抗系列
https://kingjem.github.io/2024/10/14/五秒盾对抗/