问题
前几天遇到的,在 Zen 里登录会卡在 Oopz 的登录页,换成普通 Firefox 或者 Edge 就没问题了
检查后发现不是 ublock origin 的拦截也不是 篡改猴 里脚本的问题
原来是因为我的 Zen 开了 RFP (Resist Fingerprinting)
这个功能可以在 about:config 中通过 privacy.resistFingerprinting 调整
RFP 与在 严格级别下的增强型跟踪保护 自动开启的 FPP (Fingerprinting Protection) 不同
FPP 只会拦截 已知的数字指纹跟踪程序 ,总而言之类似一份记录追踪器的清单
而 RFP 还会拦截 存疑的数字指纹跟踪程序 ,它会:
- 破坏 Canvas 的正常加载 (官方的说法是向 Canvas 元素中生成的图像引入随机数据)
- 阻止网页读取你的本机字体列表
- 混淆屏幕触摸点数量
- 混淆你的屏幕分辨率
- 混淆你的处理器数量
总之就是因为 Oopz 的登录页需要使用 Canvas 渲染
然而似乎只有它的左边那个图标要用 Canvas 渲染 (登录页里), 选择使用微信登录是调用微信接口获得的二维码图片
所以意义何在? 直接展示图片不就好了吗??
当然还有可能是为了获取你的 Canvas 指纹 (不过这就是隐私保护方面的事情了)
而浏览器没有直接弹出 要允许 web.oopz.cn 使用您的 HTML5 Canvas 图像数据吗? 这个弹窗
默认情况下这个弹窗是会自动弹出来的,我在其他网站上测试了
整个窗口都被阻塞了,没法刷新,也没法开关开发者工具 (几秒后),也没法出现右键菜单 (Oopz 默认拦截了,但我是绕过后测试的)
卡死极有可能是因为 Oopz 的前端脚本在获取 Canvas 数据失败 (或被挂起等待) 时,缺乏异步处理或超时熔断机制,导致主线程阻塞。
这不像是浏览器的问题,应该是 Oopz 代码的问题
解决方法
给它 Canvas 权限,主动点出来地址栏右边的那个图片/相框状的小图标
虽然是阻塞了窗口,但是这个窗口依旧能点出来
同意后刷新页面就可以了
GitHub Discussions