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

如何在Selenium Chrome容器中配置代理?附docker-compose配置示例

在Selenium Chrome容器中配置代理的方法

你已经在docker-compose.yml里加了系统级的代理环境变量,但其实Selenium容器里的Chrome浏览器需要额外配置才能正确走代理——默认的standalone-chrome镜像中,系统级的http_proxy不一定能直接被Chrome识别到。下面给你两种靠谱的配置方式:

方法一:通过docker-compose.yml配置全局代理

直接在现有配置的environment部分添加Chrome节点的启动参数,修改后的完整配置如下:

version: '2.2'
services:
  chrome:
    privileged: True
    image: "selenium/standalone-chrome:3.11.0"
    ports:
      - "4444:4444"
    volumes:
      - /dev/shm:/dev/shm
    environment:
      - TZ="UT"
      - http_proxy=http://proxy.lan:8080
      - https_proxy=http://proxy.lan:8080
      - no_proxy=localhost,127.0.0.1
      - SE_OPTS="--proxy-server=http://proxy.lan:8080 --proxy-bypass-list=localhost;127.0.0.1"

这里的核心是SE_OPTS变量:

  • --proxy-server指定Chrome要使用的代理地址,必须包含协议(http/https)
  • --proxy-bypass-list设置无需走代理的地址,和no_proxy保持一致即可,用分号或逗号分隔都支持

如果你的代理需要账号密码认证,把代理地址改成http://username:password@proxy.lan:8080就行。

方法二:在代码中动态配置代理

如果需要更灵活的代理控制(比如不同测试用例用不同代理),可以在初始化Remote WebDriver时直接给ChromeOptions添加参数。以Python为例:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 配置Chrome代理选项
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://proxy.lan:8080')
# 排除本地地址,避免Selenium内部通信异常
chrome_options.add_argument('--proxy-bypass-list=localhost;127.0.0.1')

# 连接容器中的Selenium节点
driver = webdriver.Remote(
    command_executor='http://localhost:4444/wd/hub',
    options=chrome_options
)

这种方式不需要修改docker-compose配置,完全在代码层控制代理,适合动态调整的场景。

注意事项

  • 务必确认代理地址和端口可用,避免因代理不可用导致Chrome启动失败
  • 若使用HTTPS代理,--proxy-server的协议要改成https(不过大部分场景用http代理即可处理HTTPS请求)
  • no_proxy和--proxy-bypass-list一定要包含本地地址(localhost、127.0.0.1),否则Selenium节点内部通信可能出问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:38:21