看长视频最消耗耐心的不是内容,是正片里插的那段推广。口播一来,手就得摸进度条:拖早了漏台词,拖晚了还得再拖一次。片头、订阅提醒、片尾求三连,同一个动作重复十几遍。
SponsorBlock 换了个思路:不猜,用众包。观众把「这一段是广告」标出来,别人投票,票数够的片段所有装了扩展的人共享——播放到那里直接跳过去。我查了一个视频的片段记录,接口返回 141 条同前缀数据,命中的那条里有 3 个片段,其中 music_offtopic 0–4.013 秒、filler 222.313–247.095 秒,都标成了 locked。v6.1.7,GPL-3.0,Chrome、Edge、Firefox 三个浏览器四个包,合计 8.59MB。
Windows 和 Linux 两边我都跑了一遍。先说结论:装和用都没有门槛,但它有一个我在这台机器上验不了的环节——自动跳过的动作本身,原因写在「三个真实的坑」里,别把我没测的东西当成已测。另外它不适合三类人,后面单独写。
它是什么,和广告屏蔽扩展差在哪
不是一类东西。广告屏蔽扩展拦的是请求:贴片、横幅、追踪脚本,请求发不出去,广告就不存在。SponsorBlock 一个请求都不拦,它处理的是已经下发的视频内容里被人手动划出来的段落——所以它能跳广告,也能跳片头、跳「记得点赞」、跳一段跟主题无关的闲聊。
每类行为可以单独设:跳过(进度条直接跳过去)、显示标签(不跳,只在进度条上标一段颜色)、加载时询问。设置面板里能读到 14 个类别:赞助商广告、无偿/自我推广、独家限定、互动提醒、精彩时刻、过场/开场、结束画面、预览/概要、引子/问候、偏题/笑话、章节、音乐·非音乐部分等。
还有个设计值得说:它不把完整视频 ID 发给服务器。客户端先算 sha256(videoID) 取前 4 位当哈希前缀,一次把该前缀下所有片段拉回来,本地再筛。实测的 9bZkp7q19f0 前缀是 2691,一次返回 141 条,只有 1 条属于这个视频。代价是流量大,好处是观看记录在服务器上拼不出完整视频。
我的测试环境
- Windows:Windows 11,Playwright 自带 Chromium 156.0.8078.4,persistent context 加载扩展
- Linux:CentOS Stream 9,内核 5.14.0-626,香港节点,面板 Web 终端,机器上没有 node
- 四个包:ChromeExtension.zip、EdgeExtension.zip、FirefoxExtension.zip、FirefoxSignedInstaller.xpi
- 截图:桌面 1400 宽 dsf 1,手机 390 宽 dsf 2,共 10 张
- 路径:加载扩展 → 读 manifest → 打开 popup 与设置页 → 走扩展自身权限请求片段接口
安装:Chrome 和 Edge
- 解压包,Chrome 用
chrome-mv3文件夹,Edge 用edge-mv3 - 地址栏输入
chrome://extensions/,Edge 是edge://extensions/ - 右上角打开「开发者模式」
- 点「加载已解压的扩展程序」,选文件夹本身,不是里面的某个文件

