这个项目能做什么
wBlock 是一款面向 macOS、iOS、iPadOS 和 visionOS 上 Safari 的免费开源内容拦截器。它以单一应用的形式分发到全部四个平台,可在 App Store、通过 Homebrew cask 或从 GitHub releases 下载 DMG 获取。
Safari 将每个内容拦截器限制为 15 万条规则,并且不允许拦截器修改页面的 JavaScript。wBlock 通过提供五个内容拦截器(Ads、Privacy、Security、Foreign、Custom)来绕过这一限制,总计 75 万条规则,另外还有一个独立的脚本扩展,用于处理静态规则无法表达的任何内容。
拦截
过滤列表使用 AdGuard 语法编写,并通过 SafariConverterLib 转换,然后拆分到五个拦截器中。Safari 自行执行匹配,因此页面加载期间不会运行任何 wBlock 代码。该应用报告空闲时占用约 40 MB。默认设置包括根据用户语言选择的区域列表、烦扰和 cookie 横幅列表,并支持通过 URL、粘贴或文件添加列表。更新按用户选择的时间表运行,从每小时到每周不等;发布差异补丁的列表只下载更改内容,在 macOS 上,启动代理可以在应用关闭时继续检查。utm_* 等跟踪参数默认会从链接中剥离,短链接也会被还原。容量条和规则查看器会显示哪些行不受支持、重复或交给了脚本扩展。
用户脚本和用户样式
脚本扩展包含一个兼容 Greasemonkey 的引擎,同时支持 GM_* 和 GM.* API。GM_xmlhttpRequest 仅限于脚本在 @connect 中声明的主机;只允许 HTTP 和 HTTPS,重定向在被跟随之前会先检查,并且请求不携带浏览器 cookie 或已保存的登录信息。支持 UserCSS 主题(.user.css),包括 Less、Sass 和 Stylus。内置目录提供 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,从而启用画中画、后台音频、全屏和“正在播放”。Tube Cleaner 针对 YouTube,保留 YouTube 自己的流,在 Safari 的原生菜单中公开章节和字幕,并通过 SponsorBlock 按类别设置跳过赞助内容。Player Cleaner 覆盖 video.js、JW Player、Plyr、Flowplayer、MediaElement、Clappr、Media Chrome 以及 Archive.org 等 shadow-root 播放器,并按网站记住速度、音量、字幕和播放位置。两者都从 wBlock-userscripts 仓库独立更新。它们本身不拦截广告;过滤列表负责拦截。
按站点控制和同步
工具栏弹出窗口为过滤、用户脚本和自动播放提供独立开关,另外还有元素清除器。过滤列表和用户脚本可以限制为特定站点或从特定站点排除,清除器规则仍可在“设置”中编辑。iCloud 会在设备之间同步列表、自定义过滤器、用户脚本、允许列表和设置;也可以选择导出本地备份作为替代方案。
架构
过滤数据以 Protocol Buffers 存储并使用 LZ4 压缩,并流式写入磁盘,以限制大型编译期间的内存使用。更改一个列表只会重建它所供给的拦截器,不过 Safari 仍需要重新加载后更改才会生效。
支持和许可
该项目采用 GPL-3.0 许可,通过 Open Collective 获得资助,并声明不收集任何数据。问题在 GitHub 上跟踪,社区讨论在 Discord 上进行。规则转换和 scriptlets 来自 AdGuard;SponsorBlock 和 DeArrow 数据来自 Ajay Ramachandran 的项目,采用 CC BY-NC-SA 4.0 许可。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。