SuperAPI AI 工具集

sd-download

写作与研究

查看项目

更新于 10-15 20:28

技能介绍

用途:从 ScienceDirect 文章页面下载 PDF 文件到用户本地磁盘。前提是用户对文章有访问权限(机构订阅、开放获取或个人订阅);若文章在付费墙后且无权限,下载会失败。

单篇下载流程:先导航到文章页(URL 形如 {BASE_URL}/science/article/pii/{PII}),导航时注入 initScript 隐藏 webdriver 特征;再用 evaluate_script 等待页面加载并提取含 pdfft 的 PDF 链接,若检测到 .access-options、.get-access 等元素则返回无访问权限错误。随后导航到该 PDF URL,等待 5 秒检查页面状态:若 contentType 为 application/pdf 则直接进入下载;若出现 Cloudflare 的“Security verification”或“Are you a robot”,通过 take_snapshot 找到 iframe 中的“确认您是真人”复选框并 click(uid),等待 5 秒后复查,失败可重试一次,两次失败则提示用户在浏览器中完成验证;若标题为“请稍候…”则再等 5 秒复查。确认 PDF 已加载后,用 evaluate_script 创建带 download 属性的 a 标签并点击,以 PII 命名文件(如 S0022169426003136-main.pdf),并告知用户文件名。

批量下载:需登录,复选框和下载按钮仅对已登录用户可见。在搜索结果页用复选框选择文章(复选框 id 即 PII),再用 evaluate_script 勾选并点击 .download-all-link-button,或提交 form[action*="pdf/download"];找不到表单时提示用户可能需要登录。

PDF URL 模式为 {BASE_URL}/science/article/pii/{PII}/pdfft?md5={HASH}&pid=1-s2.0-{PII}-main.pdf,其中 md5 每次会话唯一,无法自行构造,必须从页面提取。

限制与说明:该技能设置为 disable-model-invocation: true,必须用 /sd-download 显式调用;开放获取文章无需认证;订阅文章需已认证(机构访问、VPN 或个人订阅);同一会话中解决一次 Cloudflare 后,后续 PDF 下载通常不再中断;下载失败时建议用户检查访问状态或尝试登录。