不久前我编写了一个 NodeJS 脚本,可以通过读取存储通知的 LevelDB 数据库来读取 Chromium 通知。我使用它来更细致地处理通知,并将其与我的手机同步。
问题是,在接下来的几个月里,Chromium 浏览器将不再支持 MV2,以及我制作的一些扩展,所以我很快就需要转向 Firefox。
所以我需要知道 Firefox 是否/在哪里存储其推送通知,这样我就可以让脚本与 Firefox 兼容,否则我就得让 Chrome 在后台运行只是脚本无法正常工作,但这并不理想。
我尝试过查看 Firefox 源代码,看看是否可以找到拦截/读取通知的方法,但我不懂 C++,所以这只是碰运气。
我确实发现了这些可能很重要的文件:
更新 2024-03-18:
alert.js
我设法从omni.ja
安装文件夹的根目录提取并修改它以拦截通知。(实际上只是访问window.arguments
内部prefillAlertInfo
)
现在的问题是,单击通知时定向到的 URL 似乎无法在该文件中访问。当用户单击通知时,gAlertListener.observe(null, "alertclickcallback", gAlertCookie)
会调用该 URL,并在浏览器上创建一个新选项卡。我尝试阅读,gAlertListener.observe
但我得到的只是[native code]
,我不知道从这里去哪里。
更新 2024-03-19:
在配置文件文件夹的根目录中找到了一个名为的文件notificationstore.json
。那里保存着很多有关通知的信息。但我仍然无法获取回调 URL。我尝试使用 NodeJS 解码data
通知字段,该字段似乎是 Base64 编码的,Buffer.from(<encoded data string>).toString()
但输出了一些格式非常错误的 JSON,回调 URL 似乎在那里,但很难通过这种方式以编程方式提取它。
有人知道如何解码数据字段吗?我不想在这里粘贴其中一个,以防它包含敏感信息。