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

Windows11+Python3调用SEC API获取filings遇请求限制错误求助

解决SEC EDGAR请求错误:未声明的自动化工具/速率阈值超出

问题背景

环境:Windows 11、Python 3
尝试获取SEC filings时触发错误:请求速率阈值超出 - 你的请求来自未声明的自动化工具。已按官方示例配置请求头,仅发起单次请求,仍触发错误,怀疑是User Agent与限流的组合问题。

原代码:

def get01():
    myHeaders = {
        "User-Agent": "Example_Company admin@example.com",
        "Accept-Encoding": "gzip, deflate",
        "Host": "www.sec.gov"
    }
    url = "https://www.sec.gov/Archives/edgar/data/2062466/000206246625000004/wk-form4_1743625808.xml"
    response = requests.get(url, myHeaders)
    print(response.text)

核心原因

错误提示里的“速率阈值超出”是通用模板,实际问题并非限流(单次请求远低于10次/秒的官方限制),而是:

  1. 使用了SEC识别为无效的示例User-Agent
  2. 请求头传递方式错误,导致SEC未接收到你的合法声明

解决方案

  • 替换为真实的User-Agent信息
    SEC要求User-Agent必须包含真实的个人/组织名称+有效联系邮箱,不能使用示例中的"Example_Company admin@example.com"。比如改为:
    "User-Agent": "张三 zhangsan@example.com"
    邮箱需要是可联系到你的真实地址,这是SEC区分合法自动化请求和恶意爬虫的关键。

  • 修正请求头的传递方式
    原代码中直接把请求头传给requests.get的第二个参数,该参数实际是用于URL查询参数的params,正确做法是用headers关键字参数传递:

    def get01():
        myHeaders = {
            "User-Agent": "你的真实名称 your-real-email@example.com",
            "Accept-Encoding": "gzip, deflate",
            "Host": "www.sec.gov"
        }
        url = "https://www.sec.gov/Archives/edgar/data/2062466/000206246625000004/wk-form4_1743625808.xml"
        response = requests.get(url, headers=myHeaders)  # 此处必须指定headers=
        print(response.text)
    

    这是解决问题的核心——之前的请求头根本没被正确发送,导致SEC识别为未声明的自动化工具。

  • 检查IP是否被临时限制
    如果你的IP之前有过频繁请求记录(比如测试时多次重试),可能被SEC临时封禁。可以等待10分钟后重试,或切换网络(如手机热点)验证是否是IP问题。

  • 批量请求时添加延迟
    若后续需要批量获取 filings,建议在每次请求后添加至少1秒的延迟,避免触发速率限制:

    import time
    # 请求完成后添加延迟
    time.sleep(1)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:50:08