





























你有没有遇到过这种情况:一个文件在浏览器里点击就能下载,但把链接丢到下载工具、aria2、wget 或 curl 里就 403 了?
最近想在 NHK 网站上下载一批 PDF,丢给 aria2 直接被拒,加了 User-Agent 也不行。但浏览器打开链接,秒下。
原因很简单:浏览器发请求时会自动带上 Cookie、User-Agent、Referer 等一堆 Headers,而外部下载器发的是"裸请求"。现在越来越多的网站(尤其是需要登录的站点)会校验这些信息,裸请求直接被拦。
我试了几种常见的解决办法:
给 aria2 手动加 Headers——理论上可以,但需要从浏览器开发者工具里一个个复制 Cookie、UA、Referer,遇到带 token 的链接还会过期,操作很繁琐。
浏览器转发扩展(比如把下载任务从浏览器发到 aria2 RPC)——这些扩展能转发 Headers,但只能拦截你在浏览器里点击的下载,不能批量粘贴一堆 URL 进去。
市面上的批量下载扩展——看了一圈,要么收费,要么权限要一大堆,要么下载时并不走浏览器原生通道——又绕回了丢 Cookie 的老问题,要么项目早就没人维护了。
想明白一件事:既然浏览器下载没问题,那就让浏览器自己来下载。
Chrome 允许扩展调用浏览器自身的下载能力,效果等同于你在地址栏输入链接按回车——Cookie、UA、Referer 全部自动携带,不需要你手动配置任何东西。
基于这个思路,我做了 Native Batch Downloader。
就这么简单。下载进度、成功/失败统计、实时日志都在弹窗里显示。

实测批量下载 66 个 PDF 文件(最大 120MB),全部正常完成。
支持什么文件类型? 不限。PDF、图片、视频、压缩包、可执行文件,只要 URL 是直链就行。
并发数多少合适? 默认 10。但浏览器对同一个网站有并发连接数限制,所以下载同一个站点的文件时,设再高也不会更快。跨站下载时高并发才有意义。
需要登录的网站能用吗? 能,只要你在浏览器里已经登录了。扩展走的就是浏览器自己的请求通道,登录态天然携带。
URL 必须是直链吗? 是的。如果一个网站是点按钮后 JS 动态生成临时下载地址的(比如网盘的"点击下载"),你需要想办法拿到实际的文件 URL。这个扩展不负责解析页面。
权限要了哪些? 只需要"下载"权限,不会读取你的浏览记录、网页内容或其他隐私数据。无第三方依赖,支持 18 种语言,代码完全开源可审查。
开源地址:https://github.com/rockbenben/native-batch-downloader
MIT 协议,有需要的直接用。问题和建议欢迎提 issue。
Chrome Web Store 已提交审核中,不想等的可以直接从 GitHub 下载源码,在 chrome://extensions/ 开发者模式下加载。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。