Chromote 会话与一个 Chrome 进程通信。它的浏览器请求会遵循该进程的代理配置,因此要在创建之前设置好参数:

args <- c(
  chromote::get_chrome_args(),
  "--proxy-server=http://proxy.example:8080"
)
browser <- chromote::Chrome$new(args = args)
controller <- chromote::Chromote$new(browser = browser)
session <- chromote::ChromoteSession$new(parent = controller)

这样做保留了 Chromote 现有的默认参数,并加入了 HTTP 监听;来自HTTP 代理列表的端点可以填入示例 URL,用于允许的公开浏览。只有当端点确实支持 SOCKS5 时,才改用 socks5 URL。在拼接参数向量时,要移除与之冲突的现有代理开关。

通过会话执行所需的 CDP 操作,然后作为 R 工作负载清理的一部分,关闭会话、控制器和自有浏览器。如果导航抛出错误,try/finally 风格的 R 清理路径会很有用。

对于使用 Chromote 共享默认浏览器的应用,set_chrome_args 会改变今后构建浏览器时的默认值。它不会重启已有的进程。如上所述显式创建 Chrome 对象,可以让归属关系和启动时机变得可见。

R 自身的 http_proxy 或 https_proxy 环境可以配置 R 下载器,而不改变这个浏览器。同样,改变 Chrome 的线路也不会配置单独的 R API 调用。要辨别是 CDP 连接的哪一侧在发送请求。

相关文章