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

R语言访问SEC网站EDGAR数据返回403 Forbidden错误如何解决

解决方案

403错误的核心原因是SEC EDGAR服务器的反爬机制会拦截默认标识为R客户端的请求,你之前偶发成功是规则临时漏判,更换环境后请求特征完全命中拦截规则导致重试逻辑失效。以下是两种稳定可行的方案:

方案1:自定义请求头(最稳定,推荐)

使用httr包模拟浏览器请求,同时添加符合SEC要求的请求标识:
首先安装依赖包(已安装可跳过):

install.packages("httr")

请求代码:

library(httr)
url1 <- 'https://www.sec.gov/Archives/edgar/data/0001336528/0001172661-21-001865.txt'
# user_agent字段可自行修改,建议保留自己的联系邮箱,符合SEC爬虫规范
resp <- GET(url1, 
            user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36; your-contact@example.com"),
            timeout(30))

if (http_type(resp) == "text/plain") {
  # 读取文本内容,和readLines输出格式完全一致
  data1 <- strsplit(content(resp, as = "text", encoding = "UTF-8"), "\n")[[1]]
}

方案2:修改R全局HTTP配置(无需额外安装包)

直接修改R的全局默认请求标识,之后直接用原有readLines逻辑即可:

# 全局设置浏览器UA,R重启前生效
options(HTTPUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")
url1 <- 'https://www.sec.gov/Archives/edgar/data/0001336528/0001172661-21-001865.txt'
data1 <- readLines(url1)

补充注意事项

  • SEC官方要求爬虫请求频率不超过每秒10次,批量抓取时建议每两次请求间隔至少1秒,避免IP被临时封禁
  • 如需批量处理EDGAR归档文件,可直接使用专门的edgarR包,已封装好合规的请求逻辑,无需手动处理请求头配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:04