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

如何绕过Selenium Hub直接控制单个Selenium Node实现自定义网络管控

绕过Selenium Hub直接控制单个Node的实现方案

Selenium Node本身独立实现了完整的WebDriver协议端点,不需要依赖Hub就能直接接收WebDriver请求,仅需替换原Hub的连接地址为目标Node的对外访问地址即可实现需求,具体实现逻辑如下:

前提准备

  • 确保你的Selenium Node Docker镜像启动时,默认的WebDriver监听端口(通常为4444)以及你自定义的RPC管控端口都正确配置了宿主机端口映射
  • 弹性扩缩容组件同步维护一份可用Node列表,每个条目至少包含:可访问的宿主机IP、Node 4444端口映射的宿主机端口、RPC端口映射的宿主机端口、节点可用状态标识

直接连接Node的代码实现

以Python语言为例,其他编程语言逻辑完全一致,仅需将command_executor参数从原Hub地址替换为目标Node的访问地址即可:

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

chrome_options = Options()
# 替换为你要连接的具体Node的宿主机IP + 4444端口映射的宿主机端口
node_access_addr = "http://<宿主机IP>:<Node映射的4444端口>"
driver = webdriver.Remote(
    command_executor=node_access_addr,
    options=chrome_options
)

配套调度逻辑优化

你可以根据自身业务需求自行实现负载均衡策略:

  • 每次需要新建浏览器实例时,从维护的可用Node列表中筛选空闲节点
  • 分配节点后标记为占用状态,调用对应Node地址生成driver实例
  • 需要调整该浏览器对应节点的网络参数时,直接使用该节点绑定的宿主机IP+RPC端口调用你的管控脚本即可
  • 浏览器实例销毁后,标记节点恢复为空闲状态,等待下一次分配

注意事项

  • 若单个Node需要支持多会话,启动Node时配置SE_NODE_MAX_SESSIONS参数调整最大会话数即可,你当前单节点仅运行1个Chrome实例的场景直接设为1即可
  • 可自行实现节点健康检查:定时请求每个Node的http://<Node访问地址>/status接口,返回结果中value.ready字段为true则说明节点处于可用状态

内容的提问来源于stack exchange,提问作者Ashish Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:21:00