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
相关产品推荐
相关产品推荐

