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

Selenium Python测试代理设置失效:如何使WebDriver通过代理正常工作?

解决Selenium Chrome代理超时问题

你的问题核心在于Chrome已不再支持直接在--proxy-server参数中嵌入用户名和密码,这也是CURL可用但Selenium脚本超时的关键原因。以下是几种可行的解决方法:

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

创建一个轻量Chrome扩展,自动处理代理的用户名密码认证:

  1. 在本地新建文件夹(比如proxy_auth_extension),放入两个文件:

    • manifest.json:
      {
        "version": "1.0.0",
        "manifest_version": 3,
        "name": "Proxy Auth Helper",
        "permissions": ["proxy", "storage", "webRequest", "webRequestBlocking", "<all_urls>"],
        "background": {
          "service_worker": "background.js"
        },
        "minimum_chrome_version": "100.0.0.0"
      }
      
    • background.js(替换占位符为你的代理信息):
      const PROXY_HOST = "{MYIP}";
      const PROXY_PORT = 11200;
      const PROXY_USERNAME = "{UNAME}";
      const PROXY_PASSWORD = "{PW}";
      
      // 设置代理服务器
      chrome.proxy.settings.set({
        value: {
          mode: "fixed_servers",
          rules: {
            singleProxy: {
              scheme: "http",
              host: PROXY_HOST,
              port: PROXY_PORT
            },
            bypassList: ["localhost", "127.0.0.1"]
          }
        },
        scope: "regular"
      }, () => {});
      
      // 自动注入认证凭据
      chrome.webRequest.onAuthRequired.addListener(
        (details, callback) => {
          callback({
            authCredentials: {
              username: PROXY_USERNAME,
              password: PROXY_PASSWORD
            }
          });
        },
        { urls: ["<all_urls>"] },
        ["blocking"]
      );
      
  2. 修改Selenium脚本加载该扩展:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    chrome_options = webdriver.ChromeOptions()
    # 加载代理认证扩展(替换为你的文件夹路径)
    chrome_options.add_argument(r'--load-extension=./proxy_auth_extension')
    chrome_options.add_argument("ignore-certificate-errors")
    
    chrome = webdriver.Chrome(options=chrome_options)
    chrome.get("https://www.ipchicken.com/")
    
    wait = WebDriverWait(chrome, 30)
    wait.until(EC.presence_of_element_located((By.TAG_NAME, "table")))
    
    print(chrome.page_source)
    chrome.quit()
    

方法2:验证代理的HTTPS支持

确保你的代理支持HTTPS流量转发,因为你访问的是HTTPS站点。用CURL测试:

curl -x http://{UNAME}:{PW}@{MYIP}:11200 https://www.ipchicken.com/

如果CURL返回正常,说明代理支持HTTPS;若失败,需调整代理配置或更换支持HTTPS的代理。

方法3:匹配Chrome与ChromeDriver版本

Chrome和ChromeDriver版本不匹配可能导致代理逻辑异常,用webdriver-manager自动同步版本:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(r'--load-extension=./proxy_auth_extension')

chrome = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)

额外排查点

  • 部分代理会拦截非标准UA,可手动添加浏览器标识:
    chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')
    
  • 检查本地防火墙、杀毒软件是否拦截Chrome的代理连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:17:03