📌 超级实用!随意下载中意的音视频
不限平台,不限清晰度,不限账号地区。
YouTube(已经支持)、(规划支持)B站、抖音、Twitter、Instagram 等主流平台视频,可一键下载。
全程自动登录、自动抓取 Cookie、支持高画质与受限视频下载。
最近,我花了半天时间,做了一个非常实用的工具:一个可以自动获取浏览器 Cookie 的 Chrome 插件,并通过本地服务完成视频下载。
整个流程完全自动化,不需要手动导出 Cookie、也不需要在命令行里输入任何东西。
本篇文章就把整个实现过程记录下来,既是技术分享,也算是给对视频下载、跨平台工具感兴趣的朋友一份完整的“落地方案”。
🔧 一、为什么要做这个工具?
网上的下载工具很多,但:
❌ 1. 大部分不能下 油管 受限视频(需要登录)
比如:
- 年龄限制
- 区域限制
- 登录可见
- 播放列表私有视频
❌ 2. 很多网站对 油管 新的加密方式不兼容
特别是 2024–2025 年的 SABR / nsig challenge,导致:
Sign in to confirm you're not a bot
❌ 3. 浏览器插件无法直接处理视频流
而本地程序(例如 yt-dlp)能力强,却无法访问浏览器登录状态。
✔ 于是我决定弄一个最理想、最靠谱的方案:
⭐ **Chrome 插件(负责 Cookie & URL)
- Python Server(负责下载 & 解密)
- yt-dlp(负责跨平台视频解析)**
优点非常明显:
- 真正支持所有主流平台
- 支持登录后的受限视频
- Chrome 扩展自动获取 Cookie,无需手动导出
- Python 后端处理所有技术细节
- 完全本地运行、安全可控
- 全流程无人值守
📦 二、系统架构图(简单易懂)
┌──────────────────┐
│ Chrome 浏览器 │
│ ┌──────────────┐│
│ │Chrome 插件 ││
│ │- 注入按钮 ││
│ │- 自动导出Cookie││
│ │- 获取当前URL ││
│ └──┬────────────┘│
└────┼──────────────────┘
│ POST /update_cookie
│ POST /task/create
▼
┌──────────────────┐
│Python 本地服务 │
│- Flask API │
│- 管理任务/队列 │
│- 存储 cookie.txt │
│- 调用 yt-dlp │
└──────┬─────────────┘
│
▼
┌──────────────────┐
│ yt-dlp 引擎 │
│- 支持全部平台 │
│- 自动解密 nsig │
│- 合并视频+音频 │
└──────────────────┘
整个流程完全闭环,不依赖第三方网站,不存在内容泄露,所有数据都在本地。
🧩 三、Chrome 插件如何实现自动导出 Cookie?
Chrome 提供了一个非常重要的 API:
chrome.cookies.getAll()
当插件执行:
const cookies = await chrome.cookies.getAll({ domain: ".youtube.com" });
就能抓到浏览器当前登录的 YouTube 全部 Cookie。
包括:
- SID
- HSID
- SAPISID
- APISID
这些正是 YouTube 用于身份验证的关键令牌。
然后插件将其转换成 yt-dlp 可识别的 Netscape 格式:
# Netscape HTTP Cookie File
.youtube.com TRUE / TRUE 1900000000 SID xxxx
.youtube.com TRUE / TRUE 1900000000 HSID xxxx
最后:
👉 插件通过 POST 请求发送给本地 Python 服务
POST http://127.0.0.1:18888/update_cookie
Python server 将其保存成:
www.youtube.com_cookies.txt
让 yt-dlp 直接调用。
⚙ 四、Python Server 如何处理下载?
核心流程:
1)接收 URL,创建任务
插件发送:
POST /task/create
{
"url": "https://www.youtube.com/watch?v=xxxx"
}
Python 为每个下载任务创建一个 UUID。
2)启动下载线程
Python 使用 yt-dlp 完成实际的解析与下载:
ydl_opts = {
"format": "bestvideo+bestaudio/best",
"merge_output_format": "mp4",
"cookiefile": COOKIE_FILE,
"extractor_args": {
"youtube": {
"player_client": ["android", "web_safari"]
}
},
"exec": node_path, # 用于 nsig 解密
}
这里有两个关键点:
🔥 A. 使用 Node.js 解决 nsig + SABR 加密(2024–2025 必需)
YouTube 最新增加的复杂加密,必须借助 Node 环境完成 challenge 计算。
🔥 B. 强制 yt-dlp 使用更稳定的 Android / Safari 客户端
避免 web 客户端被限制导致部分视频无法解析。
最终视频将下载到:
downloads/
🎉 五、系统成功跑通后的能力
现在整个系统具备了以下特点:
🟢 1. 支持登录后的视频下载
✔ 年龄限制
✔ 私密播放列表
✔ 地区限制
✔ 登录可见视频
🟢 2. 支持多平台
只要 yt-dlp 支持的平台,这个系统都支持:
- YouTube
- Bilibili
- 抖音
- TikTok
- Vimeo
- 小红书(部分可行)
🟢 3. 无需手工导出 Cookie
之前大家常用的方式是手动安装:
Get cookies.txt
现在插件会自动生成并同步 Cookie,完全自动。
🟢 4. 避免 YouTube 账户被标记
相比第三方工具,这种方式更接近“官方行为”,不容易触发风控。
🟢 5. 最高画质 + 合并音视频
支持:
- 4K、8K
- HDR
- VP9 / AV1
- 独立音轨自动合并
📥 七、结语
这次开发花了不少时间,踩了不少坑:
- CORS 拦截
- Cookie Netscape 格式不兼容
- YouTube PlayerClient 适配
- SABR & nsig 失败
- Chrome MV3 背景脚本限制
但最终把整个 自动 Cookie → 自动解析 → 自动下载 的体系打通后,成就感还是很强的。
这个工具完全本地、完全可控、不依赖第三方服务,安全性和稳定性都非常高。
如果你对源码感兴趣、想要完整工程、或想继续扩展到 B站/抖音/Twitter
都可以在后台留言,我会继续更新。