超级实用!做了一个多平台视频下载器(Chrome 插件 + 本地服务完全联动)

📌 超级实用!随意下载中意的音视频

不限平台,不限清晰度,不限账号地区。
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
  • Twitter
  • Instagram
  • Vimeo
  • Facebook
  • 小红书(部分可行)

🟢 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
都可以在后台留言,我会继续更新。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容