
有些文献不是找不到,而是网页能打开,命令行却 403。
你坐在浏览器前,学校图书馆已经登录,WebVPN 也通了,出版社页面能打开,PDF 按钮也在那里。你手动一点,它就下来了。
但只要换成命令行,换成脚本,换成一个批量下载工具,事情立刻变成另一副样子:403、401、登录页、CAS、出版社验证,或者一个看起来像 PDF、其实是网页的假文件。
这就是我觉得 zju-literature-downloader 值得单独拿出来讲的地方。它不是一个“万能下文献神器”,更不是绕过付费墙的灰色爬虫。它真正戳中的点是:科研 Agent 想碰文献下载这件事,入口不该是蛮力抓网页,而应该是用户已经授权的浏览器会话。

真正的问题不是 DOI,而是会话
以前我们谈文献自动化,习惯从 DOI 开始。给一个 DOI,去 Crossref 查元数据,去出版社拼链接,再想办法把 PDF 拿下来。
这条路在开放论文、预印本、机构仓储上很顺。但一到学校图书馆、WebVPN、出版社授权页面,它就经常断。因为浏览器里能打开,不代表脚本也拥有同一份授权上下文。
网页知道你是谁。脚本不知道。
浏览器里有登录状态、WebVPN 路由、CAS 会话、出版社跳转、可能还有一次手动完成的人机验证。命令行里通常只有一个孤零零的 URL。
所以这类工具最有价值的地方,不是“更会拼 PDF 链接”,而是承认一件事:授权本身在浏览器里。Agent 要做的,是在这个已授权现场里小心接力,而不是假装世界上只有 curl。
这个项目做了什么
`baihe26/zju-literature-downloader` 是 6 月 16 日出现的一个 GitHub 项目。README 里写得很直白:它是一个 Codex / Claude skill,用用户自己已经登录的浙江大学图书馆、WebVPN、Summon 或出版社 Chrome 会话,合法下载、重试和读取学术 PDF。
它覆盖的不是所有学校,也不是所有出版社。它的默认场景很窄:浙大图书馆 / WebVPN / 求是学术搜索 / 出版商页面。
但窄不一定是坏事。
窄,说明它没有把问题讲成“全网文献随便下”。它讲的是一个更具体、也更真实的工作流:我本人已经有访问权限,浏览器已经能打开,现在怎样把这些 PDF 稳定、可追踪、可验证地保存到项目文件夹里。

我更关心它后半段:验证
下载 PDF 只是第一步。真正容易出事故的是后面。
你以为下载成功了,结果保存下来的是登录页。
你以为拿到了主文,结果 supporting information 漏了。
你以为 PDF 能读,结果 Agent 打开后一页文本都抽不出来。
这也是这个项目比普通下载脚本更像“科研工具”的地方:它不只拿文件,还会记录 manifest,检查 PDF 签名、页数和文本可读性。README 给的验证案例里,主文 17 页,补充材料 31 页,并且都能抽出文本。
这一步很关键。因为科研 Agent 后续要总结、引用、抽图、做表格,前提不是“文件存在”,而是文件确实是那篇论文,而且可读。
边界比功能更重要
这类工具最容易被写歪。
如果标题写成“AI 帮你突破学校文献下载限制”,那就完全错了。
README 反复强调边界:不绕过付费墙,不绕过 CAPTCHA、Cloudflare、双因素认证、出版社机器人检查、DRM 或账号限制。遇到扫码、短信验证码、OTP、人机验证、出版社安全提示,用户自己在 Chrome 里完成,Agent 只是在之后从同一个页面继续。
它还建议小批量使用:一次 5 到 10 篇比较稳,最多 15 到 20 篇;不要扫关键词结果,不要下整期杂志,不要大规模连续下载,也不要并发打开一堆 ScienceDirect 标签。
这其实是一条很好的科研自动化原则:自动化负责重复动作,人负责授权和边界。

为什么我还是愿意写它
这个项目的问题也明显。ZJU / WebVPN 场景太窄,和之前写过的 scansci-pdf 强相邻。单看项目本身,它不一定值得写成“工具推荐”。
但它适合写成一篇续篇。
因为 scansci-pdf 那类工具解决的是“Agent 要有一套论文获取系统”;而 zju-literature-downloader 提醒我们:如果论文在授权系统里,真正难的不是下载按钮,而是怎样把浏览器里的授权、人的验证动作、PDF 文件检查和后续阅读接成一条保守的链。
这比“批量下载”四个字重要得多。
科研人真正需要的,不是一个在后台猛冲的爬虫,而是一张小批量清单:哪些 DOI 要下,哪个页面打开过,主文有没有保存,补充材料有没有保存,页数对不对,能不能抽文本,哪里卡在 CAS,哪里等用户完成验证。
换句话说,manifest 才是这类自动化的账本。没有账本,下载越快,后面越不知道自己拿到了什么。
如果你要自己做,先看这张清单
第一,先确认访问权。浏览器里能通过学校图书馆、WebVPN 或出版社页面打开目标论文,才谈自动化。
第二,先小批量。5 篇、10 篇,带 DOI、题目、输出目录和状态列。不要上来就扫关键词。
第三,遇到验证就停。扫码、短信、OTP、人机验证、机器人检查,都应该由人完成。Agent 不应该猜、不应该点、不应该刷新到对方报警。
第四,下载后要验。PDF 签名、页数、文本可读性、supporting information,都要落到 manifest。
第五,不要把学校账号密码、验证码、cookie、session token 发给任何 Agent。
这五条,比某个具体下载脚本更值得带走。
我的判断
zju-literature-downloader 不是一个适合所有人的工具。
它太具体,太依赖浙大图书馆和 WebVPN,也很依赖用户本机 Chrome 会话。换个学校、换个出版社、换个认证方式,很多步骤都要重新验证。
但它指出了科研 Agent 接入真实世界的一个方向:不要总想着绕过界面,而是学会在合规授权的界面里接力;不要只追求下载成功,而是把文件验明正身;不要让 Agent 悄悄批量跑,而是让每一步都能回到一张 manifest。
未来科研工具的自动化,不会只有 API。很多时候,它会夹在浏览器、授权、人工验证和本地文件系统之间。
这类小项目的意义就在这里:它不是把门撬开,而是提醒你,先确认自己应该从哪扇门进去。
来源与延伸
项目:GitHub|baihe26/zju-literature-downloader|https://github.com/baihe26/zju-literature-downloader
README 关键信息:用户已登录的 ZJU Library / WebVPN / Summon / publisher Chrome session;不绕过 CAPTCHA / Cloudflare / OTP / bot check;小批量使用并保留 manifest;验证 PDF 签名、页数和文本可读性。
往期推荐
如果你关心科研 Agent、文献获取和真实工作流,这三篇可以接着读。
scansci-pdf:给 AI Agent 装一套论文获取系统
把 VASPKIT 交给 Codex,晶体计算的苦活会少很多
Materials Studio 交给 Codex,先从脚本和日志开始

夜雨聆风