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 解密下载 B 站受 DRM 保护的内容(如付费课程、特定版权番剧等)。
传统工具通常需要安装 Python 运行时及第三方库(如 pywidevine、protobuf 等)才能处理 DRM 许可证协议。
BBDown 内置了纯原生 C# 实现的 Widevine Content Decryption Module (CDM):
- 零外部环境依赖:无需安装 Python、无需配置 pip 虚拟环境。
- 全自动流程:自动请求 B 站许可证服务器获取内容解密密钥,自动完成流解密,并与普通音视频一样无缝调用 FFmpeg 混流。
-
支持手动注入:对于特殊场景,也支持手动通过
--key和--kid传入已知密钥。
要解密 Widevine DRM 内容,必须提供一个有效的 Widevine 设备凭据文件(即 device.wvd)。
-
device.wvd是从具备 Widevine L3 支持的真实设备或合规环境中提取的 CDM 凭证。 - 请从可信来源获取或自行提取(常见于各类 Android/Chrome CDM 提取工具)。
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 格式),可以直接手动传入,跳过 CDM 握手:
BBDown --key "0123456789abcdef0123456789abcdef" --kid "fedcba9876543210fedcba9876543210" <URL>-
报错
Cannot find device.wvd: 未检测到设备凭据文件。请确认文件名确为device.wvd并放置在程序所在目录。 - 获取许可证返回 403 / 失败: 请检查当前登录账号是否已购买该课程/番剧。DRM 解密无法绕过账号的购买鉴权,必须拥有合法的播放权限。
-
某些 1080P/4K DRM 无法解密:
取决于
device.wvd的security_level(通常提取的为 L3 级别)。B 站部分最高画质仅向硬件 L1 设备下发密钥,此时程序会回退到 L3 允许获取的最高画质。
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)