在日常浏览 B 站时,我们往往会陷入一个两难的困境:
TabulaBili-Plus 正是为解决这一痛点而生。它源自哲学概念 Tabula Rasa(白板说/初生无瑕),让你既能享受登录状态下的完整特权,又能让首页推荐流永远保持“人生若只如初见”的纯净状态。减少基于账号登录态和浏览历史的个性化推荐,让首页内容变得更泛化、更随机、更像公共热门流。
B 站首页的推荐流是通过前端异步请求后端接口拉取数据的(核心接口为 api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd 等)。
TabulaBili-Plus 利用 Chrome 扩展 Manifest V3 的 declarativeNetRequest (DNR) 机制,在浏览器底层网络层进行“外科手术式”的请求头清洗:
[浏览器 B 站首页发起推荐请求]
│
▼
[B 站后端推荐算法服务器]───────────> 渲染首页第一屏强制按照个性化算法推送前10个视频
│
▼
[TabulaBili-Plus 检测B站首页载入]──>等待「换一换」按钮出现,请求 B 站后端推荐算法服务器
│
▼
[TabulaBili-Plus 底层拦截 (DNR)] ──> 自动剥离请求头中的 Cookie (SESSDATA / buvid 等)
│
▼
[B 站后端推荐算法服务器] ───────────> 识别为“全新到访的匿名访客”,下发默认热门流
│
▼
[你的浏览器首页] ──────────────────> 呈现无个性化痕迹的纯净推荐流
/video/) 或用户中心时,视频流请求 (playurl) 及其他所有 API 均不受拦截,正常携带 Cookie,因此画质与账号特权丝毫不受影响。访问 Chrome扩展商店 像正常的扩展那样安装就行。
TabulaBili-Plus文件夹解压到一个你喜欢的位置。chrome://extensions/ 进入扩展管理页面。TabulaBili-v*.*.* 文件夹)。纯净模式下完全不会。 因为扩展在底层移除了推荐接口的整个 Cookie 请求头,无论你在浏览器本地看多久、存了多少追踪指纹,后端推荐算法在处理 feed 请求时都无法读取。此时对算法而言,你每一次刷新首页,都是一次“失忆”式的全新访问。
没有任何影响。 扩展只处理首页推荐流的请求,你在播放页的观看进度、一键三连、稍后再看等行为都会正常保存在你的 B 站账号下。
具体看你用什么模式:
buvid3 和 buvid4参数,目前 B 站没有做基于Cookie 的防火墙,也未做参数交叉动态校验,所以目前没有任何问题,但不排除未来哪一天 B 站突然丧心病狂地升级了安全策略的可能性。在这个模式下,需要给B站必要的两个设备追踪参数 buvid3/4 (设备特征码) 来保证内容尽量不重复推送。B站此时不知道你的账号,但会利用你的设备指纹识追踪你,刷久了就变成基于设备识别的个性化推荐了。 所以扩展设计了「刷新设备指纹」按钮,当你点击时扩展会强制 B 站重新向其后端申请一套全新的的设备指纹,从而切断基于设备识别的个性化推荐。
为了提高用户体验。 因为 B 站前端有 Wbi 动态签名加密(w_rid 参数)。在探索模式/混合模式下,如果我们只使用 DNR 在网络层去拦截并强制修改 URL 参数(比如加随机数来防缓存),会直接破坏哈希校验,导致 B 站后端返回 -403 校验失败。 解法:经逆向发现,B 站的 Wbi 签名只对 URL 的 Query 参数进行哈希验真,并不校验 HTTP 请求头中的 Cookie。因此,扩展利用前端脚本重写 fetch,在请求真正发出的前执行异步阻塞,通知后台 DNR 将规则链(remove/set)编译妥当,随后透传原生 URL,不着痕迹地完成无损清洗个人痕迹。
TabulaBili-Plus/
├── manifest.json # 扩展配置文件声明 (MV3 规范)
├── rules.json # DNR 静态规则库
├── popup.html # 自适应四选一卡片式控制面板 UI
├── popup.css # 全局响应式样式表
├── popup.js # 状态分流引擎与跨进程事件调度脚本
├── content.js # Isolated 沙箱:长效指纹捕获与条件自动化触发脚本
├── content-main.js # MAIN 线程:无损 Wbi 签名劫持与 Fetch 异步阻塞调度器
├── background.js # 后台 Service Worker:多标签页物理隔离计数与 DNR 动态规则编译器
├── promo.html # 【非运行必需】应用商店截图生成工具
├── LICENSE # MIT 开源许可证
└── README.md # 本说明文档
本项目采用 MIT 开源许可证 (MIT License)。
原作者(wangdaodao)没有上架 Chrome 应用商店的计划,根据原作者意愿,扩展内保留他的博客信息于UI的「灵感来源」按钮。
我(tjsky)没有做 Firefox、Safari 版扩展的计划,如果打算二开上架它们的应用商店,最好也能保留现有博客信息。(不保留也可)
我们秉持极度开放与自由的开源精神:
感谢以下优秀开源项目与社区为本项目提供强有力的支持:
同时感谢所有为项目提出宝贵意见、测试和支持本项目的开发者与使用者!
Author: tjsky | Version: 1.2.0 | License: MIT
HTML
45.2%
JavaScript
33.2%
CSS
21.7%
在日常浏览 B 站时,我们往往会陷入一个两难的困境:
TabulaBili-Plus 正是为解决这一痛点而生。它源自哲学概念 Tabula Rasa(白板说/初生无瑕),让你既能享受登录状态下的完整特权,又能让首页推荐流永远保持“人生若只如初见”的纯净状态。减少基于账号登录态和浏览历史的个性化推荐,让首页内容变得更泛化、更随机、更像公共热门流。
B 站首页的推荐流是通过前端异步请求后端接口拉取数据的(核心接口为 api.bilibili.com/x/web-interface/wbi/index/top/feed/rcmd 等)。
TabulaBili-Plus 利用 Chrome 扩展 Manifest V3 的 declarativeNetRequest (DNR) 机制,在浏览器底层网络层进行“外科手术式”的请求头清洗:
[浏览器 B 站首页发起推荐请求]
│
▼
[B 站后端推荐算法服务器]───────────> 渲染首页第一屏强制按照个性化算法推送前10个视频
│
▼
[TabulaBili-Plus 检测B站首页载入]──>等待「换一换」按钮出现,请求 B 站后端推荐算法服务器
│
▼
[TabulaBili-Plus 底层拦截 (DNR)] ──> 自动剥离请求头中的 Cookie (SESSDATA / buvid 等)
│
▼
[B 站后端推荐算法服务器] ───────────> 识别为“全新到访的匿名访客”,下发默认热门流
│
▼
[你的浏览器首页] ──────────────────> 呈现无个性化痕迹的纯净推荐流
/video/) 或用户中心时,视频流请求 (playurl) 及其他所有 API 均不受拦截,正常携带 Cookie,因此画质与账号特权丝毫不受影响。访问 Chrome扩展商店 像正常的扩展那样安装就行。
TabulaBili-Plus文件夹解压到一个你喜欢的位置。chrome://extensions/ 进入扩展管理页面。TabulaBili-v*.*.* 文件夹)。纯净模式下完全不会。 因为扩展在底层移除了推荐接口的整个 Cookie 请求头,无论你在浏览器本地看多久、存了多少追踪指纹,后端推荐算法在处理 feed 请求时都无法读取。此时对算法而言,你每一次刷新首页,都是一次“失忆”式的全新访问。
没有任何影响。 扩展只处理首页推荐流的请求,你在播放页的观看进度、一键三连、稍后再看等行为都会正常保存在你的 B 站账号下。
具体看你用什么模式:
buvid3 和 buvid4参数,目前 B 站没有做基于Cookie 的防火墙,也未做参数交叉动态校验,所以目前没有任何问题,但不排除未来哪一天 B 站突然丧心病狂地升级了安全策略的可能性。在这个模式下,需要给B站必要的两个设备追踪参数 buvid3/4 (设备特征码) 来保证内容尽量不重复推送。B站此时不知道你的账号,但会利用你的设备指纹识追踪你,刷久了就变成基于设备识别的个性化推荐了。 所以扩展设计了「刷新设备指纹」按钮,当你点击时扩展会强制 B 站重新向其后端申请一套全新的的设备指纹,从而切断基于设备识别的个性化推荐。
为了提高用户体验。 因为 B 站前端有 Wbi 动态签名加密(w_rid 参数)。在探索模式/混合模式下,如果我们只使用 DNR 在网络层去拦截并强制修改 URL 参数(比如加随机数来防缓存),会直接破坏哈希校验,导致 B 站后端返回 -403 校验失败。 解法:经逆向发现,B 站的 Wbi 签名只对 URL 的 Query 参数进行哈希验真,并不校验 HTTP 请求头中的 Cookie。因此,扩展利用前端脚本重写 fetch,在请求真正发出的前执行异步阻塞,通知后台 DNR 将规则链(remove/set)编译妥当,随后透传原生 URL,不着痕迹地完成无损清洗个人痕迹。
TabulaBili-Plus/
├── manifest.json # 扩展配置文件声明 (MV3 规范)
├── rules.json # DNR 静态规则库
├── popup.html # 自适应四选一卡片式控制面板 UI
├── popup.css # 全局响应式样式表
├── popup.js # 状态分流引擎与跨进程事件调度脚本
├── content.js # Isolated 沙箱:长效指纹捕获与条件自动化触发脚本
├── content-main.js # MAIN 线程:无损 Wbi 签名劫持与 Fetch 异步阻塞调度器
├── background.js # 后台 Service Worker:多标签页物理隔离计数与 DNR 动态规则编译器
├── promo.html # 【非运行必需】应用商店截图生成工具
├── LICENSE # MIT 开源许可证
└── README.md # 本说明文档
本项目采用 MIT 开源许可证 (MIT License)。
原作者(wangdaodao)没有上架 Chrome 应用商店的计划,根据原作者意愿,扩展内保留他的博客信息于UI的「灵感来源」按钮。
我(tjsky)没有做 Firefox、Safari 版扩展的计划,如果打算二开上架它们的应用商店,最好也能保留现有博客信息。(不保留也可)
我们秉持极度开放与自由的开源精神:
感谢以下优秀开源项目与社区为本项目提供强有力的支持:
同时感谢所有为项目提出宝贵意见、测试和支持本项目的开发者与使用者!
Author: tjsky | Version: 1.2.0 | License: MIT
HTML
45.2%
JavaScript
33.2%
CSS
21.7%