BBDown v1.6.15
修复与安全性加固
- serve 模式令牌优先级修复:修复
--serve-token与BBDOWN_SERVE_TOKEN优先级反转缺陷,确保环境变量优先于 CLI 参数,并在两者同时设置且值冲突时记录警告日志。 - B 站官方域名白名单统一:抽取
HTTPUtil.OfficialHostSuffixes与IsOfficialBilibiliHost为唯一定义源,消除HTTPUtil.CookieTrustedHosts、UrlResolver.TrustedBilibiliHosts与BBDownApiServer.OfficialHostSuffixes之间潜在的白名单漂移风险。 - serve 并发限流与测试隔离:
/get-tasks族查询端点引入并发信号量限流(上限 8),防止高并发深拷贝任务快照耗尽 CPU/GC;将BBDownApiServer._persistFailures改为实例字段,杜绝并发测试实例间的状态串扰;新增--trusted-proxy选项以支持反代 XFF 客户端 IP 计键限速。 - 凭据外发与传输层纵深防御:带 Cookie 的请求在发送前强制校验目标是否为官方或显式配置的信任域名,拦截非可信凭据外发;
--insecure不安全连接的 Date 响应头不再参与全局时钟校准(防跨流 WBI 扰动);gRPC POST 拦截 3xx 重定向防凭据随跳转外发;媒体下载切换至禁用自动跳转的MediaDownloadClient;gzip 解压设定 48MB 安全上限防解压炸弹;gRPC 帧首字节合法性校验;异常消息回显前剥离控制字符。 - 解析与格式化修复:强制数字解析使用
CultureInfo.InvariantCulture避免特定区域设置下解析异常;完善 gRPC 必填参数校验;拦截负数分 P 参数;修复国际站(biliintl/bilibili.tv)域名匹配与解析容错;修复弹幕 ASS 格式化及分 P 别名缺陷。 - 分片清理一致性:统一轨道分片类型判定全部走
IsVideoClipPath(不区分大小写),修复DownloadClipsAsync返回分片路径处仍使用大小写敏感EndsWith(".mp4")判断的漏网,消除极端文件名下视频/音频分片.vclip/.aclip分类与清理规则错位的可能。
测试增强
- 全库测试扩充至 600+ 例:新增 serve token 环境变量优先级测试、B 站官方域名白名单覆盖测试、进程树哨兵验证、3-clips 分片哈希比对、查询并发信号量端点测试等。
Commits
- ci: create-release 只下载 BBDown_* 发布产物——排除 docker buildx 缓存 artifact,防偶发下载失败拖挂发布
- docs: 发布 v1.6.15——落定 CHANGELOG 版本号并补记分片清理一致性修复
- docs: 新增 REVIEW_FINDINGS.md——审查发现与建议跟踪(RF-1~RF-4,含已采纳/技术债/维持现状/待议)
- fix: 统一分片扩展名判定走 IsVideoClipPath——修复第 6 处大小写不一致漏网(844 行仍用区分大小写 EndsWith)
- fix: 修复 serve token 环境变量优先级、统一 B 站官方域名白名单源并补齐 CHANGELOG
- fix: 修复数字解析文化不变性、gRPC参数必填校验、分P负数拦截与投稿列表分页诊断
- fix: 修复国际站白名单、gRPC与JSON解析容错、弹幕ASS格式化及分P别名缺陷
- refactor: 补 H 组/I 组低风险项收尾——Pages.cs 悬空 XML 注释删除 + REVIEW_PLAN 状态更新
- refactor: 低风险可读性清理(H7/H12/H13 + I17-I20)——死代码、拼写、record 化、魔法数具名、注释归位
- fix: B3 补充安全加固 8 项——Cookie 白名单纵深防御、时钟偏移不可信源隔离、凭据请求禁跟随重定向、gzip 解压上限与帧校验、异常消息净控
- fix: D8 HTTP 查询并发上限——/get-tasks 族加查询信号量防无限深拷贝放大 CPU/GC
- fix: B3 独立安全审查——签名媒体 URL 日志脱敏穿透下载链路、畸形帧空判、WBI key 掩码
- test: 功能/韧性测试补齐(第 2 轮,5 项)——进程树哨兵验证、确定性断言、3-clips 字节级、直播与幂等分支
- test: 测试套件结构加固(第 1 轮,8 项)——failSkips 防静默跳过、墙钟改区间重叠、动态端口、捕获前值恢复、契约断言补全
- docs: 新增 REVIEW_PLAN.md——剩余 47 项审查修复全量排期(7 轮)
- test: 契约测试补齐——CSRF/认证限速/cancel 端点测试、413 契约对齐、看门狗 per-call 注入、程序集级串行
- fix: 应用层——LATEST 别名全词匹配修复(C1)、字幕降级补 TimeoutException(E1)、Download.cs 缩进对齐
- fix: 下载/直播/订阅韧性——VOD 读停滞看门狗、分片扩展名大小写统一、直播短段退避、进程管道成功路径超时、订阅历史有界、itags CRLF 转义
- fix: serve 安全加固——ForceHttp 清零、trusted-proxy XFF 限速计键、数值 Clamp 防慢速 DoS、RetryCount 统一 [1,3]、日志单行化、IPv6 字面量 DnsSafeHost、token 环境变量支持
- fix: Core 韧性加固——字幕降级补 TimeoutException、Widevine 许可证有界重试与超时分类、重定向 GET 兜底重试、fetcher 业务 code 诊断、Logger.LogStack 完整堆栈落盘
- fix: codeql 抑制注释改为纯标记独占一行(GitHub 要求不能含其他文本)
- fix: codeql 抑制注释移至告警行上方(CipherMode.ECB),确保 suppression 生效
- docs: CodeQL ECB 告警抑制——CMAC/零 IV 单块操作属协议要求,非多块模式泄露
- fix: CodeQL 补 security-events: write 权限——SARIF 上传到 Code scanning 页失败
- fix: 回滚 setup-dotnet cache: true——项目未启用 packages.lock.json,CI 报错
- chore: 仓库优化四连——Dependabot/CodeQL/GHCR镜像/SHA256/徽章/缓存/分支保护
- ci: 构建产物保留期收紧为 7 天(build_latest/release/pr 共 13 处 upload-artifact)
- fix: release workflow 幂等化——release 已存在时跳过创建、直接上传构建产物
Downloads
| Platform | Architecture |
|---|---|
| Windows | x64, arm64 |
| Linux | x64, arm64 |
| macOS | x64, arm64 |
Full Changelog: v1.6.14...v1.6.15