Skip to content

yancy-coder/bilibili-blocker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

B站内容屏蔽助手

🤖 100% AI Generated - 本项目完全使用 Claude Code + Kimi K2.5 Thinking Vibe Coding 开发完成

一个简单实用的 Chrome / Edge 浏览器插件,帮助你在浏览 Bilibili(B站)时自动屏蔽包含特定关键词的内容。

功能特点

  • 智能屏蔽:支持屏蔽视频标题、UP主名称、动态内容、评论等
  • 悬停快捷菜单 🆕:鼠标悬停在视频上自动弹出快捷屏蔽菜单,一键屏蔽标题/UP主/当前视频
  • OCR 图像识别 🆕:智能识别视频封面和预览画面中的文字,即使标题不包含关键词也能精准屏蔽
  • 自定义关键词:自由添加、删除屏蔽关键词(最多 100 个)
  • 多种屏蔽模式
    • 完全隐藏:彻底移除相关内容,页面更清爽
    • 模糊显示:内容模糊处理,点击可查看
    • 半透明:淡化显示,仍可识别
  • 屏蔽统计:实时显示已屏蔽内容数量
  • 配置导入/导出:方便备份和迁移设置(导入时会自动校验格式)
  • 实时生效:无需刷新页面,设置立即生效
  • 精准匹配:支持关键词大小写不敏感匹配
  • SPA 路由感知:B站站内跳转后自动重新扫描

安装方法

Chrome / Edge 浏览器

  1. 下载本项目文件夹 bilibili-blocker 到本地

  2. 打开扩展程序页面

    • Chrome:地址栏输入 chrome://extensions/
    • Edge:地址栏输入 edge://extensions/
  3. 打开右上角的「开发者模式」开关

  4. 点击「加载已解压的扩展程序」,选择 bilibili-blocker 文件夹

  5. 浏览器工具栏会出现插件图标,点击即可使用

注意:本插件使用 Manifest V3,不支持 Firefox 的临时加载方式。

使用说明

添加屏蔽关键词

  1. 点击浏览器工具栏的插件图标
  2. 在输入框中输入要屏蔽的关键词(如:王者荣耀)
  3. 点击「添加」或按回车键
  4. 已打开的 B站页面会立即生效,无需刷新

悬停快捷菜单

开启「悬停快捷菜单」后,将鼠标悬停在任意视频卡片上 0.8 秒,会自动弹出快捷菜单:

  • 屏蔽标题:将该视频标题添加到屏蔽关键词列表
  • 屏蔽UP主:将该 UP 主名称添加到屏蔽关键词列表
  • 立即屏蔽:仅屏蔽当前这个视频(不影响其他视频)

提示:悬停菜单支持智能识别,即使视频标题很长也会自动截断显示。

OCR 图像识别功能

开启「智能图像识别」后,插件会:

  • 分析视频封面图片中的文字
  • 识别视频预览画面中的内容
  • 即使视频标题不含关键词,也能根据画面内容精准屏蔽

示例场景

  • 标题为「今日排位上分局」但封面有大大的「王者荣耀」字样 → 被屏蔽
  • 标题为「新赛季冲分」但视频内容画面显示王者荣耀 → 被屏蔽

屏蔽模式切换

  • 完全隐藏:推荐,最清爽的体验
  • 模糊显示:内容变模糊,点击屏蔽标记可恢复查看
  • 半透明:快速识别被屏蔽内容

示例关键词

# 屏蔽特定UP主
某UP主名字

# 屏蔽特定话题
王者荣耀
原神
抽奖

# 屏蔽特定类型
广告
推广
恰饭

支持页面

插件会在以下 B站页面生效:

  • 首页推荐 (www.bilibili.com)
  • 搜索结果 (search.bilibili.com)
  • 视频播放页 (www.bilibili.com/video/)
  • 动态页面 (t.bilibili.com)
  • 个人空间 (space.bilibili.com)
  • 番剧/影视 (bangumi.bilibili.com)

🚀 开发方式

本项目采用 Vibe Coding 方式开发,全程由 AI 辅助完成:

工具 用途 贡献
Claude Code 主开发工具 架构设计、代码实现、调试优化
Kimi K2.5 Thinking 辅助开发 代码审查、逻辑分析、文档编写

💡 从想法到实现,全程自然语言对话编程,零手写代码。

文件结构

bilibili-blocker/
├── manifest.json          # 插件配置文件 (Manifest V3)
├── content.js             # 内容过滤脚本(注入 B站页面)
├── content.css            # 屏蔽样式(隐藏/模糊/半透明)
├── popup.html             # 弹窗界面
├── popup.css              # 弹窗样式
├── popup.js               # 弹窗交互逻辑
├── lib/                   # 第三方库
│   └── tesseract.min.js   # OCR 引擎
├── icons/                 # 图标文件夹
│   ├── icon.svg
│   ├── icon16.svg
│   ├── icon48.svg
│   └── icon128.svg
├── _locales/              # 国际化
│   ├── zh_CN/
│   └── en/
└── README.md

注意:OCR 中文训练数据(约 10MB)会在首次启用 OCR 时自动从 CDN 下载,无需包含在扩展包中。

