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

Chrome Driver中Selenium无法连接住宅代理的问题求助

解决Selenium使用住宅代理的Chrome/Firefox报错问题

Chrome 报错 ERR_NO_SUPPORTED_PROXIES 的解决方法

Chrome 不支持直接在 --proxy-server 参数中嵌入账号密码,这是触发该错误的核心原因。以下两种方案可解决问题:

方案1:通过Chrome扩展自动处理代理认证

  1. 先创建两个扩展文件:
    • manifest.json:
    {
      "version": "1.0.0",
      "manifest_version": 3,
      "name": "Proxy Auth Helper",
      "permissions": ["proxy", "webRequest", "webRequestBlocking", "<all_urls>"],
      "background": {
        "service_worker": "background.js"
      }
    }
    
    • background.js(替换为你的代理账号密码):
    const USERNAME = "你的代理用户名";
    const PASSWORD = "你的代理密码";
    
    chrome.webRequest.onAuthRequired.addListener(
      (details) => ({
        authCredentials: { username: USERNAME, password: PASSWORD }
      }),
      { urls: ["<all_urls>"] },
      ["blocking"]
    );
    
  2. 在Selenium中加载该扩展并配置代理:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

proxy_address = "你的代理地址"
proxy_port = "你的代理端口"

options = Options()
# 仅设置代理地址端口,不带账号密码
options.add_argument(f'--proxy-server=http://{proxy_address}:{proxy_port}')
# 加载扩展(传入扩展文件夹路径,需将上述两个文件放在同一文件夹)
options.add_extension('./proxy_auth_extension')

driver = webdriver.Chrome(options=options)
driver.get('https://idk.me')
print(driver.page_source)
driver.quit()

方案2:利用Chrome DevTools协议配置代理

通过CDP直接注入代理认证信息:

import base64
from selenium import webdriver

proxy_address = "你的代理地址"
proxy_port = "你的代理端口"
proxy_username = "你的代理用户名"
proxy_password = "你的代理密码"

driver = webdriver.Chrome()
# 编码账号密码
auth_str = base64.b64encode(f"{proxy_username}:{proxy_password}".encode()).decode()
# 通过CDP设置代理
driver.execute_cdp_cmd('Network.setProxy', {
    'proxyType': 'manual',
    'httpProxy': f'{proxy_address}:{proxy_port}',
    'httpsProxy': f'{proxy_address}:{proxy_port}',
    'proxyAuthorization': f'Basic {auth_str}'
})
driver.execute_cdp_cmd('Network.enable', {})

driver.get('https://idk.me')
print(driver.page_source)
driver.quit()

Firefox 代理认证窗口持续弹出的解决方法

Firefox不支持直接在代理URL中嵌入账号密码,需通过配置Firefox Profile来自动处理认证:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile

proxy_address = "你的代理地址"
proxy_port = "你的代理端口"
proxy_username = "你的代理用户名"
proxy_password = "你的代理密码"

profile = FirefoxProfile()
# 启用手动代理
profile.set_preference("network.proxy.type", 1)
# 设置HTTP/HTTPS代理
profile.set_preference("network.proxy.http", proxy_address)
profile.set_preference("network.proxy.http_port", int(proxy_port))
profile.set_preference("network.proxy.ssl", proxy_address)
profile.set_preference("network.proxy.ssl_port", int(proxy_port))
# 配置代理账号密码
profile.set_preference("network.proxy.socks_username", proxy_username)
profile.set_preference("network.proxy.socks_password", proxy_password)
# 禁用认证弹窗
profile.set_preference("network.automatic-ntlm-auth.trusted-uris", proxy_address)
profile.set_preference("network.negotiate-auth.trusted-uris", proxy_address)

options = Options()
options.profile = profile

driver = webdriver.Firefox(options=options)
driver.get('https://idk.me')
print(driver.page_source)
driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:22:43