R 从受密码保护的站点读取信息

R 从受密码保护的站点读取信息,r,R,在R教程中,我一直在使用readLines()从网站上获取信息。我现在希望从我自己的网站(特别是awstats数据)提取数据,但域受密码保护 是否有一种方法可以通过用户名和密码传递我需要的特定awstats数据的url url的格式为: 谢谢。如果它确实是http基本访问身份验证,那么连接的文档提供了一些帮助: 网址 请注意,https://连接是 仅当--internet2或 setInternet2(TRUE)用于 使用Internet Explorer内部构件), 而且只有当证书是 被认

在R教程中,我一直在使用readLines()从网站上获取信息。我现在希望从我自己的网站(特别是awstats数据)提取数据,但域受密码保护

是否有一种方法可以通过用户名和密码传递我需要的特定awstats数据的url

url的格式为:


谢谢。

如果它确实是http基本访问身份验证,那么
连接的文档提供了一些帮助:

网址

请注意,https://连接是 仅当--internet2或 setInternet2(TRUE)用于 使用Internet Explorer内部构件), 而且只有当证书是 被认为是有效的。有了这个 仅限选项,该 用于需要 也接受身份验证

因此,您的URL字符串应如下所示:

不过,这可能只是Windows


希望这有帮助

您可以在url中嵌入用户名和密码,如:

您可以尝试将其用于
readLines()
。如果不起作用,您可以尝试使用
url()
打开连接:

zz <- url("http://userid:passw@domain.name:port/...")
readLines(zz)
close(zz)
这会将文件保存在指定的本地路径上

编辑:

正如csgillespie所说,您不应该在脚本中包含用户名和密码。如果使用source()或以交互方式运行脚本,则可以添加以下内容:

user <- readline("Give the username : ")
passw <- readline("Give the password : ")

Url <- paste("http://",user,":",passw,"@domain.name...")
readLines(Url,...)

user如果您有权访问该框,则始终可以读取awstats日志文件。如果您可以使用ssh将文件同步到该框中,那么就可以使用
rsync
轻松同步最新的文件

使用过程中的轻微障碍

http://username:password@domain...
就是你把你的密码放在一个R脚本中-最好避免这样。当然,你可以通过脚本保护它,但只需一次失误。比如说,

  • 有人问你一个类似的问题,你发布了你的脚本
  • url。。。(?)现在将显示在您的服务器日志上吗

将url格式化为
http://username:password@域…
用于
download.file
对我不起作用,但是
R.utils
提供了
downloadFile
的功能,该功能工作得非常好:

require(R.utils)
downloadFile(myurl, myfile, username = "myusername", password ="mypassword")
请参阅@joris meys answer,了解避免在脚本中以纯文本形式包含用户名和密码的方法


编辑除了看起来像
下载文件
之外,只需将URL重新格式化为
http://username:password@域…
?嗯…

这是http基本身份验证吗?也就是说,在弹出窗口中会出现密码提示,在输入错误的密码+1作为警告时,可能会出现401未经授权的错误。当然,应该在使用eg readline()请求用户名和密码或将其作为参数传递给脚本之后构造url。但是“如果你有权访问这个盒子”需要一个来自R外部的解决方案。@Joris:“来自R外部的解决方案”-我肯定R必须有一个用于
ssh
;)的库。)我怀疑OP可能可以通过示例url的构造方式访问该框,但这只是一个猜测。完成它并不那么简单,而且非常依赖于相关机器和服务器的体系结构。我看到它发生的唯一方式是在R脚本中使用
system()
,但这远远不是一个最佳解决方案,因为您再次遇到密码问题…谢谢@csgillespie。我还需要——我没有意识到的internet2选项。
require(R.utils)
downloadFile(myurl, myfile, username = "myusername", password ="mypassword")