隐私权限收敛 — BiliPai 最小权限设计
最小权限原则
BiliPai 项目的 README 里有一句话:"登录信息保存在本地,权限尽量收敛,使用统计仅记录匿名日活与基础使用情况"。这不是一句空话——开发者在每个需要权限的地方都在思考"这个权限能不能不要?能不能换一种方式实现?"
BiliPai 需要哪些权限
| 权限 | 用途 | 是否必需 |
|---|---|---|
| INTERNET | 网络请求(拉视频流、弹幕、B 站 API) | 是 |
| POST_NOTIFICATIONS | 推送通知(下载完成、直播开播提醒) | 否(可关闭) |
| FOREGROUND_SERVICE | 后台播放和下载的前台服务 | 是(功能必需) |
| STORAGE | 缓存视频、写笔记导出的文件 | 是 |
| WAKE_LOCK | 后台播放时防止系统休眠 | 否(某些系统可以关) |
| BLUETOOTH_CONNECT | 蓝牙耳机键位控制 | 否(没有蓝牙耳机也能用) |
| BIND_ACCESSIBILITY_SERVICE | 无障碍功能 | 否 |
明显不在权限列表里的:
- ✗ 位置信息
- ✗ 通讯录
- ✗ 麦克风
- ✗ 相机(TV 扫码会临时申请,但用完就释放)
- ✗ 短信
- ✗ 电话
- ✗ 日历
这些权限很多第三方 App 默认就会索要,BiliPai 一个都不申请。
登录信息怎么保存
BiliPai 登录后获得的 Cookie(会话凭证)保存在:
- Android 应用私有目录的 Room 数据库 + DataStore
- 默认使用 Android Keystore 加密存储
- 不会上传到任何服务器
- 不会写入备份文件(除非你显式开启 Cookie 备份)
即使你导出 WebDAV 备份,Cookie 默认也不会被包含。
插件权限声明
这部分在 敏感权限插件审阅 有详细讲,简单回顾:
内置插件由官方维护,信任度最高。JSON 规则插件需要显式声明 capabilities:
- 低风险:FEED_FILTER、DANMAKU_FILTER 等
- 中风险:NETWORK、LOCAL_HISTORY_READ 等
- 高风险:COOKIE_READ、LOCAL_SETTINGS_WRITE 等
导入 JSON 规则插件时 BiliPai 会明确提示你它要哪些能力,你必须确认才能启用。
匿名使用统计
BiliPai 默认会收集一些匿名使用数据:
- 日活跃用户数(通过 Firebase 或自建统计)
- 基础功能使用分布(比如多少人用了插件、多少人开了画中画)
- 崩溃日志(帮助开发者定位 bug)
不收集的:
- 你的 B 站账号 ID
- 你观看了哪些视频
- 你的地理位置
- 你的设备 IMEI 或其他唯一标识符
关闭统计
不想被统计可以关掉:设置 → 隐私与安全 → 允许匿名使用统计 → 关闭
关掉后 BiliPai 完全不会发起任何统计请求。
为什么没有 Google Play 版本
BiliPai 不在 Google Play 分发,原因之一就是 Google Play 对第三方 B 站客户端有严格的内容和协议限制。通过 GitHub Releases 和 Telegram 频道分发,开发者可以保持对产品的完全控制权。
这不代表它不安全——恰恰相反,开源项目的代码可以被任何人审计。如果你担心安装包被篡改,可以:
- 只从 GitHub Releases 下载
- 下载后核对签名和 MD5
- 自己编译 APK(见 README 的构建说明)
隐私设置建议
| 场景 | 建议 |
|---|---|
| 日常使用 | 默认设置就够用,关闭匿名统计可选 |
| 隐私特别在意 | 关闭 AI 总结功能(会把字幕发到服务器),关闭匿名统计 |
| 插件保守派 | 只启用内置插件,不导入 JSON 规则插件 |
| 经常换设备 | 开 WebDAV 备份,但 Cookie 默认不备份 |
| 公共 Wi-Fi 使用者 | 建议始终使用 HTTPS(BiliPai 默认就是) |
和官方 App 的隐私对比
| 对比项 | BiliPai | 官方 B 站 App |
|---|---|---|
| 需要的敏感权限 | 极少 | 较多(位置、通知、相机等) |
| 登录信息存储 | 本地加密 | 云端同步 |
| 使用数据上传 | 可关闭的匿名统计 | 无法关闭的全面统计 |
| 插件网络请求 | JSON 规则插件可选 | 官方自有功能无法分离 |
| 开源可审计 | 完全开源 | 闭源 |
"最小权限"不是 BiliPai 独有的——很多开源 Android 应用都遵循这个原则。但第三方客户端里像 BiliPai 做得这么彻底的不多。