Show HN:通过滥用 HTTP 103 响应,在无需 JavaScript 的情况下检测广告拦截
技巧:通过 HTTP 103 Early Hints 检测广告拦截
- 评论者认为 HTTP 103 机制在技术上很巧妙,并且是第一次了解 Early Hints。
- 关键洞见:在主 HTML 之前被提示的资源可以让服务器推断浏览器/广告拦截器是否获取了它们,然后据此调整后续 HTML。
- 有人指出,也可以使用
LinkHTTP 标头,或者部分流式传输 HTML 并暂停以观察子资源加载来实现类似技巧,而且无需 JavaScript。
可行性、可靠性与浏览器行为
- 怀疑者认为,这种方法在大规模使用中大概率过于脆弱:
- 企业代理和较旧的技术栈可能会错误处理 103 响应。
- 许多网站不会流式传输 HTML,或者采用横向扩展,使得所需的有状态协调代价高昂。
- 另一些人指出,Chrome 的设计(始终加载 Early Hints,并对扩展隐藏它们)使这在今天主要是 Firefox 特有的问题。
- 一个缓解建议是:浏览器可以始终加载 Early Hints,但丢弃或延迟它们,或者完全阻止 103,不过这可能会损害性能。
军备竞赛:广告拦截器、DRM 与反用户功能
- 不少人预见到持续升级:
- 更强的反广告拦截措施,可能采用类似 DRM 的技术(例如,面向网页的 Widevine 式保护、Web Environment Integrity 提案)。
- 如浏览器/操作系统级别,甚至 HDMI 级别的广告移除叠加层之类的对抗措施。
- 有人指出,当前广告拦截器无法轻易阻止嵌入 DRM 的广告;也有人反驳说,DRM 一直以来都可以、也仍然可以被绕过,不过硬件级保护会使这更复杂。
广告的用户体验、伦理与经济学
- 许多用户表示,他们屏蔽广告主要是因为烦人、侵入性、跟踪以及恶意软件风险,而不是为了节省带宽。
- 有人认为破坏广告拦截是不道德的,甚至应该违法;也有人坚持网站有权拒绝向使用广告拦截器的用户提供服务。
- 讨论中也出现了“强制显示广告是否会把用户赶走,还是对可持续性是必要的”这一问题;结论被认为并不明确。
- 讨论的替代方案包括:
- 以算力付费(例如受控的加密挖矿)对一些人很有吸引力,但有人批评它对电池设备不友好,而且利润很可能远低于定向广告。
- 付费、无广告的模式虽然存在,但往往很贵,仍然包含广告或跟踪,或者对于不常访问的网站来说并不现实。
安全/披露与元讨论
- 有人认为,这种技术应该先私下报告给浏览器和广告拦截器开发者;也有人将其视为典型的“白帽 vs 黑帽”披露两难。
- 多条评论强调,用户、发布者、广告商和平台都应为当今敌对的广告生态承担责任。