Skip to content

📺 Bili Downloader Lite ​

3.3:任务页改为紧凑列表与单层详情,支持直接打开文件和独立日志窗口。见 3.3 发布说明。

简洁、原生的 Bilibili 视频解析与下载工具 ​

Bilibili 链接 / BV / av · 分 P 选择 · 当前账号可用画质 · 应用内扫码登录 · Windows x64

导航
下载最新版 · v3.3 发布说明 · 主要功能 · 从源码运行 · 安全策略 · 使用声明 · 许可证

PlatformRuntimeUIDownloaderReleaseLicense


本项目仅用于合法、授权、个人备份或学习场景。使用者应确保自己拥有下载和使用相关内容的权利,并遵守 Bilibili 服务条款及所在地法律法规。本项目与 Bilibili 官方无关,不提供或支持会员、付费、地区、风控、DRM 等限制的绕过能力。

📦 下载与使用 ​

v3.3 任务页减少卡片嵌套,按任务状态展示操作;保留队列角标、下载模式与画质偏好。见 3.3 发布说明 和 验证记录。

Windows x64 正式版本请从 GitHub Releases 获取。3.3 的资产名称为:

  • 完整应用包:BiliDownloader.v3.3.win-x64.zip
  • 软件物料清单:BiliDownloader.v3.3.sbom.json
  • 校验文件:SHA256SUMS

完整解压对应版本的 ZIP 后运行其中的 BiliDownloader.v3.3.exe,保留相邻的后端 EXE 和运行库。包中包含 .NET、Windows App SDK 和 Python 运行时,无需另装这些运行环境。下载前请自行准备合法来源的 ffmpeg.exe,并选择以下任一方式放置:

  1. 放入主程序相邻的 tools\ffmpeg.exe。
  2. 将 FFmpeg 所在的绝对目录加入系统 PATH。

程序不会下载、安装或捆绑 FFmpeg,也不会从任意当前工作目录执行它。

基本流程 ​

  1. 运行完整解压目录中的 BiliDownloader.v3.3.exe。
  2. 在“添加下载”粘贴链接、BV/av 号或分享文本。单视频点击“解析”,多个视频点击“批量解析多个链接”,一次最多 50 个。
  3. 如需账号权限下的更多可用画质,可在“账号”页使用应用内二维码扫码登录。
  4. 选择 MP4 或 MP3、分 P、画质和目录后“加入队列”。批量添加可用统一规格,也可逐项配置;默认只选择链接指向的分 P。
  5. 前往“任务”查看并行进度、结果、文件和日志,按需取消、重试失败项或继续未完成项;可同时回到添加页继续解析。
  6. 默认同时下载 2 个任务,设置支持 1—3 个。暂停队列不打断在途任务;重启后需确认继续,移除记录保留媒体文件。
  7. 下载页主动选择的 MP4/MP3 模式和画质会自动保存;在“设置 → 下载偏好”可直接调整,或关闭自动记忆。关闭后,本次会话的选择不会覆盖保存的偏好。指定画质不可用时需重新选择,MP3 不会清除视频画质偏好;设置变化不影响已入队任务。

WinUI 3 原生界面 ​

  • C#/.NET + XAML 使用 Microsoft 官方 Windows App SDK / WinUI 3;主窗口是真实 Microsoft.UI.Xaml.Window。
  • 使用 MicaBackdrop、TitleBar、NavigationView、Frame、独立 Page 和 InfoBar;系统管理 caption 按钮与窗口行为。
  • 采用默认 WinUI 控件、主题资源和焦点状态,提供跟随 Windows、浅色与深色偏好。
  • Python 后端移除 Qt 依赖,通过版本化 JSONL 管道提供解析、下载、取消、扫码、凭据和诊断服务。
  • 保留 yt-dlp、Bilibili URL 校验、二维码协议、DPAPI、FFmpeg 管理、失败分类和日志逻辑。详见 架构说明。

v2.8 下载与传输可靠性修复 ​

  • 输出文件名增加 [video-mp4-1080p]、[video-mp4-best] 或 [audio-mp3-192k] 等规格身份;不同画质和模式不再共用同一路径。
  • 同规格已有媒体会通过受控 FFprobe/FFmpeg 路径验证后直接复用,不重新下载源流;损坏或不匹配的同名文件原样保留,并使用带序号的新名称。
  • Bilibili legacy durl 合流 MP4 即使 codec 字段未知,也能按真实提取器来源通过 MP4/MP3 预检;显式无音轨和不可满足的严格高度继续拒绝。
  • 损坏的 IPC 终态在更新界面或移除任务前失败关闭连接,所有已接受/待响应调用都会明确收尾,Busy 与安全关闭不再悬空。
  • v2.7 安全边界继续保留在 历史发布说明。

✨ 主要功能 ​

🎬 视频解析与下载 ​

  • 支持标准 Bilibili 视频链接、b23.tv 短链、BV 号和 av 号
  • 支持分享文本与 Markdown 链接提取,保留分 P 参数并去掉分享追踪参数
  • 显示标题、UP 主、时长、封面、分 P 和当前实际可用画质
  • 支持音视频 MP4 和 192 kbps MP3 仅音频下载
  • 支持单 P 与多 P 选择、下载进度、取消、逐项结果和失败项重试
  • 通过 yt-dlp Python API 工作,不启动命令行子进程解析视频
  • 只展示当前账号、视频、地区和平台策略实际允许访问的格式

