请勿重新启动浏览器或按后退按钮!

请勿重新启动浏览器或按后退按钮!

可能重复:
如何在 Firefox 中恢复网页的表单信息

我在讨论板上输入了几段文字,但当我单击提交按钮时,该网站正在进行(非)计划内维护,后退按钮决定刷新页面,导致我的段落被遗忘。

快速的网络搜索显示拉撒路为 Firefox 提供表单恢复功能。但是,安装插件需要重新启动 Firefox,而且即使重新启动 Firefox(我还没有这样做),Lazarus 也无法恢复尚未备份的表单。

现在马已经出谷了,我想做一件不可能的事:恢复我输入的部分或全部文本,而无需重新启动浏览器。


编辑:我应该澄清一下。 拉撒路是预防的绝佳解决方案未来表单数据丢失。这个问题是针对以下情况的人:已经离开表单并丢失了内容,但希望有办法挽救这种情况。我的解决方案是获取进程的核心转储并通过 grep 进行查找,但可能有一种外行人可以做到的方法(例如,以某种方式让 Firefox 加载上一页的缓存版本)。因此,只解决未来问题而不解决当前问题的解决方案与这个问题无关。

答案1

请勿重新启动浏览器或按后退按钮!

在 Linux 上:

这个解决方案是碰运气的,在 Linux 上有效。简而言之:转储 Firefox 进程的内存,并在其中搜索文本片段。这很丑陋,但这是你最后的手段。

首先,使用该实用程序转储核心gcore,这需要安装 gdb(GNU 调试器):

$ ps -e | grep firefox
 7089 ?        00:02:23 firefox
$ gcore 7089
[New Thread 0xa8ffeb70 (LWP 8924)]
[New Thread 0xb25feb70 (LWP 8531)]
[New Thread 0x9d7feb70 (LWP 8527)]
... snip ...
[New Thread 0xb5ffeb70 (LWP 7099)]
[New Thread 0xb67ffb70 (LWP 7098)]
[New Thread 0xb72f8b70 (LWP 7097)]
Saved corefile core.7089

请注意,核心转储可能占用几百兆字节的磁盘空间。

如果成功了,你现在可以松一口气了。如果你的文本偶然留在内存中,它已被捕获到核心转储中。

现在,尝试记住你文章中的一个短语(例如,“深远的影响”),并grep看看它是否存在于文档中:

$ grep 'a profound effect' core.7089 
Binary file core.7089 matches

如果您得到“二进制文件...匹配”,很好,它就在那里!如果没有,请尝试更多短语。如果您的所有grep尝试都产生空输出,那么您的文章可能永远消失了,您对此无能为力。(您可以尝试grep -R 'a profound effect' ~/.mozilla,但我怀疑它是否会起作用)

假设您确实得到了匹配,那么下一个任务就是切出包含您要查找的文本的核心转储片段,然后less直观地查看它:

$ grep -B 20 -A 20 -a 'a profound effect' core.7089 > /tmp/out
$ less /tmp/out

(您可以省略第一行而只说less core.7089,但我发现less在搜索如此大的二进制文件时,内存使用量往往会激增。)

现在,输入/a profound effect,按回车键,等待,然后向下翻页,直到看到可识别的内容:

替代文本

砰! 如果您不喜欢这个结果,请输入“n”查看是否还有其他结果。另外,请务必校对垃圾内容,以免最终发布以下内容:

我的脑海中经常会用那种语言产生大量表达想法。

我想象它之所以会被这样破坏,是因为保存你的文章片段的内存不再被分配,并会被后续的分配所践踏。

在 Windows 上:

步骤相同。首先,创建 Firefox 的核心转储。这可以在任务管理器中完成。在英语中,菜单项是创建转储文件

转储 Firefox 核心

倾倒需要几秒钟。

核心转储位置

然后,使用十六进制编辑器(如 http://mh-nexus.de/en/hxd/)打开转储并搜索丢失的文本。

HxD 搜索垃圾场

答案2

首先——表单通常不会被缓存。因此,无论你提交什么,都会被发送到网站,如果网站丢失了表单,你就完蛋了;你需要重新输入表单。

拉撒路用途SQLite 数据库存储表单数据(当然,只有在安装之后)。

附言:核心转储是一种很好的尝试,但是我不知道这样做是否具有成本效益(作为一种间谍软件/恶意软件技术这会更有用——Joey这里没有冒犯的意思)。

相关内容