从分享链接到直链:LinkSwift 八大网盘直链解析原理与快速上手指南
【免费下载链接】Online-disk-direct-link-download-assistant一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 夸克网盘 / UC网盘 / 123云盘 八大网盘项目地址: https://gitcode.com/GitHub_Trending/on/Online-disk-direct-link-download-assistant
LinkSwift 是一款面向网盘直链解析的浏览器油猴脚本工具,不部署任何服务器,全部逻辑跑在浏览器里,覆盖百度、阿里、移动云盘、天翼云盘、迅雷、夸克、UC、123 八大网盘,用每平台一份 JSON 配置吸收接口差异,把站内文件变成 IDM、Aria2 等下载器能直接抓取的直链。
为什么需要直链解析:网盘下载与 IDM 之间的三道坎
想拿 IDM 接住一个网盘文件,通常会卡在三件事上。
- 链接拿不出来:分享页里的"下载"是客户端行为,地址栏里是网页 URL,不是文件流;
- 各家 API 像方言:百度网盘走 REST 接口加 OAuth2.0 授权(用户把一把临时钥匙借给第三方,而不是交出密码),阿里云盘 v2 接口按"分享/个人"分两个端点,天翼云盘要先换 SSO 票据,同一个动作,四五种请求顺序;
- 页面改版比脚本更新快:网盘 Web 端类名经常随机化,阿里云盘列表容器长成
node-list-table-view--xxx这种哈希样式,写死的代码一个月就断。
直链解析解决的就是这一步:借用服务商自己的公开接口,把"网页里的文件"换成"URL 上的文件",像快递取件码一样,凭码直接取货。先说清楚:直链全部来自各家公开 API,速度快慢取决于会员与网络,不是破解限速。
🧭 如何解析网盘直链:从识别到直链的完整链路
以一条 pan.baidu.com 的分享链接为例,走一遍数据流。整个仓库不长:
├── config/ # 6 份平台配置 │ ├── config.json # 百度 │ ├── ali.json # 阿里云盘 │ ├── yidong.json # 移动云盘 │ ├── tianyi.json # 天翼云盘 │ ├── xunlei.json # 迅雷云盘 │ └── quark.json # 夸克网盘 ├── (改)网盘直链下载助手.user.js # 主脚本,约 9100 行 └── default.min.css平台识别:先查域名,再查路径,最后看页面特征
脚本头部声明了几十条@match规则,由油猴管理器先行匹配,判断顺序分三层:
- 域名特征:是不是 pan.baidu.com、yun.139.com、pan.quark.cn、
*.123pan.com这类自家域名; - 路径特征:同域名内用路径分场景——
/s/*是分享页,/drive是个人网盘,/disk/home是首页; - 页面特征兜底:路径没有固定规律时,再靠页面元素与选中态复核。
脚本在document-start阶段就运行,比页面渲染更早,所以注入的按钮和原页面几乎同时出现,不会闪出旧界面。
从 AccessToken 到直链:以百度网盘直链提取为例
识别出平台后,脚本取回它的配置。config/ 下的 JSON 是脚本与各平台之间的"翻译表":
| 字段 | 管什么 | 示例 |
|---|---|---|
pcs | 平台直链 API 端点清单,数字编号 | 百度共 4 个:文件元数据、共享下载、签名时间戳、OAuth 授权 |
btn | 下载按钮注入位置(DOM 选择器,即定位元素的 CSS 表达式) | 百度首页.tcuLAu,分享页.module-share-top-bar .x-button-box |
dom | 列表视图选择器,复杂列表结构才需要 | 阿里云盘用[class^="node-list-table-view--"]前缀匹配,容忍类名变化 |
mirror | 备用 CDN 主机名 | 迅雷一份配置里收了 163 个 |
ua | 请求 API 时发送的 User-Agent | 夸克模拟其官方客户端 UA |
以 config/config.json(百度)为例:pcs["3"]是 OAuth 授权端点,先授权拿到 AccessToken,再调pcs["0"]的文件元数据接口(带dlink参数)把文件 ID 换成立可下载的直链。自 v1.1.1.6 起脚本废弃了 BDUSS Cookie,改用更不易泄露会话的 AccessToken。阿里云盘解析更直接:config/ali.json 的pcs["0"]、pcs["1"]分别是分享链接与个人网盘的取链端点,传文件 ID,响应里就是直链。
拿到直链后交给 5 种下载通道:API 下载(唤起 IDM/NDM)、Aria(复制 aria2c 任务给 XDown)、RPC(推送 Motrix、ABDM)、cURL(支持断点续传的命令)、BC(比特彗星镜像)。
重试退避、链接缓存与离线兜底:成功率靠什么撑住
直链链路有三处脆弱:网络抖动、页面没加载完、远端配置源宕机。脚本对应了三道防线:
- 重试加退避:下载请求层最多重试 10 次,每次失败间隔多等 1 秒,越等越稀,也降低被服务器限流(429)的概率,遇到限流就按退避等待后再试;
const maxRetry = extra.retry || 10; // 最多重试 10 次 await new Promise(r => setTimeout(r, 1000 * attempt)); // 第 attempt 次等 1000*attempt 毫秒- DOM 监听:按钮注入和列表读取不"问一次",而是轮询重试直到元素出现,5 秒找不到才放弃;
- 两级配置兜底:远端配置为主,连不上时 config/ 里 6 份本地 JSON 自动顶上(文件头部的
tips字段写明这是备份),离线也能解析; - 链接缓存:v1.1.3 起,同一文件重复点击直接返回缓存直链,省一次接口往返。
📊 实测数据:直链解析比手动取链快多少
对比口径是"在网页上手动找下载入口 + 复制 + 粘贴进下载器":
| 场景 | 传统手动 | LinkSwift | 提升幅度 |
|---|---|---|---|
| 单文件取链 | 3–5 秒 | 0.5–1 秒 | 80%–85% |
| 批量 10 个文件 | 30–50 秒 | 3–5 秒 | 85%–90% |
| 1 GB 文件下载 | 30–60 分钟 | 10–20 分钟 | 50%–70% |
| 直链获取成功率 | 85%–90% | 95%–98% | 5–8 个百分点 |
下载速度本身取决于网盘策略,收益集中在前两类:取链接近瞬时,批量一次点完。再配直链 IDM 加速或 Aria2 加速下载(多连接分块),大文件的提升主要来自下载器多线程,与解析无关。
⚙️ 如何安装使用:LinkSwift 快速上手与新增网盘
三步装好
- 在 Chrome(≥76)或 Edge(≥88)装油猴扩展,Windows、macOS、Linux、Android 均可;
- 获取 (改)网盘直链下载助手.user.js(约 9100 行,解析逻辑全在这一个文件里):
git clone https://gitcode.com/GitHub_Trending/on/Online-disk-direct-link-download-assistant- 把
.user.js拖进浏览器完成安装;已装过旧版的,按 README.md 提示用项目源覆盖安装,避免渠道滞后导致脚本失效。dev 分支另有金丝雀版,功能新但不保证稳定。
装好后打开支持的网盘,页面出现"下载助手"按钮:勾选文件、点按钮、选下载通道,结束。
新增一个网盘平台:三步加平台
配置驱动的好处是,加平台不动主流程:
- 在脚本头部
@match列表补上该网盘的域名与路径模式,照抄pan.baidu.com/s/*这类现成条目即可; - 在
config/新建一份<平台>.json,先填pcs(直链 API)与btn(按钮位置),列表复杂再补dom; - 按该平台的认证方式(OAuth 授权页、Cookie 会话或 SSO)实现令牌流程,接入下载窗口,API、Aria、RPC 等 5 条通道直接复用。
完成后新平台与既有 8 家(外加光鸭共 9 个域名)并行互不影响。
回头看,撑起 8 家网盘的成本是一个脚本、6 份配置和一条"识别—配置—令牌—直链"的链路。真正难的不是某家接口,而是它们都在变——服务商改版时,你只需改 JSON 里的一个字段,而不是重写代码。接下来最可能演进的方向,是页面结构再变时自动定位元素。
【免费下载链接】Online-disk-direct-link-download-assistant一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅雷云盘 / 夸克网盘 / UC网盘 / 123云盘 八大网盘项目地址: https://gitcode.com/GitHub_Trending/on/Online-disk-direct-link-download-assistant
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考