News Hacker|极客洞察

355 3 天前 apps.apple.com
😤uBlock Origin Lite 上架 iOS:WebExtensions 在内置 WebView 失效、规则限制与替代拦截方案
真相信 App Store 会筛掉冒牌拦截器吗?

🎯 讨论背景

uBlock Origin Lite 是 uBlock Origin 的 iOS 变体,上架后引发关于 iOS 浏览器扩展与内容拦截能力的讨论。iOS 平台存在多种拦截途径:跨平台的 WebExtensions(及 DNR 规则)、Apple 专用的 Safari 内容拦截器,以及应用使用的内嵌网页控件(如 WKWebView 或 SFSafariViewController),这些机制在权限和适用范围上差异很大。评论关注点包括内嵌 WebView 导致的 SSO/OAuth 崩溃、应用注入跟踪、iCloud Private Relay 与 DNS 层拦截(NextDNS、Pi‑hole)的交互,以及用户用替代浏览器(Brave、Orion)、付费拦截器(Wipr、1Blocker、AdGuard)或 VPN/WireGuard 隧道来规避问题的实战做法。

📌 讨论焦点

内嵌 WebView 的兼容性与隐私问题

评论普遍抱怨 iOS 应用内打开的网页视图(in‑app web views)会破坏扩展拦截与登录流程。具体例子包括 Slack 中的链接因在内嵌视图打开而无法复用已登录会话,用户被迫长按复制链接再到浏览器粘贴;企业级 SSO 在某些场景(如 Expensify)会因为应用不把登录交给能证明设备合规性的浏览器而失败。还有人指出内嵌视图(尤其基于 WKWebView 的实现)容易被注入跟踪代码(Meta/Instagram 被点名),并且会绕过私密浏览、产生难以清理的缓存并膨胀应用体积。面对这些问题,用户常用的变通方法包括在外部 Safari/默认浏览器打开链接、用系统级 DNS/VPN 层屏蔽,或等待 iOS 26 提供更广的过滤 API。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]

iOS 上不同拦截 API 的权衡(WebExtensions / DNR vs Safari 内容拦截器)

讨论深入到技术层面:uBlock Origin Lite 采用的是跨平台的 WebExtensions 路线并依赖 DeclarativeNetRequest(DNR)等机制,这让扩展能在多浏览器间通用但在 iOS 的 in‑app web views 上支持受限。与之对比,Apple 的 Safari 内容拦截器 API 是原生的规则式过滤器,历史上能在某些内嵌 Safari 视图中生效;而 WebExtensions 的优势在于可在页面上下文运行 JS 来实现 DNR 做不到的功能。评论中还提到厂商策略差异(例如 Adblock/AdGuard 提供双轨方案),以及规则数量上限(如 150K 规则限制)导致部分拦截器通过多个扩展或分片规则来规避,从而影响实际拦截覆盖度和行为一致性。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]

替代方案与实战组合(浏览器级 / DNS 层 / VPN)

许多评论给出了替代或补救策略:浏览器级替代(Brave、Orion、Vivaldi)和付费/专门拦截器(Wipr 2、1Blocker、AdGuard)在用户体验上各有优劣,有人直接把浏览器换成自带拦截功能的。网络层方案包括 NextDNS、Pi‑hole 或把设备流量通过 WireGuard 隧道到家用/云端 Pi‑hole,实现对所有应用的域名级拦截;还有用户分享用阿尔巴尼亚 VPN 临时避开 YouTube 广告的技巧。评论也提醒这些方案的限制:NextDNS 可能被 iCloud Private Relay 干扰,Wipr 2 的全局拦截功能依赖 iOS 26 的新 API,组合付费工具(例如 Wipr + AdGuard Pro)是常见的折中方案。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]

信任、商店分发与隐私披露的担忧

不少用户对 App Store 上拦截器的信任度表示怀疑,担心山寨或名称相近的应用冒充知名拦截器并收集数据或成为供应链攻击载体。评论指出苹果的“应用隐私”披露分类过于宽泛,会把应用内分析或 UI 统计也列为可能的数据收集项,使得普通用户难以判断真实风险;虽然后端的内容拦截组件在系统层通常被隔离、无法读取浏览器内容,但宿主 App 本身仍可能收集元数据。由于这些不确定性,许多人更倾向于选择社区验证过、有源码托管的项目,或转向 DNS/自托管方案以缩小信任边界。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]

可用性、效果差异与测试误导

用户体验和拦截效果在不同工具间差异很大:有评论抱怨 uBlock Origin Lite 界面难看、配置容易重置且需要授予“完全访问”才能稳定工作,另外提到在导航后退时拦截失效或第一次 Google 搜索出问题。也有人称 1Blocker 在他们常访站点上效果最好,而 Wipr/AdGuard 在不同设备上表现不一;还提醒所谓的“adblock 测试站点”可能误导用户,检测方法能被绕过或产生虚假正报。总体结论是没有万能方案,很多人通过组合工具(浏览器扩展 + DNS 层 + 专用应用)或根据自己常访网站与隐私偏好来权衡选择。

[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]

📚 术语解释

WebExtensions: WebExtensions(跨浏览器扩展标准)允许以 JavaScript 编写的扩展在不同浏览器间复用,能在页面上下文运行脚本并调用如 DeclarativeNetRequest 的过滤接口。

DeclarativeNetRequest (DNR): DeclarativeNetRequest(DNR)是 Chrome/Manifest v3 引入的基于规则的网络请求过滤 API,采用声明式规则集来拦截或改写请求,但通常受规则数量与功能限制且与运行时注入脚本的能力不同。

Safari 内容拦截器 API: Safari 内容拦截器 API(Apple 专用)是原生的规则式拦截接口,在浏览器层过滤资源且不在网页上下文执行 JS,历史上可对部分内嵌 Safari 视图生效。

WKWebView: WKWebView(iOS 的可嵌入网页控件)供应用在界面内渲染网页,开发者对其有高度控制,容易被用于自定义内置浏览器并注入跟踪或产生会话隔离问题。

SFSafariViewController: SFSafariViewController(iOS 的“迷你 Safari”视图控制器)外观更像系统 Safari 并共享部分浏览器上下文,应用定制能力有限,通常能更好地保留浏览器的隐私/会话语义。

iCloud Private Relay: iCloud Private Relay(苹果的隐私隧道服务)会改变 Safari 流量的路由与解析,可能导致基于系统 DNS 的过滤服务(如 NextDNS)在 Safari 中失效。

DNS 层拦截(NextDNS / Pi‑hole): DNS 层拦截(例如 NextDNS、Pi‑hole)通过域名解析层面阻断广告与跟踪域名,可实现对全部设备或 VPN 路由流量的过滤,但会受到某些系统服务或应用自定义网络行为的影响。

WireGuard: WireGuard(VPN 协议/实现)常被用来将设备流量导向家中或云端的过滤器(如 Pi‑hole),以实现跨应用的系统级广告/跟踪拦截。

150K 规则上限: 150K 规则上限 指的是部分平台或 API 对可加载过滤规则数量的限制,限制会迫使开发者采用分片规则或多个扩展来覆盖更多过滤项。