muzuiget
2021-10-28 20:51:32 +08:00
给大家科普下,iOS 的 Safari 15 支持扩展,是指通用的 Web Extension ,但也又有一部分 Web Extension API 不支持的,例如拦截广告需要的 webRequestBlocking ,所以 uBlock Origin 这种老牌广告拦截器注定无法移植到 iOS 上。作为取代,iOS 提供 declarativeNetRequest ,其实就是 iOS 9 提供的“内容拦截器”变种而已。
Chrome 也是一样,在新版的扩展标准 Manifest V3 ,也不提供 webRequestBlocking 了,只提供 declarativeNetRequest ,所以 uBlock Origin 一样无法移植到 Manifest V3 上,一堆人很大意见。
两种 API 的区别:
* webRequestBlocking 浏览器告诉扩展用户每个请求的完整 URL ,扩展返回决定是否拦截。扩展得到完整 URL ,可以做其它事,例如把 URL 发送到自己的服务器记录下来。
* declarativeNetRequest 扩展告诉浏览器一些像正则表达式那样的“拦截规则”,浏览器自己做判断是否匹配拦截,扩展无法得知每个请求的完整 URL ,有效保证用户隐私。
如果在 iOS 的 Safari 的“扩展”管理页面,看到“内容拦截器”,说明使用了 declarativeNetRequest 这个 API ,所以在 iOS 上安装 Safari 去广告 App ,本质就是订阅了一堆拦截规则而已,就看谁家的写的规则够丰富而已,底层技术都一样,由浏览器提供,玩不出任何花来。
考虑到 AdGuard 在 Chrome/Firefox 上深耕多年,积累的规则足够丰富。而 uBlock Origin 也在使用 AdGuard 的部分规则,这些规则在 Github 在以 GPLv3 开源 /AdguardTeam/AdguardFilters 。
所以,iOS 上感觉装个 AdGuard 免费版就够了。