美文网首页
过5s盾(cloudflare)的各种方案

过5s盾(cloudflare)的各种方案

作者: sexy_cyber | 来源:发表于2024-02-19 18:16 被阅读0次
    • 1、cloudscraper 失败
     pip install cloudscraper           
    
    • 2、tls_client 失败
     pip install tls-client                
    
    • 3、 undetected-chromedriver 失败
     pip install undetected-chromedriver   
    
    • 4、cfscrape 失败
    pip3 install cfscrape
    
    • 5、curl_cffi 失败
    pip install curl_cffi
    
    • 6、远程调用

    通过我构建的镜像,远程调用来获取cookies + headers,携带cooKies + headers发起get请求,即可

    • 6.1、部署镜像到服务器:

    最好对容器定期重启,容器运行时间长 有效性会降低

    # --port 86 暴露在容器外的端口号 --workers 20 并发数
    docker run -d --restart always --network host --name cf-server uhub.service.ucloud.cn/drakespider/spider:cfserver0.29.0diy \
    --host 0.0.0.0 --port 86 --workers 20
    
    • 6.2、确保端口可被访问,如果外域调用,需开放端口并使用公网地址
    • 6.3、对容器拉起来的web server 发起 POST请求,来获取cookies + headers
        def parse_proxy(self, proxy):
            """
            对代理格式化
            proxy: http://username:password@domain:port
            """
            if "@" in proxy:
                proxy_regex = re.match("(.+)://(.+):(.+)@(.+)", proxy)
                server = f"{proxy_regex.group(1)}://{proxy_regex.group(4)}"
    
                proxy_params = {
                    "server": server,
                    "username": proxy_regex.group(2),
                    "password": proxy_regex.group(3),
                }
            else:
                proxy_params = {"server": proxy}
    
            return proxy_params
    def get_rpc_result(self):
        resp = requests.post(
            "http://xxx:86", # rpc调用地址
            json={
                "proxy": browser_proxy,   # 支持代理方式
                "timeout": 30 * 60,      # 放弃的时间
                "url": "https://www.cloudflare.com" # 要绕过的网站
            },
            timeout=20 * 60
        )
    
    • 6.4、解析rpc响应结果,抽取出UA + cookies
    res = self.get_rpc_result()
    if res.get('success'):
        if res['cookies']:
            # {"__cf_bm": "u2nqgGBpHxg.jKrOidGVkbXqdUNor0B4VDts1dz1h4U-1708417453-1.0-AdywEwPEs3K4XFxncRtYrfP23b7nqF3ZM13fvhrgtSRYyA77aoFITGloNKgLNamkyEYc5tYaAeGH13+32YJ1a/Y=", "cf_clearance": "99EXeMZwYzCaJweUD1JxvVhSvBxqL0e60I4k_4BYJ1I-1708417456-1.0-AXnahzLUhbQgnO5LsIDomFDqRibU4icmN6/b2mLkrItzLCgEr0WpgccbOyeP2uJMWr1xuwI7MKiChMYhN/dXG2k="}
            cookies = res['cookies']
            # Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36
            useragent = res['user_agent']
    
    • 6.5、使用 IP + UA + cookies 发起请求(三者强校验,必须一致)

    用容器生成UA、cookies、和发起rpc用的代理IP,去模拟请求

    def mock_req(proxy, cookies, useragent, url):
        proxies = {
            'http': proxy,
            'https': proxy
        }
        headers = {
            "Referer": "https://www.cloudflare.com", # 目标网站的地址
            'User-Agent': useragent
        }
        # 发起get请求 url:目标接口的地址
        res = requests.get(url, headers=headers, proxies=proxies, cookies=cookies)
    
    

    相关文章

      网友评论

          本文标题:过5s盾(cloudflare)的各种方案

          本文链接:https://www.haomeiwen.com/subject/mbpvadtx.html