我正在尝试使用R中的quantmod
包来从雅虎获取财务数据。它适用于我的个人笔记本电脑(Mac和Win)。但是我无法在我的工作计算机上运行它(Win7)。
我的代码是:
getSymbols("JPM", src = "yahoo")
请注意它只适用于我公司的笔记本电脑。
这是错误代码:
Error in curl::curl_download(cu, tmp, handle = h) :
SSL certificate problem: unable to get local issuer certificate
我试图通过以下方式解决问题:
httr
包curl
,quantmod
并重新安装curl
,httr
,RCurl
和quantmod
的最新版本openssl
包ssl_verifypeer = 0L
getSymbols
之前添加以下内容
options(download.file.method = "wget", download.file.extra = c("--no-check-certificate"))
不幸的是,以上都没有。顺便说一句,从谷歌财经工作获取数据,但谷歌每个请求只提供约4000条记录。
我认为我们公司对SSL有一些限制,但我完全可以访问以https://开头的网站
此外,以下代码有效:
library('httr')
content(GET('https://www.linkedin.com/in/lillyzhu'))
和
devtools::install_github
我花了一个星期来解决这个问题,但我没有取得任何进展。现在,我想知道是否可以修复它?任何想法都会有所帮助!
感谢所有的贡献者,有一个伟大的!附录:libcurlVersion()
的输出
[1] "7.40.0"
attr(,"ssl_version")
[1] "OpenSSL/1.0.0o"
attr(,"libssh_version")
[1] "libssh2/1.4.3"
attr(,"protocols")
[1] "dict" "file" "ftp"
[4] "ftps" "gopher" "http"
[7] "https" "imap" "imaps"
[10] "ldap" "pop3" "pop3s"
[13] "rtmp" "rtsp" "scp"
[16] "sftp" "smtp" "smtps"
[19] "telnet" "tftp"
如果您需要我的笔记本电脑的任何其他信息,请随时告诉我。
更新:我在我公司的笔记本电脑上测试该功能而无需登录VPN,它可以工作。所以任何想法让它在VPN内部工作?
问题是因为cURL
默认使用OpenSSL
。可以通过安装特殊版本的winSSL
来修复使用cURL
,
Sys.setenv(LIBCURL_BUILD="winssl")
install.packages("https://github.com/jeroen/curl/archive/master.tar.gz", repos = NULL)
请参考此链接:
该错误通常是由过期或缺失的CA根证书捆绑引起的,但也可能在远程服务器使用自签名证书时发生。在任何一种情况下,cURL都无法验证远程服务器的证书并引发错误。
您可以使用以下命令禁用验证证书的要求:
library(httr)
httr::set_config(config(ssl_verifypeer = FALSE))
但是不建议这样做,因为它会产生安全漏洞。