🧭 清晰的任务流程 ​

  • 添加下载页聚焦输入与规格,任务、账号和设置各有独立页面
  • 解析成功后再显示视频信息、分 P、画质、保存目录和下载操作
  • 任务页提供状态筛选、独立进度、取消、重试、排序和逐 P 结果;下载不阻止继续解析
  • 任务详情与脱敏日志按需展开;环境诊断位于设置页,登录与隐私说明位于账号页
  • 任务保存到本机,切页保留状态;使用登录态的下载在途时暂停账号变更,重启不会自动联网恢复

📱 应用内扫码登录 ​

  • 二维码由应用使用 Segno 在本地生成,不启动浏览器
  • 不要求输入账号密码,也不读取日常浏览器 Cookie
  • 覆盖等待扫码、手机确认、过期、刷新、取消、超时和网络异常状态
  • 候选 Cookie 经过允许列表和 Bilibili NAV API 验证后,才会原子保存
  • Windows 登录态使用 DPAPI 保护;匿名模式不会读取已保存凭据

🛡️ URL、封面与隐私边界 ​

  • 视频输入和短链最终目标只接受受支持的 Bilibili 官方 HTTPS 地址
  • b23.tv 重定向逐跳校验,拒绝协议降级、外域、循环、异常端口和 IP 地址
  • 封面只通过 HTTPS 从 Bilibili 或官方 CDN 读取,并限制响应类型、超时和实际 5 MiB 大小
  • 封面失败只影响封面展示,不会覆盖已经成功的视频解析结果
  • 不收集遥测,不上传视频链接、下载记录、Cookie、账号信息或日志

🪟 原生 Windows 桌面应用 ​

  • 前端使用 .NET 10、Windows App SDK 2.4.0(SDK 版本与应用版本独立);后端使用 Python 3.13、yt-dlp 和 PyInstaller
  • 保持 Windows x64 原生单窗口体验
  • 保留系统窗口按钮、缩放边框与窗口菜单;支持浅色、深色和跟随系统主题
  • 界面不使用 Qt、Electron、Tauri、HTML 或 WebView;SDK 自带的 WebView2 互操作依赖不用于页面渲染
  • 不安装或内置 Chromium,不提供浏览器 Cookie 导入
  • 支持多实例运行,并区分正常退出、异常退出和 PID 重用
  • 环境诊断默认只检查本地状态;只有用户主动点击“检查更新”时才访问 GitHub

🔐 安全与使用边界 ​

本项目不会尝试绕过会员、付费、地区、DRM、风控或其他平台限制。HTTP 412 等平台拒绝会被如实报告,而不会通过削弱校验或伪装请求来规避。

提交 issue、PR、截图或日志前,请删除 SESSDATA、bili_jct、DedeUserID、qrcode_key、refresh_token、完整扫码回调 URL、Cookie、session/profile 和可识别账号身份的信息。

完整要求请阅读 安全策略 与 使用声明。

🧰 从源码运行 ​

开发需要 Windows x64、Python 3.13 和 global.json 指定的 .NET 10 SDK(当前 10.0.400)。前端支持的最低系统目标为 Windows 10 1809;Mica 的实际效果由系统能力决定,完整窗口验收以 Windows 11 为主。Python 依赖锁包含传递依赖和 SHA-256;NuGet 使用 packages.lock.json:

powershell
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --require-hashes --only-binary=:all: -r requirements.txt
$env:BILI_BACKEND_PYTHON = (Resolve-Path .venv\Scripts\python.exe).Path
$env:BILI_BACKEND_SOURCE = (Get-Location).Path
dotnet restore BiliDownloader.WinUI --locked-mode -p:Platform=x64
dotnet run --project BiliDownloader.WinUI -p:Platform=x64
展开查看测试与打包命令
powershell
# 安装开发依赖,运行完整测试(已包含三组锁一致性验证)
python -m pip install --require-hashes --only-binary=:all: -r requirements-dev.txt
python -m pytest -q
python -m pip check

$env:BILI_TEST_PYTHON = (Get-Command python).Source
$env:BILI_BACKEND_SOURCE = (Get-Location).Path
dotnet run --project BiliDownloader.WinUI.Tests

# 构建自包含目录与 ZIP 候选包
.\build.ps1 -Clean
.\tools\package_smoke.ps1 -Executable .\dist\BiliDownloader.v3.3.win-x64\BiliDownloader.v3.3.exe

当前源码构建输出为 dist\BiliDownloader.v3.3.win-x64\ 与同名 ZIP;未提交构建会保留 dirty 标记。build.ps1 重新创建 build\.venv,使用哈希锁与 NuGet locked restore。python -m app.main 是兼容后端入口,UI 入口已迁移至 WinUI 工程。

PR/main CI 执行 Python 回归、WinUI 编译和 C# 管道测试,纯 Markdown 变更跳过。正式打包集中在 Release,校验前后端版本、原生启动、包内容及联合 SBOM,再生成摘要和来源证明。真实扫码、下载、DPI、读屏和窗口交互的外部验收单独记录。详见 发布检查清单 与 维护者说明。

🙏 致谢 ​

感谢以下开源项目及其维护者:

  • yt-dlp 提供持续维护的视频解析与下载能力
  • Windows App SDK 与 WinUI Gallery 提供官方 Windows UI API 与参考实现
  • Segno 提供本地二维码生成能力
  • Requests 提供受控的网络请求基础
  • FFmpeg 提供音视频处理能力,由用户自行安装和配置
  • PyInstaller 提供 Windows 应用打包能力

📄 许可证 ​

本项目采用 MIT License。你可以在许可证条款允许的范围内使用、复制、修改、合并、发布和分发本项目。

第三方组件仍遵循各自的许可证与通知要求,详见 THIRD_PARTY_NOTICES.md。

Cherry Chu · Projects, notes, and working documentation.