在 B站历史页旁听你自己的观看记录,在浏览器本地完成分类、打标、续看筛选、导出。
不需要后端 · 不读 Cookie · 不回写 B站 · 不向任何外部发送数据。
| 装在哪 | Tampermonkey(Chrome / Edge / Firefox 均可) |
| 作用页面 | https://www.bilibili.com/history |
| 数据存哪 | 你浏览器的 IndexedDB(不经过任何服务器) |
| 版本 | 0.4.1 |
B站历史页本身只有一条平铺的时间流,条目一多就没法用。这个脚本把它变成能筛、能分类、能续看的清单:
它只旁听页面自己发出的请求,不主动向 B站发任何请求,也不会修改你的历史记录。
页面顶部出现蓝色「BHF 历史增强」条即安装成功。
https://greasyfork.org/scripts/XXXXXX/code/bili_history.user.jsbili_history.user.js 后打开bili_history.user.js 的整份内容粘进去 → 保存。更新版本:重复上面任一方式即可。
| 问题 | 答案 |
|---|---|
| 会读我的 Cookie 吗? | 不会。 脚本里没有任何 document.cookie 调用,也不需要 SESSDATA。 |
| 会把数据传到哪? | 哪都不传。 脚本没有任何对外请求(无 fetch 到外部、无 GM_xmlhttpRequest、无埋点)。 |
| 会修改 B站的数据吗? | 不会。 全程只读,不点赞、不收藏、不动播放记录。 |
| 会多发请求给 B站吗? | 不会主动发。 只被动接收页面自己的响应 —— 所以你滚动多少才抓多少,不会耗你的风控额度。 |
| 数据存在哪? | 你自己浏览器的 IndexedDB。 清浏览器数据会一起清掉,重要内容请用「导出」备份。 |
@grant 为什么是 none? |
不申请任何特权 API,在页面上下文里运行 —— 这也是它读不到你 Cookie 的原因。 |
唯一的对外出口是「导出」按钮 —— 你点了才会下载一个 JSON 文件到本地。
顶栏有五个按钮,两个悬浮面板默认关闭,按需点开:
| 按钮 | 作用 |
|---|---|
| 分类 | 打开分类视图(五个标签页:全部 / 已看完 / 已跳过 / 已搁置 / 待观看) |
| 规则 | 打开规则编辑器(改分类条件,实时生效) |
| 导出 | 导出全部记录为 JSON |
| 面板开关 | 分类面板与规则抽屉的显隐,你的选择会被记住,下次打开保持上次状态 |
| ⋯ | 诊断信息(排查问题时用) |
每张历史卡片左上角会有分类角标(已看完 / 已跳过·原因 / 已搁置·原因 / 已恢复),点角标可手动取消该条目的自动判定。
规则不匹配任何条件 = 待观看,按设计不显示角标(避免满屏标签)。 想看全部记录 → 顶栏「分类」→ 切到「待观看」。
| 限制 | 说明 |
|---|---|
| 只覆盖你浏览过的分类 | 在历史页翻过的分类才会被抓到。 |
| 数据窗口约 3 个月 | B站历史接口本身的返回窗口,不是脚本的限制。 |
| 想抓更多要滚动 | 脚本不主动发请求 —— 想抓多少就往下滚多少。 |
| 卡片打标偶有延迟 | SPA 滚动加载的新卡片靠 MutationObserver 补标,理论上有一帧延迟。 |
直播条目没有 bvid |
直播回放类记录只能用 uri 关联,个别场景可能对不上。 |
Q:顶部没有出现蓝色条?
按顺序排查:① Tampermonkey 里脚本是否已启用(图标不是灰的)② 是否打开的是 bilibili.com/history(不是 /watch 或首页)③ 是否已登录 B站 ④ 页面顶部「⋯」→ 复制诊断信息。
Q:为什么很多条没有角标? 规则不匹配 = 待观看 = 按设计不显示角标。去「分类」面板的「待观看」标签页看全部。
Q:抓到的数据不对 / 少了? 脚本只旁听页面已经加载出来的请求。先往下滚动让页面加载,再点「⋯」看诊断里的计数。
Q:换浏览器怎么办? 数据存在各自浏览器的 IndexedDB 里,不互通。用「导出」拿到 JSON,再在另一浏览器装好脚本后导入。
Q:它和 GitHub 上的 Finder 项目是什么关系? 同一个项目的两条独立线路。Finder 是服务端方案(有数据库、完整历史库);这个脚本是纯浏览器方案(零后端、只管近三个月)。两者数据不共享,唯一往来是导出 JSON。
问题反馈请提 issue:https://github.com/GDORT/BilibiliHistoryFinder/issues 源码与完整技术文档:https://github.com/GDORT/BilibiliHistoryFinder
MIT