请停止滥用新 Web 标准特性
正确地使用 Web 标准特性
开发者使用新特性的好处,正确的做法是什么?
使用 PWA 系列特性,例如 Service Worker 为用户提供接近原生的体验。
使用 WebRTC 系列特性,实现全功能的在线视频会议。
更旧一些地,使用 Local Storage 而不是 Cookie 来存储状态信息。
残酷的现实,滥用
现状呢?许多开发者并没有将新特性用于造福用户,而是选择滥用,无论是出于服务端的利益还是偷懒。
使用 WASM 在用户的终端上软解 HEVC 视频。
使用 IndexedDB 而不是 CacheStorage 来缓存大量资源。
使用 Service Worker 在页面关闭后保持运行并与服务器通讯,推送广告。
使用 Canvas WebGL 展示繁杂的鼠标特效(轮番显示 12 个 2 字词语)。
使用 WebRTC 在未经用户允许的情况下将用户作为 P2P 节点。
如何反制
作为开发者的我们,以用户的角色使用这些产品时,如何反制这些滥用 Web 标准特性的行为?
默认为所有网页禁用 JavaScript,仅当网页无法使用时启用 JavaScript。
在
chrome://settings/content/all
排序,并删除无用的网站数据。在 UserJS 中运行
Object.defineProperty(globalThis, "WebAssembly", {})
阻止网页使用 WebAssembly。使用// @exclude-match
添加例外规则。运行
Object.defineProperty(globalThis.navigator, "serviceWorker", {})
阻止网页注册 Service Worker。在chrome://serviceworker-internals/
移除不必要的已经注册的 Service Worker。运行
Object.defineProperty(globalThis.indexedDB, "open", {})
阻止 IndexedDB。
除此之外还有很多。
由于我观察到的,滥用特性的网站大多来自中国。因此本文使用中文。顺便给出 一条好玩的东西,请先深呼吸,将他当笑话看。