技术实现

  • MutationObserver:监听 DOM 变化,动态加载的内容也能被屏蔽
  • History API 拦截:监听 pushState / replaceState / popstate,感知 B站 SPA 路由切换
  • 防抖存储写入:屏蔽统计使用 500ms 防抖,避免频繁调用 chrome.storage.sync
  • WeakSet 跟踪:已处理元素使用 WeakSet 记录,配置更新时自动重置并重新扫描
  • 配置导入校验:白名单字段过滤 + 类型校验,防止恶意 JSON 注入
  • Tesseract.js OCR:基于机器学习的图像文字识别,支持中文和英文
  • 防闪烁设计:在 document_start 时立即注入 CSS 隐藏内容,避免被屏蔽内容"一闪而过"
  • 悬停菜单:800ms 延迟触发,避免误触;智能定位防止超出屏幕边界

OCR 工作原理

┌─────────────────┐
│  检测视频卡片    │
└────────┬────────┘
         ▼
┌─────────────────┐
│ 提取封面/预览图  │
└────────┬────────┘
         ▼
┌─────────────────┐
│  Tesseract OCR  │──► 识别画面文字
│  (中文+英文)     │
└────────┬────────┘
         ▼
┌─────────────────┐
│  关键词匹配      │──► 决定是否屏蔽
└─────────────────┘

高级功能

导出配置

点击「导出配置」按钮,将当前的关键词列表和设置保存为 JSON 文件。

导入配置

点击「导入配置」按钮,选择之前导出的 JSON 文件即可恢复设置。导入时会自动校验字段类型,无效的关键词会被过滤。

重置统计

点击「重置统计」可以清空已屏蔽内容的计数。

注意事项

  1. 首次安装后需要刷新已打开的 B站页面
  2. 关键词上限:最多支持 100 个关键词
  3. OCR 性能:图像识别会占用一定 CPU 资源,低配电脑如遇卡顿可关闭此功能
  4. 隐私保护:所有数据保存在本地浏览器中,不会上传到任何服务器;OCR 识别在本地完成

常见问题

Q: 安装后为什么没有效果? A: 请刷新 B站页面,或者检查插件是否已启用(点击图标查看开关状态)。

Q: 切换屏蔽模式后已屏蔽的内容没变化? A: 切换模式后,新屏蔽的内容会使用新模式。如需对已屏蔽内容生效,修改一下关键词(删除再添加)或刷新页面。

Q: 可以屏蔽弹幕吗? A: 当前版本主要针对页面内容(视频卡片、标题、评论等),弹幕屏蔽建议使用 B站自带的屏蔽功能。

Q: 关键词支持正则表达式吗? A: 当前版本使用简单文本匹配,暂不支持正则。

Q: OCR 识别准确吗? A: OCR 基于 Tesseract 引擎,对清晰的文字识别效果较好。艺术字体、复杂背景可能影响识别准确性。

Q: 为什么有些视频封面有关键词但没被屏蔽? A: 可能是:1) OCR 引擎正在初始化;2) 图片加载失败;3) 文字太小或太模糊。可以尝试刷新页面。

Q: 如何彻底删除插件? A: 在浏览器的扩展管理页面找到「B站内容屏蔽助手」,点击「移除」即可。

更新日志

v1.0.2 (2026-03-27)

  • 新增悬停快捷菜单:鼠标悬停在视频上 0.8 秒显示快捷屏蔽菜单
  • 新增 OCR 图像识别功能:智能识别视频封面和画面中的文字
  • 新增防闪烁功能:页面加载时立即隐藏视频卡片,避免被屏蔽内容"一闪而过"
  • 🔧 修复版本号不一致问题
  • 🔧 优化异常处理,添加更详细的错误日志
  • 🎨 新增 OCR 状态显示界面
  • ⚡ 优化 OCR 队列和缓存机制,减少重复识别
  • ⚡ SPA 路由切换时也应用防闪烁效果
  • 🐛 修复 Tesseract.js v4/v5 API 兼容性问题
  • 🐛 修复图片跨域问题(使用 canvas 转换)
  • 🔧 添加详细的 OCR 调试日志
  • 🔧 添加图片 alt 属性作为 OCR 备选来源
  • 🐛 降低 OCR 置信度阈值到 30%,提高识别率
  • ⚡ 升级 Tesseract.js 到 v5 版本,更稳定

v1.0.1 (2026-03-15)

  • 修复配置更新后已屏蔽元素无法重新扫描的问题
  • 修复 CSS 屏蔽模式选择器与 JS 不匹配导致模糊/半透明模式失效
  • 修复开关切换时 popup 与 content script 状态不同步的竞态条件
  • 优化存储写入:屏蔽统计改为 500ms 防抖,避免频繁写入
  • 优化 SPA 路由检测:使用 History API 拦截替代全文档 MutationObserver
  • 移除冗余的 2 秒定时扫描和重复 DOM 查询
  • 优化文本提取:移除不必要的 DOM 深克隆
  • 导入配置增加字段白名单和类型校验

v1.0.0 (2026-03-14)

  • 首次发布
  • 支持关键词屏蔽
  • 三种屏蔽模式
  • 屏蔽统计功能
  • 配置导入/导出

开源协议

MIT License - 自由使用、修改和分享

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors