今天想用 scholar 包抓一下自己的 Google Scholar profile,发现不翻墙打不开。

要设代理,参考了 @GuangchuangYu 发表的一次解决所有代理问题, 却仍然没有解决自己的问题。

因为我用的是 Windows,proxychains 却只能用于类 Unix 系统。

经过 3 个小时的探索,终于发现了一个途径,居然比 proxychains 还要简单很多。

那就是,设置 Renviron 环境变量的方法。

新建一个 Renviron 文件,内容如下:

CURL_SSL_BACKEND=openssl

http_proxy=http://127.0.0.1:8080
https_proxy=http://127.0.0.1:8080

这个文件:

  • 如果放在 “~/.Renviorn” 下面,那么每次 R 运行的时候都会设置使用相应的代理。
  • 如果放在 R project 文件夹下面(如“/path/to/project/.Renviron”),那么只对相应的项目生效。
  • 如果放在一个普通文件中(如“proxy.Renviron”),则只在调用的时候生效。

采用最后一种方法,在需要设置代理的脚本中,加入一行,就可以确保后续访问网络时使用代理设置。

readRenviron("proxy.Renviron")

说明

网上有很多关于设置 http(s)_proxy 变量来代理上网的方法,但是只设置这项是没有用的。

这是因为,当 R 从网上下载时,curl 包默认是采用的 Windows Cert Store 的后端,而该后端是不支持 https 协议代理上网的。

rcurl SSL Backends Secure Channel OpenSSL
trust certificates Windows Cert Store curl-ca-bundle.crt file
works on corporate networks Usually Yes Maybe not
support http proxy server Yes Yes
support https proxy server No Yes
support client certificate authentication No Yes

因此,需要先设置 CURL_SSL_BACKEND=openssl,然后在设置代理服务器。

备注:这份资料在 curl 的文档中(vignette("windows","curl"))找到的。

作者简介

Chun-Hui Gao is a Research Associate at Huazhong Agricultural University.

重复使用

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The source code is licensed under MIT. The full source is available at https://github.com/yihui/hugo-prose.

欢迎修订

如果您发现本文里含有任何错误(包括错别字和标点符号),欢迎在本站的 GitHub 项目里提交修订意见。

引用本文

如果您使用了本文的内容,请按照以下方式引用:

gaoch (2019). 为 R 代理. BIO-SPRING. /post/2019/10/28/r-proxy/

BibTeX citation

@misc{
  title = "为 R 代理",
  author = "gaoch",
  year = "2019",
  journal = "BIO-SPRING",
  note = "/post/2019/10/28/r-proxy/"
}