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

在Selenium中配置代理遇ERR_NO_SUPPORTED_PROXIES错误求助

解决Selenium Chrome代理认证的ERR_NO_SUPPORTED_PROXIES问题

你遇到的问题是Chrome不支持直接在--proxy-server参数里嵌入用户名和密码,虽然curl可以这么用,但Chrome的命令行参数对这种格式的处理有限制,尤其是当用户名包含特殊字符(比如你的username-cc-DE里的-)时更容易触发这个错误。

下面是两种可行的解决办法:

方法一:用Chrome扩展自动完成代理认证

创建一个简单的Chrome扩展,在页面加载时自动注入代理认证信息:

  1. 创建扩展文件结构:

    • manifest.json
    • background.js
  2. 编写manifest.json:

{
  "manifest_version": 3,
  "name": "Proxy Auth AutoFill",
  "version": "1.0",
  "permissions": ["proxy", "tabs", "storage", "webRequest", "webRequestAuthProvider"],
  "background": {
    "service_worker": "background.js"
  },
  "host_permissions": ["<all_urls>"]
}
  1. 编写background.js:
const proxyUsername = 'username-cc-DE';
const proxyPassword = 'password';

chrome.webRequest.onAuthRequired.addListener(
  (details, callbackFn) => {
    callbackFn({
      authCredentials: {
        username: proxyUsername,
        password: proxyPassword
      }
    });
  },
  { urls: ['<all_urls>'] },
  ['blocking']
);
  1. 在Selenium中加载这个扩展:
    修改你的代码,添加加载扩展的参数:
const chromeOptions = new Options();
// 设置代理(不带用户名密码)
chromeOptions.addArguments(`--proxy-server=http://someurl:30001`);
// 加载本地扩展(替换为你的扩展文件夹路径)
chromeOptions.addArguments(`--load-extension=/path/to/your/proxy-extension-folder`);

const driver = new webdriver.Builder()
  .withCapabilities(webdriver.Capabilities.chrome())
  .setChromeOptions(chromeOptions)
  .build();
await driver.get("https://google.com");

方法二:使用Chrome DevTools Protocol (CDP) 设置代理认证

通过CDP直接向Chrome发送认证指令,这种方法不需要创建扩展:

const chromeOptions = new Options();
chromeOptions.addArguments(`--proxy-server=http://someurl:30001`);

const driver = new webdriver.Builder()
  .withCapabilities(webdriver.Capabilities.chrome())
  .setChromeOptions(chromeOptions)
  .build();

// 通过CDP设置代理认证
await driver.executeCdpCommand('Network.enable', {});
await driver.executeCdpCommand('Network.setExtraHTTPHeaders', {
  headers: {
    'Proxy-Authorization': 'Basic ' + Buffer.from('username-cc-DE:password').toString('base64')
  }
});

await driver.get("https://google.com");

注意:如果你的代理需要针对HTTPS请求认证,CDP的方法可能需要额外处理,而扩展方法的兼容性更好,适合大多数场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:55:12