You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用read.csv从网页下载CSV文件返回异常HTML内容问题咨询

问题:R语言read.csv加载CSV链接返回HTML,直接点击却能正常下载CSV

我尝试从Cato研究所的2023人类自由指数页面下载CSV文件,文件的直接链接为https://www.cato.org/sites/cato.org/files/human-freedom-index-files/2023-Human-Freedom-Index-Data.csv。但用R的read.csv加载时,返回的却是HTML代码,具体操作和输出如下:

> dd <- read.csv('https://www.cato.org/sites/cato.org/files/human-freedom-index-files/2023-Human-Freedom-Index-Data.csv')
> dd[1,1]
[1] "<head>"
> dd[2,1]
[1] "<META NAME=robots CONTENT=noindex,nofollow>"
> dd[3,1]
[1] "<script src=/_Incapsula_Resource?SWJIYLWA=5074a744e2e3d891814e9a2dace20bd4,719d34d31c8e3a6e6fffd425f7e032f3>"
> dd[4,1]
[1] "</script>"
> dd[5,1]
[1] "<body>"
> dd[6,1]
[1] "</body></html>"

但直接在浏览器点击该链接却能正常下载到真实的CSV文件,请问这是什么原因?


原因分析

  • 反爬系统拦截:从返回的HTML内容里的_Incapsula_Resource脚本可以判断,该网站部署了Incapsula(现归属Imperva)反爬防护系统。read.csv发起的HTTP请求非常简单,没有携带浏览器特有的请求头信息(比如User-Agent、会话Cookie等),被反爬系统识别为非人工访问,因此返回了拦截页面的HTML代码,而非目标CSV文件。
  • 浏览器请求的合法性验证:当你在浏览器中点击链接时,浏览器会自动带上完整的请求头(包括符合浏览器标识的User-Agent、之前访问网站时生成的会话Cookie等),这些信息让反爬系统判定请求来自合法的人工访问,因此放行并返回真实的CSV文件。

内容的提问来源于stack exchange,提问作者user2623214

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 19:39:56