Agent Skills
返回列表
动态网页PDF文件下载

动态网页PDF文件下载

数据分析 更新于 2026.08.30

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_d77d75f9/web-file-downloader-f3024541。

技能介绍

解决什么问题

很多政府公告、国企采购平台和企业内部 OA 的附件并不直链到 .pdf。页面上的下载按钮往往指向 javascript:void(0),点击后才由前端代码临时向接口要一个加密的 filePath,再拼接成下载或预览 URL。用 curl 直接抓固定地址拿不到文件,盲目重放请求又常被 Referer、Cookie 或动态参数拦下。这个技能要解决的就是:在只有浏览器可见的运行时环境里,逆向出真正的下载地址并把文件取回本地。

核心方法:五步法

技能不依赖站点自身暴露的固定链接,而是用浏览器自动化完成一次完整的请求追踪:

  • 第 1 步:注入响应监听钩子。 在页面主执行环境(use_main_world: true)注入 XHR 拦截器,同时 hook open 与 send,用 __oP 标志避免重复注入,并截取每个响应的前 8000 字符。
  • 第 2 步:触发文档请求。 通过页面内路由切换重新发起 API 调用;若附件需要点击才加载,则先 browser_snapshot 找到含 .pdf 文字的链接,再 browser_click 并等待 4~5 秒。
  • 第 3 步:读取捕获的接口响应。 从 JSON 中识别 FILE_PATH、fileId、FILE_NAME 等字段;响应过长时按 slice(0,2400) → slice(2400,4800) 分段读取。
  • 第 4 步:在前端 JS 源码中找下载模板。 常见形态包括 window.open(adr + "/index/downLoadWinFile?filePath=" + ...)、PDF 预览器加载、fetch 请求或动态设置 link.href。
  • 第 5 步:拼接 URL 并用 curl 下载。 下载后必须验证文件完整性,避免拿到 HTML 或 0 字节占位文件。

执行约束

这些约束来自实测,违反会导致任务失败:

  • 所有 browser_evaluate 必须带 use_main_world: true,否则脚本跑在隔离沙箱,拦截不到真实请求。
  • 禁止 browser_take_screenshot,截图会撑爆上下文 token 并触发熔断。
  • 单次 evaluate 输出控制在 2500 字符以内,超过会被截断。
  • 不要连续执行相同 JS,browser_evaluate 调用次数上限为 6 次。

适用边界

技能已收录国网电商平台(ecp.sgcc.com.cn)的实测模板,其 filePath 为十六进制加密且含 | 分隔符,请求需携带 Referer 并对参数做 URL 编码。其他站点请按五步法动态分析。

它不适用于:页面已有明确 .pdf/.doc 直链(直接 curl 即可)、需要登录或付费才能访问的文件、以及受版权保护的非公开内容。遇到登录拦截时先引导用户完成登录,不绕过权限验证。

使用场景

  • 在公共资源交易中心查看招标公告,附件按钮是 javascript:void(0),需要逆向提取加密路径并下载 PDF。
  • 在国网电商平台下载中标通知书,页面不提供直链,需要利用已验证模板拼接带 Referer 头的下载 URL 获取文件。
  • 在企业内部 OA 系统的文档预览页提取知识库附件,通过注入 XHR 钩子捕获接口响应,还原真实下载地址。

适合人员

  • 招投标专员,每周需要从多个政府采购网手动下载招标和中标 PDF 附件,但常因动态加载按钮失效而无法获取文件。
  • 数据分析工程师,在采集国企采购平台公开数据时,遇到动态附件无法用常规脚本抓取,需要逆向前端提取真实接口。
  • 企业行政主管,负责归档内部 OA 系统文档,面对预览页的动态加载链接,需要自动化提取并保存 PDF 附件。