R的代理设置


75

我在办公室用Internet连接R时遇到问题。可能是由于LAN设置所致。我尝试了在网络上遇到的几乎所有可能方式(见下文),但仍然徒劳。

  • 方法1:使用调用R --internet2

  • 方法2:通过设置调用R ~/Rgui.exe http_proxy=http:/999.99.99.99:8080/ http_proxy_user=ask

  • 方法3:设置 Setinternet2=TRUE

  • 方法4:

    curl <- getCurlHandle()
    curlSetOpt(.opts = list(proxy = '999.99.99.99:8080'), curl = curl)
    Res <- getURL('http://www.cricinfo.com', curl = curl)
    

在以上所有方法中,我都可以直接从CRAN加载程序包,也可以使用download.file命令下载文件

但是,使用getURL(RCurl)readHTMLTable(XML)htmlTreeParse(XML)命令我无法提取网页的数据。我~<HEAD>\n<TITLE>Access Denied</TITLE>\n</HEAD>~出错了。

如何在R中为XML包设置LAN代理设置?


如果您已经尝试了所有方法,但仍然无法使用,请与您的网络管理员联系;他们可能需要设置防火墙例外,以允许来自您计算机的流量通过。
Richie Cotton

Answers:


48

在Mac OS上,我在这里找到了最佳解决方案。引用作者,有两个简单步骤:

1)打开终端并执行以下操作:

export http_proxy=http://staff-proxy.ul.ie:8080
export HTTP_PROXY=http://staff-proxy.ul.ie:8080

2)运行R并执行以下操作:

Sys.setenv(http_proxy="http://staff-proxy.ul.ie:8080")

使用以下命令仔细检查:

Sys.getenv("http_proxy")

我落后于大学代理,并且此解决方案非常有效。主要问题是要在运行R之前先在Terminal中导出大小写形式的项目。


2
如果运行的是RStudio,则可以在第1步之后从终端打开它,方法可能是通过“ open /Applications/RStudio.app”。
格伦

嗨,我如何将其设置回默认值。我尝试了您的解决方案,现在我正在使用没有代理的wifi,但是我无法在RStudio中安装软件包。我尝试过Sys.setenv(http_proxy=""),也在终端中再次运行步骤1,将其设置为空字符串""。仔细检查并返回"",但仍然无法安装。虽然我可以在终端中安装软件包,但是不能在RStudio中安装。
Al-Ahmadgaid Asaad

2
@ Al-AhmadgaidAsaad奇怪,此行为表明Rstudio方面存在问题,但是我猜您在退出Rstudio而不保存会话时应该放弃那些代理更改。你有尝试过吗?否则,我不确定...
Geek On Acid

1
我做了您的建议,清除了工作区中的所有内容。现在就可以了!谢谢!
Al-Ahmadgaid Asaad 2015年

1
@GeekOnAcid,您好,也可以将第二个选项的代码放入在Mac和Linux上的〜/ .Rprofile文件中,该文件在会话启动时加载。
dmeu

23

问题出在您的curl选项上-该RCurl软件包似乎没有使用internet2.dll。您需要单独指定端口,并且可能需要提供用户登录详细信息作为网络凭据,例如,

opts <- list(
  proxy         = "999.999.999.999", 
  proxyusername = "mydomain\\myusername", 
  proxypassword = "mypassword", 
  proxyport     = 8080
)
getURL("http://stackoverflow.com", .opts = opts)

请记住不要在密码中使用任何反斜杠。您可能还需要将URL包装在对的调用中curlEscape


1
如果指定的选项是全局设置的,curlSetOpt(.opts=opts)这些选项是否也用于其他连接,例如与XML软件包的连接,例如:htmlTreeParse()或如何强制它们使用代理?谢谢!
2012年

我有类似的情况。我有这样的代理(IP屏蔽)https://:// domain \ user:pass@172.122.37.15:8080。我想以所有面向互联网的操作都使用此代理的方式进行配置。有铅吗?
Indranil Gayen'Mar 8'8

19

对于RStudio,您必须执行以下操作:

首先,像往常一样打开RStudio,从顶部菜单中选择:

工具-全局 选项-软件包

取消选中以下选项:对HTTP使用Internet Explorer库/代理

然后关闭Rstudio,此外,您还必须:

  1. 在您的计算机中找到文件(.Renviron),很可能会在这里找到它:C:\ Users \您的用户名\ Documents。请注意,如果它不存在,则可以通过在RStudio中编写以下命令来创建它:

    file.edit('~/.Renviron')
    
  2. 将这两行添加到文件的首字母:

    options(internet.info = 0)
    
    http_proxy="http://user_id:password@your_proxy:your_port"
    

就是这样.. ?? !!!!!!


11

我在办公室遇到同样的问题,因此解决了这个问题,在R快捷方式的目标位置添加了代理。单击R图标,首选项的右键,然后在目标字段中添加

