爬虫:绕过5秒盾Cloudflare和DDoS-GUARD

本文章仅供技术研究参考,勿做它用!
  • 5秒盾的特点

<title>Just a moment...</title>

返回的页面中不是目标数据,而是包含上面的代码:Just a moment...

或者第一次打开网页的时候:

这几个特征就是被Cloudflare保护的网站,熟称5秒盾。

  • 免费版5秒盾的绕过方法

安装cloudscraper

pip3 install cloudscraper
import cloudscraper
scraper = cloudscraper.create_scraper()
resp = scraper.get('目标网站').text

将代码中的requests 替换成scraper即可,其他和requests一样正常使用。

  • 付费版5秒盾的绕过方法

如果网站部署的是付费版的5秒盾,用上述的cloudscraper就无法绕过,会返回下面的内容

Detected a Cloudflare version 2 (aptcha challengeeature is not available in the operce (free) version

付费版本绕过方法:docker 部署  flaresolverr 。

绕盾大致过程就是使用flaresolverr来代理我们的request请求,flaresolverr启动模拟浏览器绕盾成功之后我们保存好所需的cookies等参数,后续的requests就使用这些参数直接请求目标页面即可。如果请求的时候发现又被拒绝了,就重新启动绕盾步骤。

部署flaresolverr,本文章中的docker 和 flaresolverr  部署在爬虫程序同一台机器上。

linux 指令:

docker run -d --name=flaresolverr -p 8191:8191 -e LOG_LEVEL=info --restart unless-stopped ghcr.io/flaresolverr/flaresolverr:latest

 这里的代理端口设置的是 8191

部署完毕后使用curl 指令进行测试,不是本机部署请更换localhost 为flaresolverr 机器IP

curl -L -X POST 'http://localhost:8191/v1' -H 'Content-Type: application/json' --data-raw '{"cmd": "request.get","url":"https://你的目标网站/","maxTimeout": 160000}'

 这里有个注意点就是如果部署的机器性能比较差、目标网站性能差、或者网络通路不良等情况,maxTimeout 的值要设置 的足够大(ms),不然会失败,我在实测一个网站的时候最大一次绕盾过程用了两分钟,例子代码中设置了160秒超时。

 附上绕盾用的python代码:

    def 绕过5秒盾(self,xxxx):
        print("破盾中...")
        urlServer = "http://localhost:8191/v1"
        payload = json.dumps({
            "cmd": "request.get",
            "url":'https://www.目标网站.com',
            "maxTimeout": 160000
            })
        headers = {
            'Content-Type': 'application/json'
            }

        response = requests.post(urlServer, headers=headers, data=payload)
        # print(response.status_code)
        # print(response.json()['solution']['cookies'])
        if response.status_code==200:
            userAgent = response.json()['solution']['userAgent']
            for item in response.json()['solution']['cookies']:
                self.cookies[item["name"]] = item["value"]
            self.UA = userAgent
            print("破盾成功")
            return response
        print("绕过5秒盾错误!!!")

获取到绕盾成功的cookies ,之后的请求都使用requests 携带此cookie 直接请求即可,不需要每个请求都使用绕盾的方式。

因为flaresolverr启动绕盾浏览器会占用大量机器资源。

参考内容:

https://www.163.com/dy/article/HUM0G2U505561QYO.html

https://www.5axxw.com/wiki/content/df5u4r

爬虫绕过Cloudflare的方法可以包括以下几个步骤: 1. 使用代理:Cloudflare可能会根据IP地址来判断请求的真实性。通过使用代理服务器,您可以隐藏您的真实IP地址,使Cloudflare难以识别您的请求是来自机器人还是真实用户。您可以选择使用公开的代理服务器,或者购买专业的代理服务来确保稳定和安全。 2. 改变请求头信息:Cloudflare也会检查请求的头信息来判断是否是机器人。通过修改请求头中的参数,比如User-Agent、Referer等,使其看起来更像是真实用户的请求。您可以随机生成这些参数,以增加其真实性。 3. 模拟人类行为:Cloudflare可以根据爬虫的行为模式来判断是否是机器人。为了避免被阻止,可以模拟人类的浏览行为,比如增加随机的点击、滚动和鼠标移动。这样可以使爬虫的行为更接近真实用户,减少被识别为机器人的概率。 4. 处理验证码:有些网站通过在Cloudflare的反机器人页面上显示验证码来验证用户的身份。爬虫需要能够识别并自动处理这些验证码,以继续访问受保护的页面。可以使用OCR技术或者借助第三方服务来自动识别和解决验证码。 需要注意的是,绕过Cloudflare的反机器人页面可能涉及到违反网站的服务条款和法律法规。在尝试绕过Cloudflare之前,建议您先与网站所有者或管理员进行沟通,以确保您的行为合法且符合网站的规定。同时,谨慎使用这些方法,并遵守相关法律法规,以免引起法律问题。 总结起来,爬虫绕过Cloudflare的方法包括使用代理、改变请求头信息、模拟人类行为和处理验证码等。这些方法都旨在模仿真实用户的行为,从而减少被Cloudflare识别为机器人的概率[2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值