“我们的浏览器已过时”测试可以被欺骗

我注意到,通过 uBlock Origin、AdGuard 甚至 AdBlock/AdBlock Plus,可以规避对 meta.discourse.orgdiscover.discourse.com 的最新检查,以避免在 Firefox 115.27.0 等浏览器上以现代模式查看页面:

! 四者之一即可:
meta.discourse.org##+js(aopw, unsupportedBrowser)
! 稳定性较差:
meta.discourse.org##+js(set, unsupportedBrowser, undefined)
meta.discourse.org##+js(set, unsupportedBrowser, false)
meta.discourse.org##+js(set, unsupportedBrowser, '')
! 每次几十次查看时,使用 set-constant 版本可能会出现竞态条件,导致内容拦截器失效,而正确预览将在简化 HTML 中启用。
  • aopw = abort-on-property-write[1]
  • set = set-constant[2] (AdBlock 和 ABP 为 override-property-read

也许应该使用更安全的方法?现在一个明显的缺点是,插入到回复或介绍性帖子中的脚注使用此技巧肯定无法正常工作(也许它使用了 CSS(除了已知的相对颜色语法问题)或过于新的 JS)。


  1. Resources Library · gorhill/uBlock Wiki · GitHub #abort-on-property-writejs- ↩︎

  2. Resources Library · gorhill/uBlock Wiki · GitHub #set-constantjs- ↩︎

抱歉,您能详细说明一下吗?

您的意思是,在旧浏览器上安装的任何 uBlock Origin 默认设置都会绕过我们的检查?

1 个赞

我将添加重现步骤 (STR):

  1. 在 Firefox 115.27.0 中从官方商店安装 uBlock Origin,因为 Firefox 附加组件的 Manifest V2 API 中没有主要的新功能会导致人们停留在过时的 uBO 版本(在其他广泛内容拦截器中,步骤类似(您自己的过滤器选项卡可能名称不同))。

  2. 转到其设置并选择“我的过滤器”选项卡。

  3. 粘贴 4 个建议中的一个(所有 4 个过滤器的简单性意味着没有必要保护其原创性,因为有人至少在我之前一天就想出了它们)。

    • 我假设还没有“订阅即忘”列表,或者一个用于 Tampermonkey/Violentmonkey/Greasymonkey 的脚本,它以“安装即忘”模式执行相同操作(并且社区或志愿者将负责列表或脚本的持续更新)。
  4. 打开或刷新论坛,页面将以“现代”外观加载,而不是简化 HTML(如果使用基于 set-constant 的版本时未发生竞态条件)。

    • 正如我所写,唯一可见的故障是脚注无法正常工作(我对网站调试了解不够,无法确定我们遗漏了什么,因为这不是唯一一个失败的“相对颜色语法”测试(气泡大小几乎为零,不仅仅是不可见的文本,如果它是相对着色的))。
    • 我没有测试登录机制是否具有任何额外的安全措施来防止登录失败,或者帐户是否被标记为需要论坛管理员解锁。
      • 我没有检查传输必要的 cookies/localStorage/sessionStorage 是否允许在论坛没有任何浏览器唯一性指纹测试以防止用户登录的情况下绕过额外的登录安全措施,或者登录用户是否有任何功能也已损坏。

也许将“全局变量”封装在脚本程序/脚本程序无法访问的“匿名函数”中就足够了,而其动态名称(例如,每 24 小时在 CDN 级别更改)的想法对于基础设施来说成本太高。

其他实现了简单 HTML 系统视图而不是在标题导航下方带有侵略性警告条的较长过渡期的论坛可以是 forum.fxsound.com,其中 apow/set-constant 目前也有效。