"C:\Program Files\R\your_R_version\bin\Rgui.exe" http_proxy=http://user_id:passwod@your_proxy:your_port/

确保将目录放置在已安装R程序的位置。这对我行得通。希望对您有所帮助。


7

这篇帖子与* nix上的R代理问题有关。您应该知道R有许多库/方法可以通过Internet提取数据。

对于“ curl”,“ libcurl”,“ wget”等,只需执行以下操作:

  1. 打开一个终端。键入以下命令:

    sudo gedit /etc/R/Renviron.site
    
  2. 输入以下几行:

    http_proxy='http://username:password@abc.com:port/'
    https_proxy='https://username:password@xyz.com:port/'
    

    更换usernamepasswordabc.comxyz.comport使用这些设置具体到您的网络。

  3. 退出R并再次启动。

这应该使用“ libcurl”和“ curl”方法解决您的问题。但是,我还没有尝试使用“ httr”。仅针对该会话使用“ httr”执行此操作的一种方法如下:

library(httr)
set_config(use_proxy(url="abc.com",port=8080, username="username", password="password"))

您需要在相关字段中替换特定于您的n / w的设置。



6

如果从桌面图标开始R,则可以将--internet标志添加到目标行(右键单击->属性),例如

"C:\Program Files\R\R-2.8.1\bin\Rgui.exe" --internet2 

6

受到互联网上所有相关响应的启发,终于找到了正确配置R和Rstudio代理的解决方案。

有几个步骤可以遵循,也许其中一些步骤没有用,但是结合起来还是有效的!

  1. 添加环境变量http_proxy以及https_proxy代理详细信息。

    variable name: http_proxy
    variable value: https://user_id:password@your_proxy:your_port/
    
    variable name: https_proxy
    variable value: https:// user_id:password@your_proxy:your_port
    
  2. 如果从桌面图标开始R,则可以将--internet标志添加到目标行(右键单击->属性)

    例如"C:\Program Files\R\R-2.8.1\bin\Rgui.exe" --internet2

  3. 对于RStudio,您必须执行以下操作:

    首先,像往常一样打开RStudio,从顶部菜单中选择:

    工具-全局选项-软件包

    取消选中以下选项:对HTTP使用Internet Explorer库/代理

  4. .Renviron在您的计算机中找到文件(),很可能会在这里找到它C:\Users\your user name\Documents

    请注意:如果不存在,则可以通过在R中编写以下命令来创建它:

    file.edit('~/.Renviron')
    

    然后将以下六行添加到文件的首字母:

    options(internet.info = 0)
    
    http_proxy = https:// user_id:password@your_proxy:your_port
    
    http_proxy_user = user_id:password
    
    https_proxy = https:// user_id:password0@your_proxy:your_port
    
    https_proxy_user = user_id:password
    
    ftp_proxy = user_id:password@your_proxy:your_port
    
  5. 重新启动R。在R中键入以下命令,以确保上面的配置运行良好:

    Sys.getenv("http_proxy")
    
    Sys.getenv("http_proxy_user")
    
    Sys.getenv("https_proxy")
    
    Sys.getenv("https_proxy_user")
    
    Sys.getenv("ftp_proxy")
    
  6. 现在,您可以使用以下命令按需安装软件包:

    install.packages("mlr",method="libcurl")
    

    添加很重要method="libcurl",否则将无法正常工作。


这完全不适合我。DID的工作原理是:Sys.setenv(“ http_proxy” =“ proxy.usps.gov:8080”)。请注意,没有冒号反斜杠,也没有空格,也没有用户名。
Boyce Byerly

1

使所有内容在RStudio中运行的最简单方法Windows 10如下:

打开Internet Explorer,选择Internet Options

在此处输入图片说明


打开环境变量的编辑器:

在此处输入图片说明


以以下形式添加变量HTTP_PROXY:

HTTP_PROXY=http://username:password@localhost:port/

例:

HTTP_PROXY=http://John:JohnPassword@localhost:8080/    

在此处输入图片说明


RStudio应该工作:

在此处输入图片说明


有没有一种简单的方法可以在Rstudio代理设置的家庭和办公室之间进行切换?适用于Windows和Mac吗?
user5249203

0

尝试了所有这些以及使用netsh,winhttp等的解决方案。Geek On Acid的回答帮助我从服务器下载了软件包,但是这些解决方案都无法使用我要运行的软件包(twitteR软件包)。

最好的解决方案是使用可让您配置系统范围代理的软件。

FreeCap(免费)和Proxifier(试用版)对我的公司非常适合。

请注意,您需要从浏览器和配置为使用代理的任何其他应用中删除代理设置,因为这些工具为计算机中的所有网络流量提供了系统范围的代理。


-2

我在Windows 7(32位)上的解决方案。R版本3.0.2

Sys.setenv(http_proxy="http://proxy.*_add_your_proxy_here_*:8080")

setInternt2

updateR(2)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.