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

自定义代理扩展在undetected-chromedriver中失效的解决求助

解决Chrome扩展代理认证被禁用的问题

方案1:通过Chrome DevTools协议(CDP)注入代理凭证

ChromeDriver更新后对未签名扩展的限制收紧,CDP是更稳定的替代方案,无需依赖扩展:

  • 先初始化带基础代理配置的ChromeDriver:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    import base64
    
    chrome_options = Options()
    # 替换为你的代理地址和端口
    chrome_options.add_argument('--proxy-server=http://proxy-host:proxy-port')
    
    driver = webdriver.Chrome(options=chrome_options)
    
  • 利用CDP注入代理认证头:
    # 替换为你的代理用户名和密码
    auth_str = base64.b64encode(b"username:password").decode("utf-8")
    driver.execute_cdp_cmd("Network.enable", {})
    driver.execute_cdp_cmd(
        "Network.setExtraHTTPHeaders",
        {"headers": {"Proxy-Authorization": f"Basic {auth_str}"}}
    )
    
    注意:此方法需要确保目标网站的请求会触发代理认证,部分静态资源可能需要单独处理,但多数场景下能正常生效。

方案2:打包并签名代理扩展

如果必须使用扩展方案,需要对扩展进行官方签名以绕过Chrome的限制:

  • 在Chrome开发者模式下,通过“打包扩展程序”将你的代理扩展打包为.crx文件。
  • 注册Chrome开发者账号,上传扩展并获取官方签名(需支付一次性注册费)。
  • 启动ChromeDriver时加载签名后的扩展:
    chrome_options.add_extension("/path/to/signed-proxy-extension.crx")
    
    签名后的扩展会被Chrome视为合法扩展,不会被自动禁用。

方案3:使用代理自动配置(PAC)文件

借助Chrome原生的PAC机制配置代理,无需依赖扩展:

  1. 创建proxy.pac文件,写入代理规则:
    function FindProxyForURL(url, host) {
      // 替换为你的代理地址和端口
      return "PROXY proxy-host:proxy-port; DIRECT";
    }
    
  2. 在ChromeOptions中指定PAC文件路径:
    chrome_options.add_argument('--proxy-pac-url=file:///absolute/path/to/proxy.pac')
    
    如果代理需要认证,PAC文件本身无法直接嵌入凭证,可结合CDP的认证头注入使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 13:54:59