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

如何在最新版Python Selenium中配置Selenium Grid远程连接的代理

如何在最新版Python Selenium中配置Selenium Grid远程连接的代理

嘿,我来帮你把这个代理配置的事儿理清楚!你现在用的是最新版的Selenium和Python,这里有两个容易混淆的代理场景,我一步步给你讲明白,顺便解答你对参数的疑问:

首先得先明确你要配置的是哪一种代理——这很关键,很多人会搞混:

  • 场景1:你的Python脚本(Selenium客户端)需要通过代理才能连接到Selenium Grid服务器
  • 场景2:远程启动的浏览器需要通过代理访问目标网页

先解答你对ClientConfig参数的疑问

  • remote_server_addr:这就是你的Selenium Grid Hub服务器的完整地址,比如本地运行的Grid就是"http://localhost:4444",如果是远程服务器就填对应的IP+端口,比如"http://192.168.1.100:4444"
  • username和password:如果你的Grid服务器本身设置了身份验证(不是代理的认证),这里就填Grid的账号密码;如果只是代理需要认证,那这俩参数不用填在这儿
  • proxy:这个参数是给客户端连接Grid服务器用的,不是浏览器访问网页的代理——如果你不需要通过代理连Grid,这个参数可以直接去掉

场景2:浏览器实例通过代理访问网页(最常见需求)

如果你是想让远程启动的Chrome浏览器走代理访问https://www.selenium.dev这类网站,那应该把代理配置在ChromeOptions里,而不是ClientConfig。下面是完整的代码示例:

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

def get_default_chrome_options():
    options = Options()
    
    # 替换成你的代理信息
    proxy_host_port = "123.45.67.89:8080"  # 代理地址+端口
    proxy_username = "admin"               # 代理用户名(如果需要认证)
    proxy_password = "myStrongPassword"    # 代理密码(如果需要认证)
    
    # 构造代理配置参数
    if proxy_username and proxy_password:
        # 带认证的代理格式:用户名:密码@代理地址:端口
        proxy_str = f"http://{proxy_username}:{proxy_password}@{proxy_host_port}"
    else:
        # 无认证的代理直接填地址
        proxy_str = f"http://{proxy_host_port}"
    
    options.add_argument(f"--proxy-server={proxy_str}")
    # 忽略证书错误(和你原来的ignore_certificates功能一致)
    options.add_argument("--ignore-certificate-errors")
    return options

# 替换成你的Grid Hub地址
grid_server = "http://your-grid-hub-ip:4444/wd/hub"

options = get_default_chrome_options()
# 不需要ClientConfig的话可以直接这样初始化driver
driver = webdriver.Remote(command_executor=grid_server, options=options)

driver.get("https://www.selenium.dev")
# 可以访问httpbin验证代理是否生效:driver.get("https://httpbin.org/ip"),然后打印页面内容看IP
driver.quit()

场景1:客户端通过代理连接Grid服务器

如果你的Python脚本所在的机器无法直接访问Grid Hub,必须通过代理才能建立连接,那才需要配置ClientConfig的proxy参数,示例代码如下:

from selenium import webdriver
from selenium.webdriver.remote.client_config import ClientConfig
from selenium.webdriver.common.proxy import Proxy, ProxyType

# 配置客户端连接Grid用的代理
client_proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "client-proxy-addr:port",  # 客户端连Grid用的代理地址
    "httpsProxy": "client-proxy-addr:port"
})

client_config = ClientConfig(
    remote_server_addr="http://your-grid-hub-ip:4444",
    proxy=client_proxy,
    timeout=3600,
    ignore_certificates=True,
    # 如果Grid Hub本身需要认证,这里填Grid的账号密码
    username="grid-admin",
    password="grid-password"
)

options = webdriver.ChromeOptions()
driver = webdriver.Remote(
    command_executor="http://your-grid-hub-ip:4444",
    options=options,
    client_config=client_config
)

driver.get("https://www.selenium.dev")
driver.quit()

备注:内容来源于stack exchange,提问作者Hee Mi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 19:23:02