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

Selenium访问Cloudflare站点受阻,undetected_chromedriver运行报错如何解决

问题根因

这个AttributeError: 'ChromeOptions' object has no attribute 'add'报错完全是导入路径和安装的undetected-chromedriver版本不匹配导致的:

  • 你代码里写的import undetected_chromedriver.v2 as uc是2.x版本时代的旧导入路径,如果你本地装的是3.x以上的新版本,这个v2路径下的ChromeOptions只是个残缺的兼容壳,根本没继承Selenium Options类的完整方法,自然找不到add_argument相关的属性(报错里提到的add属性就是调用add_argument时触发的内部查找错误)。
  • 你之前碰到的RuntimeError、卡Cloudflare验证的问题,大半也和版本不兼容、导入方式错误有关系。
解决步骤

按顺序操作即可:

  1. 先把当前安装的存在兼容问题的undetected-chromedriver卸载干净,终端执行命令:
    pip uninstall -y undetected-chromedriver
  2. 安装兼容性最好的稳定版,3.5.5版本对Selenium 4.x、新版Chrome的适配最稳定,反Cloudflare检测的逻辑也没有已知问题,执行命令:
    pip install undetected-chromedriver==3.5.5
  3. 删除代码里的旧v2导入路径,直接从主模块导入uc即可,修正后的可运行代码如下:
import undetected_chromedriver as uc
import time

options = uc.ChromeOptions()
# 注意代理要替换为可用的高匿代理,免费公网代理大概率连接失败或者被Cloudflare标记拦截
proxy_addr = "24.172.82.94:53281"
options.add_argument(f'--proxy-server=http://{proxy_addr}')

# 初始化时不需要手动指定chromedriver路径,uc会自动匹配本地Chrome版本
# version_main填写你本地Chrome的大版本号即可,比如安装的Chrome 124就填124,避免自动匹配版本失败
driver = uc.Chrome(
    options=options,
    version_main=124
)

driver.get("https://ifconfig.me/")
time.sleep(10)
driver.quit()
避坑提示
  • 不要手动添加--disable-blink-features=AutomationControlled、--headless=new这类参数,uc已经内置了全套反检测逻辑,乱加参数反而会暴露自动化特征被Cloudflare拦截,默认有头模式的绕过成功率最高。
  • 如果使用代理一定要选高匿住宅代理,免费透明代理本身就在Cloudflare的黑名单里,更换任何脚本都无法通过验证。
  • 后续Chrome大版本更新后如果启动报错,只需要把version_main参数修改为当前Chrome的大版本号即可,不需要手动下载对应版本的chromedriver。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:57:24