forked from nilaoda/BBDown
-
Notifications
You must be signed in to change notification settings - Fork 18
DRM Decryption
aliveranme edited this page Aug 18, 2026
·
2 revisions
本文档介绍如何在 BBDown 中使用内置的原生 Widevine CDM 解密并下载哔哩哔哩受 DRM 保护的内容(如付费课程 Cheese、特定版权番剧等)。
传统工具通常需要额外安装 Python 运行时及第三方库(如 pywidevine、protobuf、cryptography 等)才能处理 Widevine DRM 协议。
BBDown 内置了纯原生 C# 实现的 Widevine Content Decryption Module (CDM):
- 零外部环境依赖:无需安装 Python、无需配置 pip 虚拟环境。
- 全自动化流程:自动请求 B 站许可证服务器获取内容解密密钥,自动完成流分片解密,并无缝调用 FFmpeg 混流。
-
支持手动注入:对于特殊离线场景,也支持手动通过
--key和--kid传入已知密钥。
解密 Widevine DRM 内容必须提供一个有效的 Widevine L3 设备凭据文件(device.wvd)。
BBDown 在启动时会按以下优先级自动在系统中检索 device.wvd:
-
当前程序目录:直接将
device.wvd文件放置在与BBDown.exe相同的目录下。 -
环境变量
PATH目录:放置在任意已加入系统PATH的路径中。 -
操作系统标准路径:
- Windows:程序所在目录
-
macOS:
/opt/homebrew/bin或/usr/local/bin -
Linux:
/usr/local/bin
-
显式命令行指定:通过
--wvd-path手动指定:BBDown --decrypt-drm --wvd-path "/path/to/device.wvd" <URL>
确保已登录拥有该课程购买权限的账号(执行过 BBDown login),然后追加 --decrypt-drm:
BBDown --decrypt-drm "https://www.bilibili.com/cheese/play/ep1243104"内部执行流程:
- BBDown 检测到 DRM 流(
drm_tech_type=2)。 - 从本地加载
device.wvd构建 CDM 客户端。 - 向 B 站许可证服务器发送 Challenge 请求并获取解密密钥(Key & KID)。
- 对下载的加密分片完成原生解密,并混流为标准
.mp4文件。
如果已通过其他方式获取了该视频的解密 Key 和 KID(Hex 字符串),可以直接手动传入:
BBDown --key "0123456789abcdef0123456789abcdef" --kid "fedcba9876543210fedcba9876543210" <URL>-
报错
Cannot find device.wvd: 未检测到设备凭据文件。请确认文件名确为device.wvd并放置在程序所在目录。 - 获取许可证返回 403 / 失败: 请检查当前登录账号是否已购买该课程/番剧。DRM 解密无法绕过账号的购买鉴权,必须拥有合法的播放权限。
- 部分超高清画质未下发密钥: B 站部分最高画质仅向硬件 L1 设备下发密钥,L3 凭据通常可解密 1080P 及以下画质,此时程序会自动选择 L3 支持的最高画质。
| 上一篇 | 目录导航 | 下一篇 |
|---|---|---|
| ⬅️ 批量下载与自动化脚本 | 📑 返回目录 | API 服务器与 Docker 部署 ➡️ |
BBDown Wiki · 由 aliveranme/BBDown 维护 · 基于 MIT 协议开源
- 🏠 首页 (Home)
- 🚀 快速上手 (Getting Started)
- ⚙️ 全命令行参数详解 (CLI Reference)
- 🔑 账号登录与鉴权 (Authentication)
- 📝 配置文件与命名规则 (Configuration)
- 🛠️ 子命令使用指南 (Subcommands)
- 💬 弹幕与评论区抓取 (Danmaku & Comments)
- 📦 批量下载与自动化 (Batch & Automation)
- 🔓 Widevine DRM 原生解密 (DRM Decryption)
- 🌐 API 服务器与 Docker 部署 (API & Docker)
- 🏗️ 内部架构与设计原理 (Architecture)
- 💻 开发者指南与编译构建 (Developer Guide)
- ❓ 常见问题与故障排查 (FAQ)