Firefox推送通知存储位置及notificationstore.json中data字段解码方法咨询
我之前写了个NodeJS脚本,通过读取Chromium存储通知的LevelDB数据库来获取推送通知,用它来更精细地处理通知,还能同步到我的手机上。
但问题来了,再过几个月Chromium浏览器就要放弃对MV2的支持了,我自己做的一些扩展也会跟着没法用,所以我得赶紧转用Firefox。
现在我急需知道Firefox是否存储推送通知、以及存在哪里,这样才能把我的脚本改成兼容Firefox的版本——不然我就得一直把Chrome在后台挂着给脚本用,这实在太不方便了。
我试过翻Firefox的源码找拦截/读取通知的方法,但我完全不懂C++,基本是瞎碰运气。不过我找到了几个可能和通知相关的文件:
- alert.js
- FxAccountsPush.js
- AlertNotification.cpp
2024-03-18 更新:
我成功从Firefox安装目录根目录的omni.ja文件里提取出了alert.js,还修改了它来拦截通知(其实就是在prefillAlertInfo函数里直接获取window.arguments)。但新的问题出现了:点击通知时跳转的回调URL在这个文件里拿不到。
用户点击通知时,浏览器会调用gAlertListener.observe(null, "alertclickcallback", gAlertCookie),然后打开新标签页跳转到目标URL。我试着查看gAlertListener.observe的具体实现,但只得到了[native code]的结果,现在完全不知道该从哪里入手解决这个问题。
2024-03-19 更新:
我在Firefox配置文件的根目录里找到了notificationstore.json文件,里面存了大量通知相关的信息,但还是没法直接拿到回调URL。
我注意到通知的data字段看起来是Base64编码的,于是试着用NodeJS的Buffer.from(<编码后的data字符串>).toString()来解码,但解码出来的是格式非常混乱的内容——虽然能隐约看到回调URL的片段,但根本没法用程序自动提取出完整的URL。
有没有大佬知道怎么正确解码这个data字段?我不方便把具体的编码内容贴出来,怕泄露敏感信息。
备注:内容来源于stack exchange,提问作者lucassilvas1

