Lazy loaded image
Cloudflare五秒盾爬虫破解方案
字数 2964阅读时长 8 分钟
2025-2-9
2025-3-21
type
status
date
slug
summary
tags
category
icon
password
😀
一、背景介绍
在开发Rate Your Music网站爬虫时,发现常规的爬虫手段难以采集数据,最主要的原因是该网站接入了Cloudflare防护机制,可以将常规爬虫全部拦截下来。为了保障Rate Your Music网站的爬虫数据能最终交付,因此需要对Cloudflare防护机制及破解方案进行研究。
二、Cloudflare五秒盾是什么
Cloudflare五秒盾(也称为5秒盾或托管质询)是Cloudflare提供的一种安全机制,主要用于防御恶意爬虫和机器人对网站的攻击。它通过检测用户的请求流量和行为模式来识别并阻止恶意访问。当一个用户访问网站时,五秒盾会评估其行为模式、IP地址、用户代理等信息,以确定其是否为正常用户。
五秒盾的工作原理包括使用JavaScript代码执行一系列检测,判断请求是否来自真实用户。如果JavaScript代码在5秒内运行完成,说明这个请求来自真实用户,否则会被拦截。此外,五秒盾还可能通过IP封禁、人机验证、JavaScript挑战等方式来进一步识别和拦截爬虫。
三、如何判断网站有Cloudflare五秒盾反爬
3.1 常见特征一
响应头里面的Server是cloudflare
notion image
3.2 常见特征二
浏览器无痕模式下访问网站,首先会让你进行真人验证
notion image
3.3 常见特征三
我们通过requests请求后,响应状态码是403,返回的Html页面中会出现 Just a moment...
notion image
四、Cloudflare五秒盾破解方案
4.1 方案一:模拟真实浏览器JA3指纹
看到网上很多文章提到可以通过cloudscraper库绕过一些免费版的Cloudflare五秒盾。但实际使用上效果并不理想,依然会被Cloudflare拦截。原因是免费版Cloudflare也已经可以通过JA3指纹来识别恶意请求了,而cloudscraper库的JA3指纹很明显能够被识别。
JA3指纹是一种从SSL/TLS Client Hello数据包中提取字段并生成指纹用以识别特定客户端的技术,它于它不会随着客户端更换IP或者User-Agent而改变。JA3指纹从一开始就说明客户端应用程序是否存在恶意。
JA3 在SSL/TLS握手期间解析客户端发送的Client Hello数据包,收集以下字段的十进制字节值:TLS Version、Accepted Ciphers、List of Extensions、Elliptic Curves和Elliptic Curve Formats。然后,它将这些值串联起来,使用“,”来分隔各个字段,同时使用“-”来分隔各个字段中的值。最后,计算这些字符串的md5哈希值,即得到易于使用和共享的长度为32字符的指纹。
notion image
简单来说,Cloudflare通过JA3指纹来识别恶意请求,可轻易拦截常规的爬虫程序,原因就是这些爬虫程序所依赖的网络客户端的JA3指纹和真实浏览器的JA3指纹不同。所以需要一个可以完美模拟真实浏览器JA3指纹的工具进行数据爬取。
为了完美模拟浏览器JA3指纹,国外大佬给curl工具打了一些patch,把相应组件全部都换成与浏览器相同的组件,连版本都保持一致,这样就得到了和浏览器完全一样的JA3指纹,这个库是curl-impersonate,相应的python工具为curl_cffi。
如下图所示,分别使用scraper、requests、curl_cffi工具请求https://toppsta.com网站,只有curl_cffi能够正常返回数据,scraper、requests均被Cloudflare拦截。
notion image
4.2 方案二:搭建FlareSolverr代理服务
对于付费版的Cloudflare五秒盾,curl_cffi也爬不到数据,毕竟curl_cffi无法真正的模拟浏览器处理Cloudflare的JavaScript挑战,更不用说接下来的人机验证了。
如下图所示,分别使用scraper、requests、curl_cffi工具请求https://rateyourmusic.com/网站,全部被Cloudflare拦截。
notion image
现阶段,对于付费版的Cloudflare五秒盾,有没有什么办法绕过呢?下面介绍一个方案,通过Docker运行一个Flaresolverr代理服务的容器就可以了。启动命令如下
使用示例如下:
为什么FlareSolverr能够绕过付费版的CloudFlare五秒盾?通过阅读项目源代码,总结了一下FlareSolverr这个项目的亮点,主要体现在以下几个方面:
1、动态解析和执行JavaScript:FlareSolverr能够解析和执行Cloudflare的JS代码,这样就可以模拟浏览器行为并执行页面中的JavaScript,以获取真实的网页内容。
2、自动化处理验证页面:它在容器内部运行一个Webdriver的服务,用于自动处理Cloudflare验证页面。这种自动化处理方式相对于手动模拟浏览器操作更加高效和方便,减少了人工干预的需要。
3、缓存和复用验证结果:FlareSolverr具有缓存机制,可以将已经解析和验证过的网站结果缓存起来,并在后续的请求中进行复用。这样可以减少重复的验证过程,提高访问速度和效率。
4、集成度和依赖性:FlareSolverr是一个专门为解决Cloudflare绕过而设计的工具,它可以作为独立的服务部署,对外提供API接口。
5、环境隔离和资源消耗:FlareSolverr使用了容器化技术,在独立的环境中执行验证操作,避免了对本地环境的影响。
总体而言的话,FlareSolverr在处理 Cloudflare绕过上面提供了一种更加集成化、自动化和高效的解决方案,相对于手动模拟浏览器操作或使用Selenium等方式,可以节省开发和维护的成本,并提供更好的性能和可靠性。
4.3 方案三:DrissionPage网页自动化技术
对于付费版的Cloudflare五秒盾提供另一个解决方案,即使用DrissionPage网页自动化技术。DrissionPage是一个基于python的网页自动化工具。它既能控制浏览器,也能收发数据包,还能把两者合而为一。DrissionPage具有较强的反检测机制,能够在不需要进行任何反检测操作的情况下,绕过国内外绝大多数网站的自动化检测。这些特点使得DrissionPage在爬虫和自动化任务中非常强大和方便。
具体示例如下:
1、 安装DrissionPage库:
2、使用DrissionPage绕过Cloudflare五秒盾(本次爬取Rate Your Music网站的核心代码):
本次爬取Rate Your Music网站数据采用该方案,主要是因为Rate Your Music网站对爬虫请求频率及次数控制相当严格,无法像常规爬虫那样大规模的、高并发的采集数据。而DrissionPage提供了更为灵活的、能够绕过Cloudflare检测机制的自动化技术,更能精确的控制爬取行为,以免因为爬虫行为不当而造成封锁拦截。
4.4 方案四:我们只需要使用一个 Python 第三方库 cloudscraper:
改一下之前的测试代码:
五、总结
最后对比下curl_cffi、FlareSolverr和DrissionPage、cloudscraper这四种绕过Cloudflare五秒盾的工具的优劣势:
5.1 curl_cffi
优势:
1、简单易用:curl_cffi是基于CURL库的Python绑定,语法简单,易于学习和使用。
2、伪装能力强:它能够生成与浏览器一致的指纹,从而更好地模拟用户行为
劣势:
1、兼容性问题:有证据表明curl_cffi在某些情况下可能会失败,无法有效绕过付费版的Cloudflare五秒盾。
2、更新频率低:开源工具如curl_cffi可能因为Cloudflare的频繁更新而逐渐失效。
5.2 FlareSolverr
优势:
1、环境隔离:FlareSolverr使用了容器化技术,在独立的环境中执行验证操作,避免了对本地环境的影响。
2、高效且内存友好:FlareSolverr利用Selenium和ChromeDriver,能够在较低的资源消耗下高效绕过Cloudflare的防护.
3、自动化程度高:FlareSolverr是一个专门为解决Cloudflare绕过而设计的工具,FlareSolverr可以自动处理Cloudflare的防护机制,用户只需输入目标网站的URL即可。
劣势:
1、依赖于开源社区:作为一个开源项目,FlareSolverr可能会因为Cloudflare的更新而变得过时。
2、维护成本高:需要定期检查和更新以应对Cloudflare的新策略。
5.3 DrissionPage
优势
1、语法简洁,使用方便:DrissionPage的语法简洁,易于上手,适合初学者使用。
2、强大的反检测机制:拥有较强的反检测机制,能够有效绕过国内外绝大多数网站的自动化检测。目前不需要做任何反检测的操作就可以绕过大多数网站的自动化检测,简化了操作流程。
劣势:
1、开发成本大:虽然在绕过自动化检测方面表现出色,但需要编写大量的爬虫程序,设定爬虫策略。
2、缺乏广泛支持:相对于其他工具,DrissionPage的知名度和支持度较低,可能会影响其稳定性和可靠性。
上一篇
Python 网络爬虫 cfscrape:最强悍的反爬绕过,让采集更稳定!
下一篇
体验 YouTube HLS 直播新姿势