今天,万众期待的 Firefox 的新界面(代号 Nova)终于在 Firefox 157 正式版上线了!
试用了下,发现新界面在内测时的各种 BUG 已经基本修好了,早期 Nova 设计中丑陋的网页圆角边框也移除了。虽说我其实并不喜欢这圆圆的设计以及神秘的渐变色,但能在 AI slop 盛行的年代用到这样正常运作的软件,不禁让我有些感动。
感动之余,先改个主题把这渐变色去掉吧… 嗯?在更改主题的下面,怎么还多了个自定义浏览器图标的功能?好奇的我点了进去…
好家伙,怎么还要还要做两个小任务来解锁特殊图标。这是 Mozilla 从拼多多学来的营销小技巧吗?
显然,我并不想将 Firefox 固定到任务栏,更不想把它设置为默认浏览器。有什么办法可以绕过这个「付费」墙,使用这些新图标呢?
@Grok is this real?
更换图标作为一个最近才加入的功能,网上并没有什么资料。或者说,一般也不会有人闲着没事一定要去绕过这两个小任务来换图标吧…
这种场景就很适合让 AI 去研究了。Firefox 是开源软件,我们可以直接让有联网权限的 AI 去读代码,看看这些图标是怎么上锁的。既然是绕过「付费」墙,我们就让道德限制较低的 Grok 来试试吧。
@Grok 我想使用 Firefox 新加的更换浏览器图标功能,但一部分特殊图标需要做任务才能解锁,显示“Complete and unlock bonus fox icons to personalize Firefox.”。
请帮我找到无需做任务也能使用这些特殊图标的方法。并提供在 F12 里可粘贴的代码来解锁设置页的图标锁,这样能更可靠地触发图标更换流程。
Grok 很快就会阅读 Firefox 源码,找出方法。例如,我们可以在开发者工具里(F12 → Console),粘贴以下代码来解锁这些图标:
document.querySelectorAll('[data-l10n-id*="appearance-browser-icon-"][disabled], .icon-option[disabled], button[disabled][data-icon-id]').forEach(el => { el.disabled = false; el.removeAttribute('disabled'); el.classList.remove('disabled', 'locked'); });
Momo 图标真好看,AI 也真好用呢。
实际上,最近我在开发浏览器扩展程序时,一些浏览器自身缺少文档的行为细节,也会让 AI 直接看浏览器的源码,让 AI 从代码中找出问题的答案。(例如,在 Firefox 的 wheel 事件中,e.deltaY 与 e.deltaMode 读取的先后顺序会对他们的值有何影响?)
假如世界上没有 AI…
假如世界上没有 AI,要如何绕过 Firefox 的限制来解锁这些图标呢?
我们先打开开发者工具(F12),看一看特殊图标周围有什么线索。比如,这个“Pin to taskbar”按钮,在用户点击并将浏览器实际固定到任务栏后,按钮状态应当是会变化的。
点击元素选取工具,选择这个按钮,发现它带了一个 browserIconPinButton 的 id。浏览器为了更改这个按钮的状态,可能就会在 JavaScript 代码中,通过这个 id 去选择这个按钮。
不妨在 Debugger → Search 里搜索一下 browserIconPinButton,很快就找到了相关代码。
在右边的代码中可以看到,用户点击“Pin to taskbar”按钮后,Firefox 会调用 refreshUnlockState() 函数来刷新特殊图标的解锁状态,我们找到这个函数看看他的逻辑。

这里的 unlocked 便是决定图标是否解锁的关键。
我们可以在这一行设置断点,刷新页面。在成功命中断点后,打开 Console,在里面手动将 isDefault 和 isPinned 两个变量赋值为 true(假装我们已经将 Firefox 设置为默认浏览器并固定到任务栏),并恢复页面执行。
点击恢复页面执行后,我们发现刚才的赋值使我们成功绕过了限制,激活了特殊图标!
这里还有一个小技巧:除了设置断点手动赋值,我们也可以右键点击 76 行的行号,选择条件断点,然后像这样设置一个条件断点:
在设置成功后,条件断点位置会变成黄色。条件断点的作用是,如果我们设置的语句执行结果为 true,程序才会在这里中断执行。
我们只是利用了条件断点在断点处会执行语句判断的特性,在这里为两个变量强制赋值为 true。由于我们在最后写了 ; 0,这段代码的执行结果始终是 0(false),也就是无论如何都不会中断执行。
刷新页面,会发现此时断点虽然没有中断网页执行,但赋值语句依然成功解锁了特殊图标。
就这样,我们成功花费了 10 分钟,解锁了原本只要点两个按钮花 20 秒就能解锁的图标!(可能还要再花 20 秒把默认浏览器改回 Chrome)
不过,看着 AI 自己解决问题的过程,并自己亲手尝试看看,似乎还挺有趣的。在我看来,AI 能解决问题的范围是由其能力与使用者本身的能力共同决定的。在 AI 越来越强的同时,我也希望我能追上它的脚步,让 AI 成为解决问题的工具,而不是一个许愿机器。
Coxxs








