经常从事爬虫工作的同学们,一定对CloudFlare反爬虫的五秒盾有所了解。当你使用非正常浏览器访问某个网站时,会出现以下提示信息:
Checking your browser before accessing xxx.
This process is automatic. Your browser will redirect to your requested content shortly.
Please allow up to 5 seconds…
即使你使用完整的Headers和代理IP,它仍能发现你的爬虫行为。
直接查看网页的源代码,可以发现新闻标题和正文都在源代码中,这表明新闻的标题和正文是由后端渲染的,而不是异步加载。
如果我们使用requests库,并带上完整的请求头来访问该网站,网站将识别出爬虫行为,并成功阻止爬虫请求。很多同学在这种情况下束手无策。因为爬虫在第一次请求时就被阻止了,所以问题不是IP检测或访问频率,即使使用代理IP也无济于事。既然即使带上完整的请求头也会被发现,那么有什么方法可以绕过这种检测呢?
实际上,绕过这个五秒盾非常简单,只需使用一个名为CloudScraper的第三方库。我们可以使用pip进行安装:
python3 -m pip install cloudscraper
安装完成后,只需三行代码就能绕过CloudFlare验证的五秒盾:
import cloudscraper
scraper = cloudscraper.create_scraper()
resp = scraper.get('目标网站').text
成功破解盾牌。
CloudScraper非常强大,它能够突破CloudFlare免费版各个版本的五秒盾。而且,它的接口与requests库保持一致。你只需将原先使用requests的代码中的requests.xxx
替换为scraper.xxx
即可。
当然,还有更加简单的方法,那就是使用穿云API来绕过CloudFlare五秒盾。
使用穿云API,您可以轻松地绕过Cloudflare的机器人验证,即使您需要发送10万个请求,也不必担心被识别为抓取者。
一个穿云API即可突破所有反Anti-bot机器人检查,轻松绕过Cloudflare、CAPTCHA验证,WAF,CC防护,并提供了HTTP API和Proxy,包括接口地址、请求参数、返回处理;以及设置Referer,浏览器UA和headless状态等各浏览器指纹设备特征。