加载完能看到版本号 6.1.7 和 Service Worker 状态,实测从点「加载」到扩展可用 1.54 秒。装完 chrome.storage.local 里只有一条 alreadyInstalled: true。
别想着用命令行一键加载。 Chrome 137 之后移除了 --load-extension 启动参数,我写别的扩展教程时踩过,怎么调都不生效,扩展压根不加载。手动路径就是上面四步。
安装:Firefox
Firefox 有两个包,用途不同:
firefox-mv2文件夹:解压后的加载版,gecko id 是sponsorBlocker@ajay.app安装包/FirefoxSignedInstaller.xpi:签名安装包,但它是 BETA 通道,id 是sponsorBlockerBETA@ajay.app,名字显示为「BETA - SponsorBlock」
这两个不是同一个包,别混着用。文件夹版走临时加载:about:debugging#/runtime/this-firefox → 「临时载入附加组件」→ 选 manifest.json。重启浏览器后会消失,需要再载一次;想长期用就装那个 xpi。
安装:Linux
Linux 桌面上的 Chromium、Chrome 装法和 Windows 一样,把 chrome-mv3 目录拷过去,chrome://extensions 里加载即可。
但纯服务器没有图形界面,装不进去。所以 Linux 侧我做的是产物一致性验证,这一项反而更重要:
- 四个资产在服务器上用加速前缀重新下载,5/5 sha256 与 Windows 侧完全一致
unzip出 145 个文件,manifest.json5218 字节,和 Windows 侧同尺寸- 145 个文件逐个算 sha256,按相对路径排序后整串再哈希:Windows 是
445cfe7e5c50845c53214ba2c33ec32c129f3261c20d97502d2b8d9f60ca4006,Linux 也是同一个值
两个平台解出来的扩展逐字节相同。机器上没有 node,JS 语法这一层没做静态检查,由 Windows 侧的实际加载覆盖。
第一次打开:先把行为页配一遍
点工具栏图标,弹窗固定 374 像素宽。最上面是全局开关,中间是提交入口和个人成果(提交数、跳过数、节省时间),下面是帮助、排行、捐赠。
真正决定体验的在「行为」标签页:14 个类别,每类可选跳过方式,还能给进度条配色。我这份装的默认值是:
- 赞助商广告 = 自动跳过
- 独家限定 = 显示标签
- 精彩时刻 = 视频加载时询问
- 章节 = 显示章节
- 无偿/自我推广、互动提醒、过场/开场、结束画面、预览/概要、引子/问候、偏题/笑话、音乐·非音乐部分 = 禁用
建议一开始只开「赞助商广告」,跑几天看看它切的位置准不准,再逐个加。「精彩时刻」这类边界模糊的类别先别动,一开就容易切在正片中间。
实测数据
- 包体积:Chrome 4.44MB / 145 文件;Edge 2.85MB / 111 文件;Firefox 4.44MB / 145 文件;xpi 4.49MB / 150 文件
- 解压耗时:0.08 ~ 0.21 秒,逐成员 CRC 校验无坏块
- 启动到扩展可用:1.54 秒,返回时 Service Worker 已注册
- popup.html:HTTP 200,DOMContentLoaded 68 毫秒,宽度固定 374 像素
- 设置页:HTTP 200,DOMContentLoaded 98 毫秒,内容高 2086 像素
- 失败请求 / 控制台报错:0 / 0,popup 9 个请求、设置页 7 个请求全是内部资源
- 片段接口:哈希前缀
2691→ 200,往返 231 毫秒,141 条记录,命中 3 个片段 - 15 个常见视频直查:11 个返回 200,4 个 404(404 表示没人提交过片段,接口正常)
- Linux 侧一致性:5/5 sha256 一致,145 文件树哈希两侧相同
- 服务器侧接口:200,6.748 秒来回(香港节点回源,比本机慢一个数量级)
- 成品包:407 个条目、8.59MB、9008345 字节
解压即用也验了一遍:解到全新目录,装载 chrome-mv3,树哈希和原包一致,加载成功,popup 200 / 92 毫秒 / 374 像素,设置页 200 且标题是「选项 - SponsorBlock」,片段接口 200 / 296 毫秒,控制台 0 报错。
界面长什么样

行为页是配置主战场,14 个类别横向铺开,每行都有跳过方式的勾选框和颜色:

界面页只有两项:语言和主题。语言跟随浏览器,不跟随系统——坑里写:

设置页一共六个标签:行为、界面、快捷键、备份/恢复、其他、帮助。快捷键页有 12 组绑定,可以自己改。
扩展自带一份完整帮助页,不用联网:

390 宽度下弹窗是这样,能用,但设置页那一横排类别会被挤出可视区:

