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

Java环境下Selenium配置代理无法连接站点,代理活跃但程序失效

Selenium 配置带认证代理连接超时问题解决

在Java中使用Selenium配置代理访问站点时无法连接,代理服务器处于活跃状态,但程序中无法正常工作,报错net::ERR_CONNECTION_TIMED_OUT,代码如下:

public void start(){

        String proxyAddress = "130.185.126.159";
        int proxyPort = 6774;
        String proxyUsername = "lznbghpe";
        String proxyPassword = "16z9hv6q9fhu";

        Proxy proxy = new Proxy();
        proxy.setHttpProxy(proxyAddress + ":" + proxyPort);
        proxy.setSslProxy(proxyAddress + ":" + proxyPort);

        String proxyAuth = proxyUsername + ":" + proxyPassword;
        proxy.setProxyType(Proxy.ProxyType.MANUAL);
        proxy.setHttpProxy(proxyAuth + "@" + proxyAddress + ":" + proxyPort);
        proxy.setSslProxy(proxyAuth + "@" + proxyAddress + ":" + proxyPort);

        ChromeOptions options = new ChromeOptions();
        options.setProxy(proxy);
        options.addArguments("--headless"); // Run in headless mode
        options.addArguments("start-maximized");

        WebDriver driver = new ChromeDriver(options);

        driver.get("https://mycgsportal.com/MyCGS/CGSAccount/Login");
        System.out.println(driver.getTitle());

}

运行后报错:

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: net::ERR_CONNECTION_TIMED_OUT

问题根源

你代码里直接用用户名:密码@代理地址:端口的方式设置代理是无效的——Chrome浏览器本身不支持这种URL嵌入认证信息的方式传递账号密码,导致代理请求未携带正确的认证信息,最终触发连接超时。

解决办法

方法一:Chrome扩展自动注入代理认证(兼容性强)

通过自定义Chrome扩展实现代理认证的自动注入,适合所有版本的ChromeDriver:

  1. 创建扩展配置文件 manifest.json:
{
  "version": "1.0.0",
  "manifest_version": 3,
  "name": "Proxy Auth Helper",
  "permissions": ["proxy", "tabs", "storage", "<all_urls>"],
  "background": {
    "service_worker": "background.js"
  },
  "minimum_chrome_version": "100"
}
  1. 创建扩展逻辑文件 background.js:
// 配置代理服务器信息
const proxyConfig = {
  mode: "fixed_servers",
  rules: {
    singleProxy: {
      scheme: "http",
      host: "130.185.126.159",
      port: 6774
    },
    bypassList: ["localhost"]
  }
};

// 应用代理配置
chrome.proxy.settings.set({value: proxyConfig, scope: "regular"}, () => {});

// 自动注入认证信息
chrome.webRequest.onAuthRequired.addListener(
  (details, callback) => {
    callback({
      authCredentials: {
        username: "lznbghpe",
        password: "16z9hv6q9fhu"
      }
    });
  },
  {urls: ["<all_urls>"]},
  ["blocking"]
);
  1. 将上述两个文件打包为proxy-auth-extension.zip,修改Java代码加载扩展:
public void start(){
    ChromeOptions options = new ChromeOptions();
    // 替换为你的扩展zip文件路径
    File extensionFile = new File("path/to/proxy-auth-extension.zip");
    options.addExtensions(extensionFile);
    options.addArguments("--headless");
    options.addArguments("start-maximized");
    // 禁用其他扩展,避免冲突
    options.addArguments("--disable-extensions-except=" + extensionFile.getAbsolutePath());

    WebDriver driver = new ChromeDriver(options);
    try {
        driver.get("https://mycgsportal.com/MyCGS/CGSAccount/Login");
        System.out.println(driver.getTitle());
    } finally {
        driver.quit();
    }
}

方法二:DevTools协议注入认证(无扩展方案)

适合ChromeDriver 75+版本,直接通过代码调用DevTools接口注入认证信息:

public void start(){
    String proxyAddress = "130.185.126.159";
    int proxyPort = 6774;
    String proxyUsername = "lznbghpe";
    String proxyPassword = "16z9hv6q9fhu";

    // 配置基础代理(不带认证)
    Proxy proxy = new Proxy();
    proxy.setProxyType(Proxy.ProxyType.MANUAL);
    proxy.setHttpProxy(proxyAddress + ":" + proxyPort);
    proxy.setSslProxy(proxyAddress + ":" + proxyPort);

    ChromeOptions options = new ChromeOptions();
    options.setProxy(proxy);
    options.addArguments("--headless");
    options.addArguments("start-maximized");
    // 无头模式必备参数,避免权限问题
    options.addArguments("--no-sandbox");
    options.addArguments("--disable-dev-shm-usage");

    ChromeDriver driver = new ChromeDriver(options);
    try {
        // 启用Network域
        driver.executeCdpCommand("Network.enable", new HashMap<>());
        // 注入代理认证信息
        Map<String, Object> authParams = new HashMap<>();
        authParams.put("username", proxyUsername);
        authParams.put("password", proxyPassword);
        driver.executeCdpCommand("Network.setAuthCredentials", authParams);

        driver.get("https://mycgsportal.com/MyCGS/CGSAccount/Login");
        System.out.println(driver.getTitle());
    } finally {
        driver.quit();
    }
}

额外注意事项

  • 确保ChromeDriver版本与本地Chrome浏览器版本完全匹配,版本不兼容会引发各类异常
  • 检查代理服务器是否允许当前机器IP访问,部分代理会限制来源IP
  • 无头模式下建议添加--no-sandbox和--disable-dev-shm-usage参数,避免容器或低权限环境下的运行问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:05:44