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

请求触发Cloudflare安全验证:Python爬虫脚本被拦截问题

你的爬虫被Cloudflare拦截的可能原因(他人同代码却正常)
  • IP地址风险标记:你的IP可能被Cloudflare归为高风险类别——比如属于数据中心IP池、近期有过异常请求记录,或是该IP曾被其他爬虫滥用。而其他用户的IP大概率是普通家用IP,没有触发这类拦截规则。如果用了代理,换个代理IP试试。

  • 请求头模拟不到位:你的请求头可能缺失关键字段(比如Accept-Language、Accept-Encoding),或是User-Agent过于陈旧/特殊,和真实浏览器的请求特征差异太大。别人的代码可能默认带了更贴近真实浏览器的头信息,或者他们的环境自动补充了这些细节。可以直接复制浏览器访问时的完整请求头来模拟,示例:

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate, br',
        'Connection': 'keep-alive',
        'Upgrade-Insecure-Requests': '1'
    }
    
  • Cloudflare验证规则更新:Cloudflare的反爬规则会实时调整,昨天你的请求刚好符合放行条件,今天可能新增了JS指纹检测、会话验证等项。cloudscraper的绕过逻辑可能没跟上最新的验证机制,试试用undetected-chromedriver这类工具,它会隐藏自动化特征,模拟真实浏览器的行为流程。

  • 会话Cookie缺失:其他用户的代码可能保留了之前通过验证的会话Cookie,后续请求直接复用就能正常访问;而你的请求是全新会话,需要重新完成Cloudflare的验证。可以用requests.Session()维持会话,或者手动从浏览器获取验证后的Cookie导入到爬虫中。

  • 请求频率触发限流:你测试时的请求频率可能过高,哪怕单次请求看起来正常,短时间内多次请求也会被判定为爬虫行为。其他用户可能请求间隔更随机、频率更低,没触发速率限制。给请求加上随机延迟,比如time.sleep(random.uniform(2, 5))。

内容的提问来源于stack exchange,提问作者moosepowa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 10:55:15