
wBlock v3.0.0
适用于 Safari 的下一代广告拦截器。
适用于 macOS、iOS、iPadOS 和 visionOS 的 Safari 内容拦截器。
5 个扩展中共 750,000 条规则,Protocol Buffer 存储,LZ4 压缩,以及 iCloud 同步。
[!NOTE] 想了解详细对比? 请查看我的对比指南,了解 wBlock 与其他 Safari 内容拦截器的对比情况。
功能特性
性能
内容修改
|
拦截
配置
|
截图
用户脚本管理 管理付费墙、YouTube 不喜欢数等 |
设置与自定义 配置自动更新、通知和偏好设置 |
iOS 界面 在 iPhone 上实现全功能拦截 |
iPadOS 界面 在 iPad 上实现全功能拦截 |
技术实现
|
核心架构
|
依赖与标准
|
常见问题
我应该从 App Store 还是 DMG/Homebrew 版本安装 wBlock?
App Store 版本通常更受推荐,因为它会自动处理应用更新。DMG/Homebrew 版本具有相同的功能,适合偏好从 App Store 之外安装的用户。
我应该将 wBlock 与其他广告拦截器一起使用吗?
不。请一次只使用一个通用内容拦截器。
目前没有受控研究证明每种广告拦截器组合都会损害每个页面。然而,浏览器架构和扩展文档支持避免重叠拦截器:
-
扩展可能做出冲突的更改。Mozilla 文档指出,当两个扩展尝试对同一响应头进行冲突修改时,只有一个更改可能成功。因此,多个拦截器可能产生依赖顺序的行为,而不是其保护措施的可预测组合。请参阅 Mozilla 的 webRequest 文档。
-
请求拦截具有可衡量的计算成本。Chromium 描述了与阻塞请求处理程序相关的序列化、进程间通信、常驻进程和扩展响应处理成本。运行冗余过滤系统会重复至少部分规则评估和页面处理工作。请参阅 Chromium 对 Web Request 和 Declarative Net Request 的解释以及 Chrome 的 Manifest V3 概述。
-
主要拦截器维护者明确建议不要叠加使用。uBlock Origin 官方 README 声明:“不要将 uBO 与任何其他内容拦截器一起使用。”它解释说,另一个拦截器可能会阻止 uBO 的隐私或反拦截器破解功能正常工作。请参阅 uBlock Origin 的官方文档。
-
已记录的故障模式包括加载变慢和功能损坏。AdGuard 警告说,两个拦截器可能竞争同一请求,导致页面加载变慢、网站损坏或视频播放问题。请参阅 AdGuard 的指南。
具体到 wBlock,另一个拦截器也会使故障排除变得不可能。当广告存活或网站损坏时,任一拦截器的网络规则、外观规则、scriptlet、例外或执行顺序都可能是原因。因此,第二个拦截器是一个混杂变量。在报告 wBlock 问题之前,请禁用所有其他内容拦截器。
当两个工具在同一拦截层竞争时,安装冗余拦截器不是纵深防御。这是一个没有对照组的非受控实验。
我可以使用自己的过滤器列表吗?
可以。您可以通过 URL 添加任何 AdGuard 兼容的过滤器列表,直接粘贴规则,或从文件导入。
我应该启用更多过滤器列表以获得更好的拦截效果吗?
通常不需要。推荐的默认设置已经覆盖了大多数广告和跟踪器,而大多数其他通用列表与它们重叠。启用更多主要会消耗 Safari 的规则限制,并增加网站损坏的可能性。例外情况是烦人元素过滤器(Cookie 横幅、弹窗、社交小部件)和非英语网站的区域过滤器,这些覆盖了默认设置未涵盖的内容。
wBlock 会拖慢 Safari 吗?
正常使用下不会。wBlock 使用 Safari 的原生声明式内容拦截 API,该 API 在应用进程外应用编译后的规则。本地空闲检查约为 ~40 MB,页面加载保持在 Safari 的原生拦截器路径上。
用户脚本在 iOS 和 iPadOS 上可用吗?
可以。用户脚本引擎通过 Safari Web Extensions 在 iOS、iPadOS 和 macOS 上实现了常见的 Greasemonkey API(GM_getValue、GM_setValue、GM_xmlhttpRequest、GM_addStyle)。
如何拦截 Twitch 广告?
wBlock 捆绑了 AdGuard Extra 用户脚本,它可以通过与 Twitch 的 GraphQL API(gql.twitch.tv)通信来帮助拦截 Twitch 广告 — 这与 uBlock Origin 用户依赖的通用方法相同。它默认禁用,因此请为 Twitch 启用它:
1. 打开 wBlock 并转到 用户脚本 部分。
2. 在内置列表中找到 AdGuard Extra 并将其切换为开启。
3. 重新加载任何打开的 Twitch 标签页。
这是尽力而为的社区式广告拦截:Twitch 经常更改广告投放方式,因此它可能偶尔失效,直到用户脚本更新。不保证每个广告都会被移除。
什么是 Tube Cleaner 和 Player Cleaner?
它们是可选的远程下载用户脚本,灵感来自 Vinegar 和 Baking Soda,在网站现有的媒体元素上暴露 Safari 的原生控件。它们默认禁用;请在 用户脚本 部分启用它们。它们的版本托管在 wBlock-userscripts 中,不绑定 wBlock 应用版本。
Tube Cleaner 针对 YouTube 观看、Shorts 和 Music 页面。它将
/embed 和 youtube-nocookie 框架留给 YouTube 自己的播放器,这样这些 iframe 不会变空白。在观看页面上,它让 YouTube 创建并初始化自己的 <video> 和 SABR/MSE 流,然后应用原生控件并在 YouTube 自定义界面绘制前隐藏它。悬停播放缩略图预览保留给 YouTube,因此它们无法窃取观看播放器。重用相同的媒体元素保留了缓冲和自适应播放,同时恢复画中画和后台播放。它将 YouTube 章节和字幕镜像到 Safari 的原生媒体菜单中,并通过 SponsorBlock 的隐私保护哈希前缀 API 跳过已知片段。其紧凑的 SB 面板提供 SponsorBlock 风格的类别颜色和每类别自动跳过、显示跳过按钮或禁用行为,以及最短时长、撤销通知、当前视频和频道排除控件。可选的 DA 面板可以使用 DeArrow 替换观看页面和可见 YouTube 卡片上提交的标题和缩略图,悬停时恢复原始内容,或排除当前频道。结果在会话中缓存;随机回退缩略图、标题重新格式化、提交和投票仍然是完整 DeArrow 扩展的功能。SponsorBlock 和 DeArrow API 数据根据 CC BY-NC-SA 4.0 使用。SB 和 DA 位于画质和音频/视频控件下方的独立工具栏行中。在 iPhone 和 iPad 上,Safari 的原生控件拥有播放权,而紧凑工具栏出现在它们上方;移动端画质选择仅适用于当前视频,因此固定范围不会阻塞下一个 ManagedMediaSource 流。Tube Cleaner 还保留了 WebKit 对该流要求的远程播放限制,而纯音频仍然是 macOS 功能。它跟随活动播放器,因为 YouTube 保留屏幕外的 Shorts。广告仍由 wBlock 的内容拦截规则负责。
Player Cleaner 针对其他网站上的自定义播放器(video.js、JW Player、Plyr、Flowplayer、MediaElement、Clappr、Media Chrome/Mux 等),包括 shadow-root 播放器,如 Archive.org 的
<play-av>。它立即启用原生控件。当 light DOM 中有安全的直接源可用时,它会移除自定义界面,同时保留原始媒体元素;shadow 组件和不透明的 HLS/DASH/MSE 管道保持完整,并继续使用网站的流媒体机制。它恢复页面或常见播放器 API 暴露的字幕和章节辅助文件,填充缺失的系统 Now Playing 元数据和媒体键操作,并按站点记住播放速度、音量、静音状态、字幕语言和恢复位置。如果某个网站行为异常,可以从 wBlock 工具栏为该网站禁用 Player Cleaner。
我在哪里可以找到它们,可以用什么来测试?
两者默认禁用。打开 用户脚本 标签页:Tube Cleaner 和 Player Cleaner 位于 通用 部分的顶部。切换其中一个,然后重新加载要测试的页面。如果它们不在列表中,说明您运行的是此更改之前的 wBlock 构建 — 退出 wBlock 并从 Xcode 运行此分支(Homebrew 或发布版安装不能包含分支代码)。
Tube Cleaner(YouTube 观看页面):
• Big Buck Bunny — 时长较长,多种画质,适合测试画质菜单
• Sintel
• Tears of Steel
检查原生控件是否出现且没有 YouTube 界面的闪烁,画质和纯音频控件是否正常工作,当鼠标移到已悬停的播放器上时工具栏是否重新出现,画中画是否正常工作,以及音频是否在另一个标签页中继续播放。其他网站上嵌入的 YouTube iframe 应保留 YouTube 自己的播放器。DA 面板默认关闭;启用它以测试 DeArrow 标题、缩略图、悬停恢复原始内容行为和频道排除。广告行为取决于启用的 wBlock 过滤器列表。
Player Cleaner(其他网站的自定义播放器),每个支持的库一个演示:
• video.js / Media Chrome — videojs.org
• Plyr — plyr.io
• JW Player — stream tester 和 demo
• Archive.org shadow-root JW Player — FedFlix sample
• Clappr — clappr.io 和 cdn.clappr.io
• MediaElement — mediaelementjs.com
• hls.js — hls.js demo
• dash.js — DASH reference player
检查原生控件是否及时出现,画中画和全屏是否正常工作,以及自定义界面消失时播放是否不会重新开始。HLS/DASH/blob 播放器可以在使用原生控件的同时保留其流管道。如果某个网站行为异常,可以从 wBlock 工具栏为该网站禁用 Player Cleaner。
为什么 Cookie 横幅或脚本在隐私浏览中不起作用?
Safari 在隐私浏览中会关闭 Web 扩展,直到你为每个扩展启用 允许在隐私浏览中使用。Cookie 通知过滤器通常使用脚本(例如通过 Sourcepoint 的 heise.de)来关闭横幅,而这些脚本只能通过 wBlock Scripts 运行。
Safari → 设置 → 扩展 → 为 wBlock Scripts 和全部 5 个 wBlock 内容拦截器启用 允许在隐私浏览中使用,然后重新加载隐私窗口。
如果横幅在普通窗口中已经消失,那可能只是存储的同意 Cookie。清除该网站的 Cookie 并再次比较,然后再断定过滤器仅在隐私浏览中失效。
过滤器多久更新一次?
自动更新间隔可配置为 1 小时到 7 天,也可以手动触发。在 macOS 上,启用自动更新会注册一个捆绑的启动代理,该代理可以通过后台更新服务在应用关闭时持续检查更新。在 iOS 和 iPadOS 上,后台检查是尽力而为的,可能会等到系统唤醒 wBlock 或你重新打开它时才执行。打开 Safari 不会触发更新。当服务器支持时,更新使用 HTTP 条件请求(If-Modified-Since/ETag 头),这可以减少不必要的下载。
元素清除器在 iOS 和 iPadOS 上可用吗?
可以。在 Safari 中打开 wBlock 扩展弹出窗口,然后点击 激活元素清除器。