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

Undetected Chromedriver突遭Cloudflare验证拦截,爬虫全部失效求助

问题判断与解决方案

首先可以通过换IP测试区分问题原因:如果切换到新IP(比如手机热点)后旧爬虫能正常通过验证,说明你的原有IP被Cloudflare封禁;如果依旧陷入无限验证循环,大概率是Cloudflare更新了反爬检测机制。

以下是针对性解决方法:

一、针对Cloudflare检测机制的优化

  1. 启用核心反自动化配置
    你注释掉的--disable-blink-features=AutomationControlled必须开启,同时补充更多反检测参数,进一步降低被识别的概率:

    options.add_argument('--disable-blink-features=AutomationControlled')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--disable-gpu')
    options.add_experimental_option("excludeSwitches", ["enable-automation"])
    options.add_experimental_option('useAutomationExtension', False)
    
  2. 修复无头模式参数
    代码里的--head是错误参数,Chrome 112+版本推荐使用更接近真实浏览器的新无头模式:

    options.add_argument('--headless=new')
    

    若使用旧版Chrome,替换为--headless=chrome。

  3. 添加真实用户代理
    手动设置当前Chrome稳定版的User-Agent,避免默认UA被识别:

    options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36')
    
  4. 模拟真实用户行为
    Cloudflare会检测页面加载后的静态等待行为,添加随机延迟和简单交互:

    import time
    import random
    
    driver.get("https://mangasehri.com/manga/?m_orderby=alphabet")
    # 随机延迟2-5秒
    time.sleep(random.uniform(2,5))
    # 模拟滚动页面
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(random.uniform(1,3))
    
  5. 更新undetected-chromedriver
    该库会跟进Cloudflare的检测规则更新,确保使用最新版本:

    pip install --upgrade undetected-chromedriver
    

二、针对IP封禁的处理

如果换IP后恢复正常,说明原有IP被拉黑,可通过以下方式解决:

  • 使用高匿代理IP池,每次请求切换不同IP;
  • 严格控制爬取频率,单IP下每个请求间隔3-10秒;
  • 若为家庭动态IP,重启路由器即可更换IP。

额外注意事项

  • 避免同时运行多个爬虫实例,减少短时间内的IP请求量;
  • 检查爬虫是否存在过快跳转、重复请求同一URL等异常行为,这类操作会快速触发Cloudflare防护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:55:31