[从Linux bash脚本中,我想读取由称为FB-Purity的特定Firefox附加组件存储的结构化数据。
[我已经找到一个名为.mozilla/firefox/b8eab5j0.default/storage/default/moz-extension+++37a9788c-671d-4cae-ba5c-fbdb8788499a^userContextId=4294967295/
的文件夹,其中包含一个包含字符串.metadata
的moz-extension://37a9788c-671d-4cae-ba5c-fbdb8788499a
文件,该URL在Firefox中打开时显示了附件的详细信息,因此,我很确定此文件夹属于附件。
该文件夹包含一个idb
目录,听起来像Indexed Database API,这是W3C标准apparently used since last year by Firefox,用于存储加载项数据。
idb
文件夹仅包含一个空文件夹和一个SQLite文件。
不幸的是,SQLite文件没有包含很多应用程序结构化数据,但是object_data
表包含95KB的blob,其中可能包含实际的结构化数据:
INSERT INTO `object_data` VALUES (1,'0pmegsjfoetupsf.742612367',NULL,NULL,
X'e08b0d0403000101c0f1ffe5a201000400ffff7b00220032003100380035003000320022003a002
2005300610074006f0072007500200055007205105861006e00690022002c00220036003100350036
[... 95KB ...]
00780022007d00000000000000');
问题:知道这个Blob的格式是什么?如何将其提取(使用命令行或任何库或Linux工具)为JSON或任何其他可读格式?
名称key
(名称)和data
(值)均使用Mozilla专有格式,该文档此时唯一的文档似乎就是其源代码。
键使用特殊的针对此用例的编码,其粗略描述在mozilla-central/dom/indexedDB/Key.cpp中可用–该文件还包含唯一的已知实现。它的独特卖点似乎是这样的事实:它相对紧凑,同时与所有可能的索引类型websites may throw at you兼容,并且默认情况下处于正确的二进制排序顺序。
$ ./moz-idb-edit --extension "${EXT_ID}" --profile "${MOZ_PROFILE}" "${STORAGE_KEY}"
${EXT_ID}
是扩展名的静态ID(如果不确定,请检查其manifest.json
文件或查看about:support#extensions-tbody
),${MOZ_PROFILE}
是Firefox配置文件目录(也在about:support
中),${STORAGE_KEY}
是扩展名您要查询的密钥的名称(不幸的是,尚不支持查询所有密钥)。当前也不支持写入数据。
我将在实现更多功能时更新此答案(或在项目页面上给我一个问题!)。