访问SEC数据URL时出现403 Forbidden错误的排查求助
解决SEC API 403 Forbidden错误的方法
核心原因
SEC公开数据API会拦截未携带合法User-Agent标识的请求,R语言jsonlite::fromJSON默认请求头缺少该信息,因此被服务器拒绝;而浏览器会自动附带符合要求的请求头,所以能正常访问目标URL。
修复步骤
- 添加自定义请求头:必须在请求中包含
User-Agent,格式建议为你的邮箱地址(SEC要求提供有效联系方式,用于识别非恶意请求),同时可添加Accept-Encoding提升请求效率。 - 借助
httr包发送请求:fromJSON无法直接自定义请求头,因此先用httr发送带请求头的GET请求,再解析响应内容。
示例代码
library(jsonlite) library(httr) # 替换为你的邮箱地址 user_agent <- "Your Full Name your.email@example.com" url <- "https://data.sec.gov/submissions/CIK0000320193.json" # 发送带请求头的请求 response <- GET( url, add_headers( "User-Agent" = user_agent, "Accept-Encoding" = "gzip, deflate" ) ) # 解析响应内容 if (http_status(response)$category == "Success") { df <- fromJSON(content(response, "text"), flatten = TRUE) print(head(df)) } else { stop("请求失败:", http_status(response)$message) }
额外注意事项
- VPN节点问题:若使用VPN仍报错,可能是当前节点被SEC拉黑,更换美国本土节点尝试。
- 请求频率限制:SEC API有请求频率管控,短时间内不要发送大量请求,避免被临时封禁。
内容的提问来源于stack exchange,提问作者Jcrowe10
相关产品推荐
相关产品推荐

