
wBlock v3.0.0
适用于 Safari 的下一代广告拦截器。在 macOS、iOS、iPadOS 和 visionOS 上免费且开源,拥有 750,000 条规则、用户脚本、用户样式和元素清除器。
Safari 给广告拦截器留的空间非常有限。每个内容拦截器只有 150,000 条规则,而且无法触及页面的 JavaScript。wBlock 内置了五个拦截器(共 750,000 条规则),外加一个脚本扩展来处理规则无法完成的一切。这涵盖了 scriptlet、外观过滤、用户脚本和用户样式、元素清除器,以及适用于 YouTube 和大多数其他网站的原生视频播放器。
它免费且不收集任何数据。如果某个列表出了问题,你可以查看它编译成了什么、Safari 丢弃了哪些行,以及上次更新时改动了什么。
[!TIP] 在 wBlock、uBlock Origin Lite、Wipr 和 AdGuard 之间犹豫不决?我写了一篇对比。
功能一览
拦截
- 采用 AdGuard 语法的过滤列表,编译为 Safari 规则并分散到五个拦截器中。匹配由 Safari 自己完成,wBlock 空闲时占用约 40 MB。
- 良好的默认配置、根据你的语言挑选的区域列表、烦扰和 Cookie 横幅列表,以及你通过 URL、粘贴或文件添加的任何内容。
- 按你选择的时间表更新,从每小时到每周。发布差异补丁的列表只下载变更部分。在 macOS 上,一个小型 launch agent 即使在应用关闭时也会持续检查。
- 像
utm_*这样的跟踪参数会从链接中剥离,短链接会被还原。此功能默认开启。 - 一个容量条,以及一个规则查看器,告诉你哪些行不受支持、重复,或被交给了脚本扩展。
用户脚本和用户样式
- 一个兼容 Greasemonkey 的引擎,同时支持
GM_*和GM.*。GM_xmlhttpRequest只能访问脚本在@connect中列出的主机。 - UserCSS 主题(
.user.css),包括 Less、Sass 和 Stylus。更多内容见 docs/USERSTYLES.md。 - 内置目录包含 Tube Cleaner、Player Cleaner、DeArrow、Dark Reader、Return YouTube Dislike、Bypass Paywalls Clean、AdGuard Extra、AdGuard Popup Blocker 和 TwitchAdSolutions。除 tinyShield(一个反广告拦截破解器)外,目录中的所有内容默认关闭。
原生视频
Tube Cleaner 和 Player Cleaner 会在页面渲染之前将网站的视频交还给 Safari。你可以获得画中画、后台音频、全屏和“正在播放”,与普通的 <video controls> 标签一样。
Tube Cleaner 是用于 YouTube 的那个。它保留 YouTube 自己的流,将章节和字幕放入 Safari 的原生菜单,并通过 SponsorBlock 跳过赞助内容,支持按类别设置。如果你还想要更好的标题和缩略图,DeArrow 是一个单独的脚本。Player Cleaner 在 video.js、JW Player、Plyr、Flowplayer、MediaElement、Clappr、Media Chrome 以及像 Archive.org 那样的 shadow-root 播放器上做同样的工作,并且会记住每个网站上的速度、音量、字幕和播放进度。
两者都从 wBlock-userscripts 按各自的计划独立于应用更新。它们不拦截广告(那是过滤列表的工作)。
按站点控制
在任何网站上点击工具栏按钮,你会看到过滤、用户脚本和自动播放的独立开关,以及元素清除器。你还可以将某个过滤列表或用户脚本限制在特定网站上,或将其排除。清除器规则在设置中保持可编辑。
全设备支持
它是 macOS、iOS、iPadOS 和 visionOS 上的同一个应用。iCloud 同步你的列表、自定义过滤器、用户脚本、允许列表和设置。如果你更愿意将数据保留在本地,可以改为导出备份。
截图
macOS 上的用户脚本 |
|
Tube Cleaner 中的 SponsorBlock |
iPhone 上的 Safari 弹出窗口 |
macOS 上的设置 |
|
安装
- App Store。它会自动更新,也是我会用的方式。
- Homebrew:
brew tap 0xcub3/wblock && brew install --cask wblock - 从最新版本下载 DMG。
三者是同一个构建。首次启动时,wBlock 会引导你在 Safari 中开启扩展。
TestFlight 测试版
TestFlight 是 Apple 的可选测试版分发服务。我用它来分发已签名的测试版构建,并在稳定版发布前收集反馈。你不需要 TestFlight 或付费的 Apple Developer 会员资格来安装上面的稳定版构建。
Apple 会自动收集测试版崩溃日志和使用信息,并与开发者共享。在测试期间你无法退出该收集。你提交的反馈和截图也会被共享,且可能包含私密内容。加入前请阅读 Apple 的 TestFlight 隐私声明 以及 wBlock 隐私政策中的 TestFlight 部分。
工作原理
wBlock 由三部分组成。应用下载你的列表,用 SafariConverterLib 4.3.0 进行转换,并将结果分散到五个内容拦截器(Ads、Privacy、Security、Foreign、Custom)中。Safari 编译这些规则并自行应用,页面加载时没有任何 wBlock 代码运行。静态规则无法表达的内容会交给 wBlock Scripts 扩展。
过滤数据以 Protocol Buffers 格式存储,采用 LZ4 压缩,并流式写入磁盘,以避免大型编译时内存飙升。如果你更改一个列表,只有该列表所供给的拦截器会被重建。Safari 仍然需要重新加载它们才能看到变化,任何应用都无法跳过这一步。
对比展示了当你为某个网站关闭过滤时 wBlock 写入的确切规则。
常见问题
我应该把 wBlock 和另一个广告拦截器一起运行吗?
不。选择一个通用拦截器即可。
两个拦截器会争夺相同的请求和相同的页面。Mozilla 的 webRequest 文档指出,当两个扩展以冲突的方式修改同一个响应时,只有一个会生效。uBlock Origin 的 README 说“不要将 uBO 与任何其他内容拦截器一起使用”(来源),AdGuard 也警告会出现加载缓慢、网站损坏和视频问题(来源)。
这也会让你的错误报告变得毫无用处。同时开着两个拦截器,我无法判断是哪一个放过了广告或弄坏了网站。提交任何问题之前,请先关掉另一个。
我应该开启更多过滤列表吗?
通常不需要。默认配置已经能拦截大多数广告和跟踪器,其他通用列表大多与之重复。额外的列表会占用 Safari 的规则上限,并弄坏更多网站。烦扰列表(Cookie 横幅、弹窗、社交组件)和非英语网站的区域列表值得开启。
wBlock 会拖慢 Safari 吗?
正常使用不会。Safari 在 wBlock 之外自行应用规则,页面加载从不等待应用。空闲时占用约 40 MB。
如何拦截 Twitch 广告?
在用户脚本标签页中开启 TwitchAdSolutions(vaft)或 AdGuard Extra,然后重新加载 Twitch。vaft 是专用的那个。不要同时运行两者。Twitch 经常更改其广告设置,任一脚本都可能在一段时间内失效,直到它跟上变化。
为什么 Cookie 横幅或 scriptlet 在无痕浏览中不起作用?
Safari 在无痕浏览中会禁用扩展,直到你逐个允许。Cookie 横幅过滤器在 wBlock Scripts 中大多以 scriptlet 形式运行。在 Safari → 设置 → 扩展中,为 wBlock Scripts 和全部五个拦截器开启“在无痕浏览中允许”,然后重新加载无痕窗口。
如果横幅在普通窗口中已经消失,可能只是那里保存了同意 Cookie。在对比之前,先清除该网站的 Cookie。