三个真实的坑
第一个,我这台机器连不上 YouTube 主站,所以「自动跳过」这个动作我没实测。
www.youtube.com 的 DNS 被污染,解析到 31.13.92.37,不是任何 Google 地址;HTTPS 连接 time_connect=0.000,21.0 秒超时,curl 的 http_code 是 000。我能验证的是三件事:扩展能加载、UI 全量可用、片段数据链路通(哈希前缀接口走扩展自己的 host 权限,200,231 毫秒,返回真实片段)。跳转时机、提示条样式、静音片段怎么处理,一个都没验。 你要看到有文章写「实测跳过 3 分钟广告」,先确认他那边能打开 YouTube。
第二个,独立标签页打开 popup.html 会丢上下文。
调试时我直接把 chrome-extension://<id>/popup.html 当普通页面打开,顶部一直显示「未找到 YouTube 视频。如果识别错误,请刷新此页面。」不是坏了,是这么打开拿不到 activeTab。真实点工具栏图标不会这样。截图里的弹窗都是这么截的,那句话看着别扭,实际使用见不到。
第三个,设置页不是 document 滚动。
滚动容器是 #options 自己(scrollHeight 2086 / clientHeight 1000),直接整页截图只能截首屏,要先把容器改成 height:auto;overflow:visible。另外这页在 390 宽度下不是响应式的,「进度条颜色」那两列会被挤出可视区,需要横向滚动。
还有两个小的:扩展 UI 语言取浏览器界面语言,自动化里只设 locale 是英文,必须加 --lang=zh-CN;全新 profile 第一次打开 popup 会先渲染一版占位数据(用户名 user96258741、提交数 39),第二次启动才是正确的 64 位 ID 和 0。
装完要做的三件事
第一,在备份页导出一份设置。 设置和片段都能导成文件,换机重装靠这个最快。
第二,把你遇到的广告段提交一遍。 没提交过只能吃别人投出来的数据,提交过冷门视频才有片段可跳。播放器右下角有提交按钮,拖出起止点即可。
第三,把快捷键改掉。 默认 12 组绑定里有几组和浏览器自带热键冲突,改一个顺手的组合。
这几类人适合,这几类不适合
适合:
- 每天看长视频、被口播推广反复打断的人
- 通勤、做饭、健身时把视频当背景音,手碰不到进度条的人
- 公司电脑或用别人的机器,装不了应用商店扩展的人
- 只讨厌正片里的广告,不介意贴片横幅的人
不适合:
- 主要刷十几秒短视频的。短视频没有可划的段落,装了等于没装
- 打不开 YouTube 的。扩展装了没处生效,别下
- 不接受众包判定的。跳哪儿由别人投票决定,边界偶尔切在台词中间
- 只想屏蔽广告请求的。那是广告屏蔽扩展的活,这个拦不了一个请求
常见问题
{collapse-item label="装完 YouTube 还是照样放广告,是没生效吗?"}A:按顺序查三件事。一,弹窗顶部有没有识别出当前视频;二,行为页里「赞助商广告」那行是不是被设成了禁用;三,这个视频有没有人提交过片段。冷门视频一条都没有,接口返回 404 是正常现象。{/collapse-item}
{collapse-item label="为什么我的设置页是英文?"}A:扩展界面语言跟随浏览器界面语言,不跟随系统语言,也不跟随网页语言。中文版浏览器装出来就是中文。{/collapse-item}
{collapse-item label="用开发者模式加载,每次启动都提示「请停用开发者模式扩展」怎么办?"}A:Chrome 会弹这一句,点「保持启用」就行。受不了这个提示只能走应用商店那条路。{/collapse-item}
{collapse-item label="Edge 包怎么比 Chrome 包小这么多?"}A:差在语言包。Chrome 145 个文件、Edge 111 个,除 _locales 外两边路径完全一致,Edge 只带 13 个语言目录。差异全落在语言包上,这点我核过。{/collapse-item}
{collapse-item label="手机上能用吗?"}A:这是浏览器扩展,不是 App,移动端浏览器基本装不上。我截的「手机」图是 390 宽度下弹窗的布局,不是手机浏览器。{/collapse-item}
源码获取
建议先转存到自己网盘再下载。手机上打开链接点右下角「保存到网盘」,回头在夸克 App 的「我的网盘」里下载。