我在商业环境中使用 R,其中外部连接全部通过 Web 代理进行,因此我们需要指定代理服务器地址并确保我们使用 Windows 身份验证连接到它。
我已经有了将 RCurl 和 httr 包配置为默认使用这些设置的代码 - 即
httr::set_config(config(
proxy = "my.proxy.address",
proxyuserpwd = ":",
proxyauth = 4
))
Run Code Online (Sandbox Code Playgroud)
或者
opts <- list(
proxy = "my.proxy.address",
proxyuserpwd = ":",
proxyauth = 4
)
RCurl::options(RCurlOptions = opts)
Run Code Online (Sandbox Code Playgroud)
但是,在最近的几个案例中,我发现依赖curl包来发出 Web 请求的包 - 例如xml2::read_xml- 我找不到任何方法来设置相同的代理选项,因此默认情况下它们会被选中并由 curl 使用。
如果我自己直接使用 curl,我可以在新句柄上设置选项,以下代码足以成功工作:
h = new_handle(proxy = "my.proxy.address",
proxyuserpwd = ":")
con = curl(url,handle = h)
page = xml2::read_xml(con)
Run Code Online (Sandbox Code Playgroud)
...但是当 curl 的使用被埋在其他人的功能中时,这没有任何帮助!
或者,我知道我可以为代理地址设置一个环境变量,如下所示:
Sys.setenv(https_proxy = "https://my.proxy.address")
Run Code Online (Sandbox Code Playgroud)
... libcurl …