在 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 工作站。

相关文章