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

如何为AutoHotkey UrlDownloadToFile的SEC请求设置合规请求头

解决方案

原生AutoHotkey自带的UrlDownloadToFile命令不支持自定义请求头,无法满足SEC的访问要求,直接换用Windows系统内置的WinHttp组件实现下载即可,不需要安装任何额外软件、编译器或者第三方库,全量支持自定义所有要求的请求头。

可直接复用的实现代码

把代码里的占位信息替换成你自己的真实信息即可使用:

; -------------------------- 配置项 开始 --------------------------
; 必须替换为合规的User-Agent,格式:你的主体名称 联系邮箱,例:"MyResearchTeam contact@mycompany.com"
sUA := "你的个人/企业名称 你的有效联系邮箱"
; 替换为你要下载的SEC文件地址
sURL := "https://www.sec.gov/Archives/edgar/data/<document ID>/xslFormDX01/primary_doc.xml"
; 替换为本地文件保存路径
sSaveAs := "C:\sec_files\primary_doc.xml"
; -------------------------- 配置项 结束 --------------------------

; 创建请求对象(Windows系统内置,无需额外下载)
req := ComObjCreate("WinHttp.WinHttpRequest.5.1")
req.Open("GET", sURL, false)
; 按SEC要求设置全部请求头
req.SetRequestHeader("User-Agent", sUA)
req.SetRequestHeader("Accept-Encoding", "gzip, deflate")
req.SetRequestHeader("Host", "www.sec.gov")
; 发送请求并保存文件
req.Send()
FileDelete, %sSaveAs%
FileAppend, %req.ResponseBody, %sSaveAs%

提示:如果下载后的文件出现乱码,把代码里的req.ResponseBody替换为req.ResponseText即可自动处理gzip解码。
注意:必须控制请求频率,每秒请求数不能超过10次,建议每次请求后加150ms以上的间隔,避免被拦截。

你提到的其他方案说明

  • edgarWebR是R语言生态的第三方工具包,它的EDGARWEBR_USER_AGENT环境变量仅对R环境下调用该包发起的请求生效,和AutoHotkey脚本完全无关,配置后不会生效。
  • 你找到的第三方AHK替代UrlDownloadToFile函数是纯AHK编写的,不需要C编译器,使用时只需要把函数代码粘贴到你的脚本顶部,或者把对应ahk文件放到脚本同级Lib目录即可调用,但本质和上面给出的WinHttp实现逻辑一致,直接用上面的代码更简洁,不需要额外引入第三方代码。
  • 论坛提到的UrlMkSetSessionOption方案仅能修改全局User-Agent,无法自定义Accept-Encoding等其他请求头,还会影响进程内所有HTTP请求的默认配置,不推荐使用。

请求头相关问题说明

  • Host头绝大多数HTTP客户端会默认自动填充为请求的目标域名,正常情况下不手动设置也不会触发拦截,手动添加只是为了完全匹配SEC给出的合规要求,避免极端场景下被误拦截。
  • Accept-Encoding头如果不设置,不会直接导致访问被拦截,但会让服务端返回未压缩的内容,拉低传输效率,建议按要求配置。

合规提醒

User-Agent里填写的联系邮箱必须真实有效,SEC如果监测到异常流量会通过该邮箱联系你,填写虚假信息会导致IP被永久封禁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:54:23