【问题标题】:Proxy setting for RR的代理设置
【发布时间】:2011-06-24 11:43:52
【问题描述】:

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

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

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

  • 方法3:设置Setinternet2=TRUE

  • 方法四:

    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) 命令我无法提取网络数据。我收到~&lt;HEAD&gt;\n&lt;TITLE&gt;Access Denied&lt;/TITLE&gt;\n&lt;/HEAD&gt;~ 错误。

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

【问题讨论】:

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

标签: r


【解决方案1】:

在 Mac OS 上,我找到了最佳解决方案 here。引用作者的话,简单的两个步骤是:

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 之前以大写和小写形式导出终端中的项目。

【讨论】:

  • 如果运行 RStudio,则在步骤 1 之后从终端打开它,可能通过“打开 /Applications/RStudio.app”。
  • 嗨,我怎样才能将其设置回默认值。我尝试了您的解决方案,现在我正在使用没有代理的 wifi,但我无法再在 RStudio 中安装包。我试过Sys.setenv(http_proxy=""),我也在终端中再次运行第1步,将其设置为空字符串""。仔细检查它,它返回"",但仍然无法安装。虽然我可以在终端安装一个包,但不能在 RStudio 了。
  • @Al-AhmadgaidAsaad 奇怪,这种行为表明 Rstudio 方面存在问题,但我想当您退出 Rstudio 而不保存会话时,您应该放松这些代理更改。你试过吗?否则我不确定……
  • 我按照你的建议做了,从我的工作区清除所有内容。现在它起作用了!谢谢!
  • 嗨@GeekOnAcid,也可以将第二个选项的代码放入文件 ~/.Rprofile 在 mac 和 Linux 上,该文件在会话启动时加载。
【解决方案2】:

问题在于您的 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 的调用中。

【讨论】:

  • 如果指定的选项是用curlSetOpt(.opts=opts) 全局设置的,这些是否也用于其他连接,例如来自XML 包的连接,例如:htmlTreeParse() 或者我如何强制它们使用代理?谢谢!
  • 我也有类似的情况。我有这样的代理(IP 屏蔽)https://domain\user:pass@172.122.37.15:8080。我想以这样一种方式进行配置,即所有面向 Internet 的操作都使用此代理。有什么线索吗?
【解决方案3】:

对于 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"
    

就是这样..??!!!

【讨论】:

    【解决方案4】:

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

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

    请务必将安装了 R 程序的目录放在其中。这对我行得通。希望对您有所帮助。

    【讨论】:

      【解决方案5】:

      这篇文章与 *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 和 Rstudio 代理的解决方案。

        有几个步骤要遵循,也许有些步骤没用,但组合起来很有效!

        1. 添加环境变量 http_proxyhttps_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")。请注意,没有冒号反斜杠,也没有空格,也没有用户名。
        【解决方案7】:

        在 Windows 7 上,我通过进入我的环境设置 (try this link for how) 并使用代理详细信息添加用户变量 http_proxyhttps_proxy 解决了这个问题。

        【讨论】:

          【解决方案8】:

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

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

          【讨论】:

            【解决方案9】:

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

            打开 Internet Explorer,选择Internet Options


            打开环境变量编辑器:


            在表单中添加变量HTTP_PROXY:

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

            例子:

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


            RStudio 应该可以工作:

            【讨论】:

            • 对于 Rstudio 代理设置,有没有一种简单的方法可以在家庭和办公室之间切换?适用于 Windows 和 Mac 吗?
            【解决方案10】:

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

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

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

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

            【讨论】:

              【解决方案11】:

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

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

              【讨论】:

                猜你喜欢
                • 2020-02-04
                • 2013-03-05
                • 2019-04-18
                • 1970-01-01
                • 1970-01-01
                • 2017-06-09
                • 2016-10-18
                • 2021-12-20
                • 1970-01-01
                相关资源
                最近更新 更多