自定义代理扩展在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视为合法扩展,不会被自动禁用。chrome_options.add_extension("/path/to/signed-proxy-extension.crx")
方案3:使用代理自动配置(PAC)文件
借助Chrome原生的PAC机制配置代理,无需依赖扩展:
- 创建
proxy.pac文件,写入代理规则:function FindProxyForURL(url, host) { // 替换为你的代理地址和端口 return "PROXY proxy-host:proxy-port; DIRECT"; } - 在ChromeOptions中指定PAC文件路径:
如果代理需要认证,PAC文件本身无法直接嵌入凭证,可结合CDP的认证头注入使用。chrome_options.add_argument('--proxy-pac-url=file:///absolute/path/to/proxy.pac')
内容的提问来源于stack exchange,提问作者Mike K
相关产品推荐
相关产品推荐

