BiliTools 深度解析:一款轻量 B 站下载工具箱的完整指南
【免费下载链接】BiliTools本项目已停止维护。项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools
看一部番剧想存到本地,除了视频本身,你可能还要弹幕、字幕、封面、AI 总结。手动一个个凑太麻烦。BiliTools 是一款基于 Tauri 2 的哔哩哔哩工具箱,把"贴个链接"到"拿到完整本地资源"这条路打通了:贴链接、选参数、进队列,剩下的解析、下载、合并、转换全部自动完成。本文带你从使用场景入手,讲清它到底能下什么、登录怎么做、数据存在哪。
它到底是什么:一个桌面应用,装好就能用
一句话定位:面向 B 站国内站的跨平台桌面下载器(仅支持 bilibili.com,不支持海外站)。
它的技术底座可以拆成四块:
- 前端:Vue 3 + TypeScript,界面代码在
src/目录,包含搜索、下载队列、历史、设置等页面; - 后端:Rust(Tauri 2.9.5),业务逻辑在 src-tauri/src;
- 三个内嵌组件:aria2c 负责下载、ffmpeg 负责合流和转码、DanmakuFactory 负责弹幕 XML 转 ASS,各平台二进制直接打包在 src-tauri/binaries,不用自己装任何东西;
- 本地存储:SQLite 数据库,配置、Cookie、任务记录都落在应用数据目录里。
当前版本 1.4.7(见 Cargo.toml)。README 中写明:项目自 v1.4.0 正式版起进入稳定状态、暂缓更新,所以它属于"功能已完整、处于维护收尾"的状态。
能下哪些内容:从视频到 AI 总结
先说人话结论:你贴进来的任何 B 站链接,它都能识别出类型,然后按需下载"正片 + 衍生资料"一整套。
链接怎么被识别。入口函数getMediaInfo按媒体类型分发到不同 B 站接口(见 data.ts):普通视频走/x/web-interface/view,自动展开分 P、合集(ugc_season)和互动视频;番剧走/pgc/view/web/season;课程走/pugv/view/web/season;音乐和歌单走music-service-c系列接口;收藏夹先拿列表再按 FID 取资源;还有稍后再看、UP 主投稿、专栏动态等。也就是说,番剧、课程、电影、音乐、歌单、收藏夹里的东西都能进队列。
画质和格式怎么挑。请求播放地址时会带上fourk: 1,登录账号还能拿到更高清晰度档位(qn登录 127 / 未登录 64),并按格式切换fnval:FLV=0、MP4=1、DASH=16/4048。选 DASH 模式时,普通音频、杜比音频(dash.dolby)、无损 FLAC(dash.flac)会一起进候选池——这就是它能下 4K/8K、HDR、杜比视界、杜比全景声和 Hi-Res 无损音乐的来源。
衍生文件怎么生成。视频下完之后,还有五类"周边"可以一起带走:
- 历史弹幕:按每 6 分钟一段(
Math.ceil(duration/360))循环请求/x/v2/dm/wbi/web/seg.so,拼回完整弹幕池(见 extras.ts); - 字幕 SRT:从播放器接口取字幕列表,按时间轴重排后存成
.srt; - NFO 刮削:按季度或单集生成
tvshow.nfo/ 单集 NFO,附标题、简介、演职员、时长等字段; - AI 摘要:调用
/x/web-interface/view/conclusion/get,把 B 站 AI 助手的总结整理成带章节锚点的 Markdown; - 元数据:下载完的音频/视频由 ffmpeg 写入基础元数据(
add_metadata,默认开启)。
下载怎么执行。真正干活的是 aria2c 侧车:后端启动它后,通过本地 JSON-RPC 下发addUri、暂停/恢复、删除等指令(见 aria2c.rs),并带上 bilibili 的 Referer/Origin 头过防盗链。界面侧是"备选区 → 任务组 → 任务 → 子任务"的层级队列,任务间按你设置的并发数并行,暂停的视频子任务支持断点续传,详细说明见 下载文档。
幕后机制:三种登录方式与账号风控
这部分决定了工具"能不能用",比"能下什么"更值得先看。
三种登录,成功率有高低。官方文档给出的排序是:扫码登录 > 短信登录 > 密码登录(见 login.md)。扫码的流程可以类比"在门口等外卖":前端调/x/passport-login/web/qrcode/generate生成二维码,后端每秒轮询一次/x/passport-login/web/qrcode/poll,检测到确认状态就写入 Cookie 和 refresh_token。密码登录要先取 RSA 公钥、把加密后的凭证连同极验验证码一起提交;短信登录则是发短信加验证的两步流程。
几个容易忽略的细节。登录本质是模拟 Chrome 浏览器走 Web API,所以账号后台看到的设备大概率显示"Chrome 浏览器";官方还提示密码/短信登录可能触发"未知设备"提示,密码登录目前受风控影响暂不可用——所以老老实实扫码。
签名与指纹。B 站的 WBI 参数签名由前端统一在请求层处理(代码里大量auth: 'wbi'调用);后端另有get_bili_ticket用 HMAC-SHA256 生成票据,get_buvid获取设备指纹(buvid3/buvid4)。登录成功后还会主动请求风控接口ExClimbWuzhi激活 Cookie 里的_uuid指纹(见 login.ts)。登录态快过期时,程序会检测/x/passport-login/web/cookie/info的刷新标志,自动走 refresh + confirm 两步换新 Cookie,不需要你手动重登。
一句话解释整套逻辑:签名、指纹、风控验证,都是在向 B 站证明"这是个正常浏览器",工具只是帮你自动完成了这些握手。
数据存在哪里:各平台目录与隐私边界
所有配置、Cookie、下载队列记录都存在 SQLite 里,数据库文件位于各平台应用数据目录下的Storage子目录(见 shared.rs 中STORAGE_PATH的定义):
| 平台 | 数据目录 |
|---|---|
| Windows | %APPDATA%\com.btjawa.bilitools\Storage |
| macOS | $HOME/Library/Application Support/com.btjawa.bilitools/Storage |
| Linux | $HOME/.local/share/com.btjawa.bilitools/Storage |
同一目录下还有两个值得知道的文件:aria2.session(aria2 的续传会话,删了它断点续传就失效)和日志文件。数据库里的表按职责分开:配置、Cookie、任务与调度器各一张(见 src-tauri/src/storage)。
隐私边界比较清晰:Cookie 存在本地 SQLite 里,请求默认走本机客户端,只有你在设置里填了 HTTP 代理地址,流量才会走代理(Proxy::all配置,见 shared.rs)。另外它内置 PCDN 过滤(block_pcdn默认开启),会剔除 PCDN 节点地址、替换为官方镜像域名,避免下载到不稳定的 PCDN 链接(见 queue.ts)。
适合谁、边界在哪
适合的人:想批量归档番剧/课程/合集的普通用户(视频+弹幕+字幕+封面一次配齐);用 Jellyfin/Emby 之类媒体库的用户(NFO 刮削 + 元数据写入是为它准备的);要离线保存音乐(FLAC 无损/320K)的用户。
不适合的场景:需要下载 Bilibili 海外站内容(仅支持国内站);期待持续新功能迭代的(项目已进稳定收尾期);没有对应会员权限却想看 VIP 资源的(见下面合规边界)。
几个常见问题:
- 为什么 VIP 视频下不了?工具基于你自己的账号解析资源。没有大会员或没购买对应内容,接口本身就不会给你那个地址,它不帮你绕过这一层。
- 装不装 aria2、ffmpeg?不用。三个二进制已按平台打包在 src-tauri/binaries,开箱即用。
- 界面支持中文吗?支持,简体中文、繁体中文、英文、日文四套语言包齐全(见 locales),启动时按系统区域自动选择,也可手动切换。
最后说清合规边界(项目 LICENSE 为 GPL-3.0-or-later):
- 仅支持你账号有权限访问的内容,不绕过鉴权、不破解付费资源;
- 下载内容的版权归原权利方所有,请遵守平台规则与相关法律法规;
- 二次分发必须保持开源、沿用相同许可证并保留原作者信息;
- 项目定位是学习与个人归档用途,使用后果由使用者自行承担。
想自己看源码的话,clone 仓库地址:https://gitcode.com/GitHub_Trending/bilit/BiliTools
【免费下载链接】BiliTools本项目已停止维护。项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考