cns*_*nst 31 firefox backup json session-restore
我正在尝试处理 Mozilla Firefox 的专有文件格式.jsonlz4
,例如用于sessionstore-backups/recovery.jsonlz4
,但无济于事。
我如何取回我的数据,特别是我在崩溃会话的某些文本区域中输入的一些长文本?这是我的数据!
cns*_*nst 23
谷歌的结果很少能真正产生可行的解决方案,但是,根据https://www.reddit.com/r/firefox/comments/2ps6wg/jsonlz4_bookmark_backups/,以下似乎最可靠:
in about:config
,将devtools.chrome.enabled
设置从默认false
值切换为值true
从 Firefox 中打开Scratchpad:
在Firefox Scratchpad的菜单栏中,将Environment从Content更改为Browser(省略此步骤将导致Exception: ReferenceError: OS is not defined
与下一步类似的错误)
在Firefox的Scratchpad中使用如下代码:
var file = "/Users/…/sessionstore-backups/recovery.baklz4";
//OS.File.read(file, { compression: "lz4" }).then(bytes =>
// OS.File.writeAtomic(file + ".uncompressed", bytes));
OS.File.read(file, { compression: "lz4" }).then(bytes => {
OS.File.writeAtomic(file + ".uncompressed.stringify",
JSON.stringify(JSON.parse(new TextDecoder().decode(bytes)),null,1))
});
Run Code Online (Sandbox Code Playgroud)
JSON.stringify
处理每行将使用多少空格的最后一个参数;放置 0 会导致整个内容打印在一行上,放置 1 会正确拆分行(放置 2 会创建太多无用的空白并增加文件的大小而没有什么好处)
点击Run
按钮
fgrep :textarea /Users/…/sessionstore-backups/recovery.baklz4.uncompressed.stringify
从终端应用程序中运行
Bob*_*Bob 17
不幸的是,由于非标准标题,标准工具将无法工作。有一个公开的提议来改变这一点。显然,Mozilla 标头是在标准 lz4 帧格式存在之前设计的;它确实包装了一个标准的 lz4 块。
也就是说,同一个错误报告包括一些替代方法。我将简要列出它们:
dd if=original.jsonlz4 of=stripped.lz4 bs=8 skip=1
去除前 8 个字节(例如使用),这应该为您留下一个有效的 lz4 块。请注意,这与 lz4框架不同。虽然大多数编程语言都有可以轻松解码块的库,但要找到一个预先构建的工具来做到这一点更加困难,例如liblz4-tool
包只接受帧格式。小智 13
我发现以下方法在 Ubuntu 20.04 上测试有效:
从https://github.com/jusw85/mozlz4下载 mozlz4 的 linux 二进制文件。然后运行以下命令:
chmod u+x mozlz4-linux
./mozlz4-linux -x filename.jsonlz4
Run Code Online (Sandbox Code Playgroud)
Ubuntu 20.04 存储库有一个名为 lz4json 的包。我还没有检查过它是否存在于以前的 Ubuntu 版本中。
要安装和使用它,请运行
sudo apt install lz4 lz4json
lz4jsoncat ~/.mozilla/firefox/*default*/sessionstore-backups/recovery.jsonlz4
Run Code Online (Sandbox Code Playgroud)
上面的输出将显示一个缩小的 json。为了使其可读,您可以使用“jq”json 解析器:
sudo apt install jq
# then pipe the output of the previous command through jq to make it readable:
lz4jsoncat ~/.mozilla/firefox/*default*/sessionstore-backups/recovery.jsonlz4 | jq
Run Code Online (Sandbox Code Playgroud)
如果您只想查看 URL 列表和页面标题,可以使用以下命令:
lz4jsoncat ~/.mozilla/firefox/*default*/sessionstore-backups/recovery.jsonlz4 \
| jq '.["windows"] | .[0] | .["tabs"] | .[] | .["entries"] | .[0] | .url,.title' \
| grep -v 'New Tab' | grep -v 'about:newtab' | sed 's/"http/\n"http/g'
Run Code Online (Sandbox Code Playgroud)
小智 8
在 Firefox 版本 106 上,接受的答案不再适用于我。
\nScratchpad 被浏览器控制台取代,OS.File 被 IOUtils 取代:https://firefox-source-docs.mozilla.org/dom/ioutils_migration.html
\n以下是更新的步骤:
\n在 about:config 中,将 devtools.chrome.enabled 设置从默认值 false 切换为 true 值
\n在 Firefox 中打开浏览器控制台:
\n在控制台中您可以按Ctrl+B进入多行模式
\n在控制台中使用这样的代码:
\nlet file = \'/Users/\xe2\x80\xa6/sessionstore-backups/recovery.jsonlz4\';\nlet data = await IOUtils.readJSON(file, { decompress: true });\nIOUtils.writeJSON(file + \'.uncompressed\', data);\n// alternately for pretty printing\nIOUtils.writeUTF8(file + \'.uncompressed.pretty\', JSON.stringify(data, null, 1));\n
Run Code Online (Sandbox Code Playgroud)\n单击运行按钮
\n从终端应用程序fgrep :textarea /Users/\xe2\x80\xa6/sessionstore-backups/recovery.baklz4.uncompressed.stringify
中运行
小智 5
我能够使用以下专门为此目的设计的免费在线工具从{profile-dir}/sessionstore-backups/recovery.jsonlz4文件中提取 URL :
https://www.jeffersonscher.com/ffu/scrounger.html
同一个站点提供了一个类似的工具来解密{profile-dir}/bookmarkbackups目录中的jsonlz4文件。
归档时间: |
|
查看次数: |
14446 次 |
最近记录: |