在打开会话时为 RSelenium 浏览器设置代理
用 extraCapabilities 指定浏览器路由,并区分会话协议被拒与浏览器无法访问代理这两种情况。
在 driver$open() 之前,把代理作为浏览器会话能力提供,前提是该 RSelenium 部署的 WebDriver 服务器接受其会话协议:
browser_proxy <- list(
proxyType = 'manual',
httpProxy = 'proxy.example:8080',
sslProxy = 'proxy.example:8080'
)
driver <- RSelenium::remoteDriver(
remoteServerAddr = 'webdriver.example',
port = 4444L,
browserName = 'chrome',
extraCapabilities = list(proxy = browser_proxy)
)
driver$open()remoteServerAddr 标识 WebDriver 服务。该能力描述浏览器接下来去哪里。仅靠 R 中的 HTTP 代理设置并不能配置这条浏览器路由。
把 host:port 用于 httpProxy 和 sslProxy。后者选择 HTTPS 目标,并不意味着代理监听器受 TLS 保护。HTTP 代理列表中的公共 HTTP 候选可为此类字段提供主机和端口,前提是浏览器主机能访问到它。
先出现的是哪种失败?
如果打开会话被拒,请在更换代理端点之前检查协议兼容性。RSelenium 的 remoteDriver 源码提交的是旧式 desiredCapabilities;任何当前的 WebDriver 服务器都可能在浏览器尚不存在、无法测试路由时就拒绝该格式。
如果会话能打开但导航失败,请从实际浏览器主机检查可达性。对容器或 Grid 节点而言,localhost 指的是该节点,而不是 R 工作站。