R调用getURL读取GitHub CSV文件报TLS协议版本错误如何解决
错误原因
该报错是因为GitHub服务器已不再支持旧版TLS1.0/1.1协议,你使用的RCurl::getURL函数默认发起请求时使用的TLS版本过低,无法完成SSL握手。浏览器因为默认支持高版本TLS1.2/1.3协议,所以可以正常访问该链接。
解决方案
方案1:使用R内置读取函数(最简便)
read.csv()本身支持直接传入HTTPS链接,不需要额外调用getURL,可直接替换代码为:
weather <- read.csv("https://raw.githubusercontent.com/dataprofessor/data/master/weather-weka.csv")
该方案不需要额外依赖第三方包,兼容性最好。
方案2:调整RCurl参数适配TLS版本
如果必须使用getURL函数,需要手动指定使用新版TLS协议发起请求:
library(RCurl) # 手动指定TLS版本为1.2完成请求 weather_content <- getURL( "https://raw.githubusercontent.com/dataprofessor/data/master/weather-weka.csv", ssl.verifypeer = TRUE, sslversion = CURL_SSLVERSION_TLSv1_2 ) weather <- read.csv(text = weather_content)
排查注意项
- 确保你的R版本在3.6及以上,旧版本R的内置网络库不支持高版本TLS协议
- 如果使用RCurl包,需将包更新到最新版本,底层依赖的libcurl库也需要支持TLS1.2及以上版本
内容的提问来源于stack exchange,提问作者NinjaSteve 1
相关产品推荐
相关产品推荐

