You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python CloudScraper绕Cloudflare:本地正常虚拟主机报403的原因

问题原因分析及解决建议

以下是导致虚拟主机上出现403错误的可能原因,结合你的代码逐一说明:

  • 代理配置不完整
    你的代码仅配置了http协议的代理,但如果目标网站是HTTPS协议,Cloudflare会检测到请求未使用HTTPS代理的异常。需要同时配置https代理,确保请求全程通过代理转发:

    proxies={
        "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}",
        "https": f"http://{proxy_username}:{proxy_password}@{proxy_url}"
    }
    
  • Node.js环境版本不兼容
    CloudScraper依赖Node.js执行JS代码绕过Cloudflare验证,虚拟主机上的Node.js版本可能过低或与本地环境差异较大,导致验证逻辑执行失败。检查虚拟主机的Node.js版本,确保满足CloudScraper的最低版本要求(通常建议v14+)。

  • 重复请求的逻辑干扰了CloudScraper的自动验证流程
    你连续两次发送相同页面的GET请求,还手动传递第一次的cookies,但CloudScraper本身会自动管理会话cookies和验证流程。手动干预可能打乱Cloudflare的验证逻辑,本地环境可能因网络延迟等因素侥幸通过,但虚拟主机环境下检测更严格,直接触发403。建议删除重复请求,仅保留单次请求:

    response = scraper.get(
        url + str(number_page),
        proxies={
            "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}",
            "https": f"http://{proxy_username}:{proxy_password}@{proxy_url}"
        }
    )
    
  • 虚拟主机的环境特征被Cloudflare识别
    虚拟主机的服务器IP可能已被Cloudflare列入黑名单,或者主机的底层网络特征(如TCP指纹、TLS版本)与真实浏览器差异过大,被判定为爬虫。可以尝试更换代理IP,或者调整browser配置更贴近真实iOS Chrome的特征,比如补充mobile标识或具体的浏览器版本:

    browser={
        "browser": "chrome",
        "platform": "ios",
        "desktop": False,
        "mobile": True,
        "version": "114.0.0.0"
    }
    

内容的提问来源于stack exchange,提问作者Максим Акулов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:42:12