可能重复:
如何在 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 的核心转储。这可以在任务管理器中完成。在英语中,菜单项是创建转储文件。
倾倒需要几秒钟。
然后,使用十六进制编辑器(如 http://mh-nexus.de/en/hxd/)打开转储并搜索丢失的文本。
答案2
首先——表单通常不会被缓存。因此,无论你提交什么,都会被发送到网站,如果网站丢失了表单,你就完蛋了;你需要重新输入表单。
拉撒路用途SQLite 数据库到存储表单数据(当然,只有在安装之后)。
附言:核心转储是一种很好的尝试,但是我不知道这样做是否具有成本效益(作为一种间谍软件/恶意软件技术这会更有用——Joey
这里没有冒犯的意思)。