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

如何通过Selenium为命令行启动的Chrome实例配置带认证的代理

解决连接已启动Chrome实例后的代理认证问题

方案一:预加载代理扩展到Chrome用户数据目录

连接已启动的Chrome实例时,Selenium的add_extension无法生效,需提前将代理认证扩展安装到指定的用户数据目录C:\selenum\ChromeProfile中:

  1. 创建代理扩展所需文件:

    • manifest.json:
      {
          "version": "1.0.0",
          "manifest_version": 3,
          "name": "Proxy Auth Extension",
          "permissions": ["proxy", "storage", "tabs", "activeTab"],
          "background": {
              "service_worker": "background.js"
          },
          "minimum_chrome_version": "100.0.0.0"
      }
      
    • background.js(替换为你的代理信息):
      const proxyConfig = {
          mode: "fixed_servers",
          rules: {
              singleProxy: {
                  scheme: "http",
                  host: "proxyhost",
                  port: parseInt("port")
              },
              bypassList: ["localhost"]
          }
      };
      
      chrome.proxy.settings.set({value: proxyConfig, scope: "regular"}, function() {});
      
      chrome.webRequest.onAuthRequired.addListener(
          function(details) {
              return {
                  authCredentials: {
                      username: "username",
                      password: "password"
                  }
              };
          },
          {urls: ["<all_urls>"]},
          ["blocking"]
      );
      
  2. 打包并安装扩展:

    • 将上述两个文件放入同一文件夹,打包为ZIP(如proxy_auth.zip)。
    • 用指定用户目录启动Chrome:google-chrome --user-data-dir="C:\selenum\ChromeProfile"。
    • 打开chrome://extensions/,开启开发者模式,点击「加载已解压的扩展程序」,选择存放文件的文件夹完成安装。
  3. 启动带远程调试的Chrome:

    google-chrome --remote-debugging-port=9222 --user-data-dir="C:\selenum\ChromeProfile"
    

    此时Chrome已自带代理配置,Selenium连接后代理自动生效。

方案二:通过DevTools协议动态设置代理

连接已启动的Chrome实例后,使用Selenium调用Chrome DevTools Protocol(CDP)动态配置代理及认证:

import base64
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(options=options)

# 配置代理服务器
proxy_settings = {
    "proxy": {
        "server": "http://proxyhost:port",
        "bypassList": ["localhost"]
    }
}
driver.execute_cdp_cmd("Network.setProxy", proxy_settings)

# 开启Network模块并设置代理认证头
driver.execute_cdp_cmd("Network.enable", {})
auth_str = base64.b64encode(b"username:password").decode("utf-8")
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {
    "headers": {"Proxy-Authorization": f"Basic {auth_str}"}
})

注意:需确保在发送任何网络请求前完成上述配置,部分网站可能需要额外适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 00:42:45