网盘直链下载助手(netdisk-hub)
一个油猴脚本(Tampermonkey / Violentmonkey),在网盘页面勾选文件 → 一键换取直链 → 推送给 Aria2 / IDM / 浏览器高速下载,绕开客户端限速与浏览器单线程的慢。
支持:百度网盘 · 夸克网盘 · UC 网盘
快速用法
- 安装脚本管理器(Tampermonkey / Violentmonkey / ScriptCat)
- 新建脚本,粘贴
netdisk-hub.user.js 保存
- 打开百度或夸克网盘页面,勾选要下载的文件
- 点工具栏上的「下载助手」→ 直链自动出现 → 选一个出口(Aria2 / 下载 / 复制)
文件夹换不出直链(网盘接口只收文件 ID),请进入文件夹后勾选其中的文件。
直链与账号的关系(必读)
一句话:直链就是「你当前登录的账号」在网盘上点「下载」会得到的那条地址。 脚本只做「提取与转交」,不改变账号权益。直链由网盘服务端按账号身份签发,下载速度也由服务端按账号判定。
VIP 账号 vs 普通账号
| 账号 |
换链接口 |
下载速度 |
| 会员(SVIP / 超级会员) |
与普通账号同一条接口,无专属换链通道 |
会员速度(服务端按 Cookie 里的账号身份放行) |
| 普通账号 |
同上 |
普通速度(网盘对非会员限速) |
| 未登录(游客) |
百度不可换;夸克可换但有单文件大小上限(超限报 23018 错误) |
最低档限速 |
脚本不能把普通账号变出会员速度 —— 那是服务端按 Cookie 判定的,任何直链工具都一样。脚本能保证的是:你账号本来就有的权益,通过 Aria2 / Motrix / IDM 多线程跑满,而不是被浏览器单线程浪费掉。
各网盘直链获取条件
| 网盘 |
换链接口 |
需要登录 |
直链校验 |
特殊说明 |
| 百度网盘(分享页) |
tplconfig 取签名 → sharedownload 换 dlink |
✅ 必须(Cookie 里的 bdstoken / jsToken) |
下载需 UA pan.baidu.com + Referer + Cookie |
超过分享直接下载上限的文件需「保存到网盘」后在内页取 |
| 百度网盘(内页) |
静默 OAuth 授权 → xpan/multimedia?method=filemetas&dlink=1 |
✅ 必须(开放平台 access_token) |
同上 |
首次使用自动完成授权,令牌缓存复用 |
| 夸克 / UC 网盘 |
drive-pc.quark.cn / pc-api.uc.cn 的 file/download |
建议登录(未登录有大小上限) |
下载需客户端 UA + 页面 Referer + Cookie |
夸克与 UC 共用采集逻辑,但接口地址与客户端 UA 不同,脚本按域名自动区分 |
直链的时效与使用要点
- 直链带签名,有时效(几分钟到几小时不等)—— 换到后尽快推送,过期了重新获取
- 请求头必须随行:直链不是裸地址,网盘会校验 UA / Referer / Cookie,脚本已自动随直链保存并带入 Aria2 推送
- 错误提示直达根因:未登录 → 提示登录;游客超限 → 提示登录后获取;分享页过期 → 提示刷新页面
功能一览
| 功能 |
说明 |
| 勾选即识别 |
读页面框架状态(React / Vue props)拿勾选文件,精确;框架读不到时 DOM 兜底 |
| 自动换链 |
打开面板即自动换取直链,分批 + 节流避免触发风控 |
| 直链捕获(兜底) |
hook XHR / fetch,通过三条高置信渠道(URL 特征 / 响应体 dlink 等键 / 响应头 Content-Disposition)截获 |
| 一键推送 Aria2 |
JSON-RPC aria2.addUri,自动携带文件名、保存目录与业务请求头 |
| 批量操作 |
全部推送 / 复制全部直链 / 复制命令行 |
| 任务历史 |
最近 20 条推送记录持久保存 |
下载出口
每条直链固定三个出口:
| 出口 |
说明 |
| 推送 Aria2 |
JSON-RPC aria2.addUri,自动携带业务请求头(UA / Referer / Cookie) |
| 下载 |
隐藏 iframe 触发浏览器原生下载 |
| 复制 |
复制原始直链,可粘到任意下载工具 |
可选出口(默认关闭,在「设置 → 偏好设置」打开):
| 出口 |
说明 |
| IDM |
通过 IDM 本地捕获端口(127.0.0.1:1001)推送 |
入口
脚本提供两级入口,确保改版也能用:
- 网盘工具栏按钮(首选) —— 注入到宿主工具栏最右侧,与原生按钮并排
- 脚本管理器菜单(兜底) —— 点脚本管理器图标 → 菜单中的「打开下载助手」
不注册任何全局快捷键,不生成悬浮球。
配置 Aria2
在「设置」页填写:
| 字段 |
默认值 |
说明 |
| 服务器地址 |
http://localhost:6800 |
Motrix 用户填 http://localhost:16800 |
| 密钥 |
空 |
对应 rpc-secret |
| 保存目录 |
空 |
留空使用 Aria2 默认下载目录 |
| 接口路径 |
/jsonrpc |
一般无需改动 |
填完点「测试连接」,显示版本号即通路正常。
界面设计原则
面板是操作面板,不是数据看板。
- 下载页只有一张「可用直链」主卡,空列表只给一句语境化提示(去勾选文件 / 进入文件夹),不展示统计
- 批量按钮仅在有条目时出现,行内固定三出口(Aria2 · 下载 · 复制)
- 设置页两张卡:Aria2 服务器配置 + 偏好设置
- 偏好设置每项都是「名称 → 短说明 → 开关」,说明紧跟控件右侧,不放问号角标
- 结果在面板里看得见的不弹 toast;看不见的(推送队列、剪贴板)才弹
- 换链失败改为内联错误提示(比弹窗好:一直可见)
目录结构
netdisk-hub/
├── netdisk-hub.user.js # 主脚本(零第三方依赖,UMD 导出)
├── README.md
└── test/
└── smoke.js # 冒烟测试(76 项,require 真实脚本)
测试
node --check netdisk-hub.user.js # 语法校验
node test/smoke.js # 冒烟测试
已知限制
- 文件夹换不出直链:网盘接口只收文件 ID。勾选含文件夹时脚本自动剔除并给出提示,请进入文件夹后再勾选其中的文件
- 百度首次使用需授权:自动完成(抓授权页表单并提交确认),缓存令牌复用
- 夸克 / UC 的直链时效较短:建议换出后尽快推送
- 被动截获只是补充:换链已覆盖的网盘请直接勾选后获取,无需先点「下载」
- IDM 推送依赖较新版本 IDM 的本地捕获端口
- 注入入口可能被宿主改版影响:面板「关于」页显示注入状态,入口失效时用脚本管理器菜单兜底