首页 > 解决方案 > 尽管 GET 请求有效,但无法在公司代理后面运行 RSelenium?

问题描述

我正在尝试在我公司的代理后面运行 RSelenium,并且可以通过 GET 请求成功连接,但我无法正确运行 rsDriver() 函数。

set_config(use_proxy(url = "proxy.company.com",
                     port = 80,
                     username = "greg",
                     password = "password"))

执行此操作后,我可以成功运行 GET 请求,如果不使用 setconfig,我将无法执行该请求:

> GET("http://google.com")
Response [http://www.google.com/]
  Date: 2021-02-09 18:30
  Status: 200

我尝试使用 rsDriver 并遇到与 Chrome 或 Firefox 的连接问题:

cprof <- list(chromeOptions = 
                list(args = list("--proxy-server=proxy.company.com")))

driver <- rsDriver(browser = c("chrome"), extraCapabilities = cprof)

检查 Selenium 服务器版本:开始:open.connection(con,“rb”)中的 PREDOWNLOAD 错误:达到超时:[www.googleapis.com] 操作在 10014 毫秒后超时,收到 0 个字节中的 0 个字节

我或者尝试使用 Docker 客户端运行,尝试连接后收到一条奇怪的消息:

> remDr <- remoteDriver(remoteServerAddr = "127.0.0.1", port = 444L) 
> remDr$open()
[1] "Connecting to remote server"
$id
[1] NA

我很困惑为什么无论我尝试什么都无法让它发挥作用。任何指导都会挽救生命。

谢谢你

标签: rdockerproxyrseleniumrsdriver

解决方案


这是一个很难搜索的问题,因为由此产生的错误实际上只是NA. 但我发现这个关于如何使用 RSelenium 的代理。基本上:

cprof <- list(chromeOptions = 
                  list(args = list("--proxy-server=http://118.69.61.212:53281")))

driver<- rsDriver(browser=c("chrome"), extraCapabilities = cprof)
driver$client$navigate("http://ipinfo.io")

但是您有一个硬编码的用户名和密码,由于安全原因,这似乎无法与 chrome 一起使用。

但是,有人编写了一个可以使其工作的脚本(我没有尝试使用它,更不用说 R 了,很想知道是否有人可以让它工作)。

对于它的价值,我遇到了所有相同的问题,所以我通过代理后面的 httr/rvest 发出请求,但是对于通过 RSelenium 的请求,我曾经httr::reset_config()停止使用代理,所以至少 RSelenium 工作(这不是解决这个问题的方法,只是妥协)。


推荐阅读