我想从 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 或任何其他可读格式?
最佳答案
好吧,我今天度过了愉快的一天,解决了这个问题,并结束了创建一个 Python 工具,该工具可以从这些 indexedDB 数据库文件中读取数据并打印它们(在某些时候可能会更多):https://gitlab.com/ntninja/moz-idb-edit
先回答问题的技术部分:
key
(名称)和 data
(值)都使用 Mozilla 专有格式,目前其唯一文档似乎是其源代码。 对于所有实际意图和目的,您可以通过下载上述项目来读取任何扩展的单个存储 key 的值。基本用法是:
$ ./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}
是您想要查询的键的名称(不幸的是查询所有尚不支持键)。目前也不支持写入数据。
当我实现更多功能时,我会更新这个答案(或者在项目页面上给我一个问题!)。
关于sqlite - 从 Linux bash 解析 FB-Purity 的 Firefox idb(索引数据库 API)object_data blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54920939/