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

Selenium Chrome Driver代理问题:内部Selenium Grid 4配置方案咨询

Selenium Grid 4 内部网络代理配置最佳实践

核心问题拆解

你遇到的核心矛盾是:内部测试服务器加载依赖外部JS/CSS资源必须走代理,但代理又会拦截内部服务器的请求导致403错误。之前用proxy.setsslProxy和proxy.setnoProxy未生效,大概率是配置未传递到Grid组件和浏览器驱动层面。

分步解决方案

1. Helm部署时全局注入代理环境变量

直接在Helm的values.yaml中为Grid所有组件(hub、各类node)配置环境变量,这是最可靠的全局配置方式:

# hub组件配置
hub:
  extraEnv:
    - name: HTTP_PROXY
      value: "http://你的代理IP:端口"
    - name: HTTPS_PROXY
      value: "http://你的代理IP:端口"
    - name: NO_PROXY
      value: "内部服务器FQDN1,内部服务器FQDN2,192.168.0.0/16,selenium-hub" # 包含内部域名、IP段、Grid自身服务名

# Chrome节点配置
nodeChrome:
  extraEnv:
    - name: HTTP_PROXY
      value: "http://你的代理IP:端口"
    - name: HTTPS_PROXY
      value: "http://你的代理IP:端口"
    - name: NO_PROXY
      value: "内部服务器FQDN1,内部服务器FQDN2,192.168.0.0/16,selenium-hub"

# Firefox节点配置(按需添加)
nodeFirefox:
  extraEnv:
    - name: HTTP_PROXY
      value: "http://你的代理IP:端口"
    - name: HTTPS_PROXY
      value: "http://你的代理IP:端口"
    - name: NO_PROXY
      value: "内部服务器FQDN1,内部服务器FQDN2,192.168.0.0/16,selenium-hub"
  • 注意:NO_PROXY值用逗号分隔,不要加空格,必须包含所有内部服务器的FQDN、IP/IP段,还要加上Grid自身的服务名(比如selenium-hub),避免组件间通信被代理拦截。

2. WebDriver代码层补充代理配置

仅靠环境变量可能无法覆盖浏览器的代理规则,需要在初始化WebDriver时显式配置noProxy:

Proxy proxy = new Proxy();
proxy.setHttpProxy("http://你的代理IP:端口");
proxy.setSslProxy("http://你的代理IP:端口");
proxy.setNoProxy("内部服务器FQDN1,内部服务器FQDN2,192.168.0.0/16");

ChromeOptions options = new ChromeOptions();
options.setProxy(proxy);
WebDriver driver = new ChromeDriver(options);
  • 验证方法:启动浏览器后,在地址栏输入chrome://net-internals/#proxy(Chrome)或about:config(Firefox),检查绕过列表是否包含配置的内部地址。

3. 排查代理服务器的403拦截问题

出现net.ERR_TUNNEL_CONNECTION_FAILED(403),说明代理服务器拒绝了内部地址的隧道请求:

  • 检查代理服务器规则:确保代理允许内部地址直接访问,不对内部地址发起CONNECT请求。
  • 确认代理端白名单:部分代理服务器不会自动读取客户端的NO_PROXY变量,需要在代理控制台单独添加内部地址的白名单。

4. 验证配置生效情况

进入Grid节点容器,执行以下命令确认配置和连通性:

# 查看环境变量是否生效
echo $HTTP_PROXY $HTTPS_PROXY $NO_PROXY

# 测试内部服务器连通性(应不走代理)
curl -v http://内部服务器FQDN

# 测试外部资源连通性(应走代理)
curl -v http://外部资源域名

关键注意事项

  • 所有Grid组件必须配置相同的代理参数,避免hub和node之间的通信异常。
  • 如果使用无头浏览器,代理配置规则和普通浏览器一致,需确保无头模式能读取到环境变量或代码配置。
  • 若内部服务器使用IP访问,NO_PROXY中要同时配置IP和FQDN,避免浏览器解析时的差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:22:21