如何在Firefox中*无需*安装插件地恢复表单?[重复]


33

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

我在讨论板上键入了几个段落,但是当我单击“提交”按钮时,该站点正在进行(计划外的)计划维护,而“后退”按钮决定刷新页面,使我的段落被遗忘。

快速的网络搜索显示,Lazarus为Firefox提供了表单恢复功能。但是,安装插件需要重新启动Firefox,即使重新启动Firefox(我尚未完成)之后,Lazarus也无法恢复尚未备份的表单。

既然马已经离开了谷仓,我想做些不可能的事情:恢复我输入的部分或全部文本,而无需重新启动浏览器。


编辑:我应该澄清。 Lazarus是防止未来表格数据丢失的绝佳解决方案。这个问题是针对那些已经离开其形式并丢失其内容的人,但希望有某种方法可以挽救这种情况。我的解决方案是获取进程的核心转储并通过它进行grep,但是可能会有外行的方式来进行此操作(例如,以某种方式使Firefox加载上一页的缓存版本)。因此,仅解决将来的问题而不解决当前问题的解决方案在该问题中是不切实际的。


1
我认为您已经在这里回答了自己的问题...
John T

2
@John T:的确如此。我只是为有相同问题的其他人创建Google饲料,但是如果有人有更好的建议,当然欢迎他们。
乔伊·亚当斯

8
这不是完全相同的副本。所引用问题的主要答案需要安装插件,如果用户已经丢失表格,该插件将对用户没有帮助。
乔伊·亚当斯

我遇到了同样的情况。一个解决方案将是非常好的。即使面对未来的表单数据丢失,我也在寻找解决方案。拉撒路很有前途,但他有一点一点不工作的弱点。
Nicolas Barbulesco 2014年

1
superuser.com/questions/512669/…是相关的,并通过Web Developer工具技术为我提供了可行的解决方案。
pbhj 2015年

Answers:


57

不要重启浏览器或按返回按钮!

在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,按Enter键,等待并向下翻页,直到看到可识别的内容:

替代文字

am! 如果您不喜欢此结果,请输入“ n”查看是否还有其他结果。另外,请确保对垃圾进行校对,以免最终导致发布:

我的头脑常常会用这种语言产生糊涂的想法。

我想它像这样被破坏了,因为保存您的论文片段的内存不再分配,并且被后续分配践踏。

在Windows上:

程序是一样的。首先,创建Firefox的核心转储。这可以在任务管理器中完成。用英语,菜单项是Create Dump File

抛弃Firefox核心

倾销需要几秒钟。

核心转储位置

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

HxD搜索转储


1
即使按下后退按钮,也可以在Windows上为我工作。现在,考虑到Firefox创建的许多过程,这甚至更加费力,但是在保存所有过程并使用工具(FAR管理器)同时搜索多种编码后,它就可以工作了(在我的案例中,结果是UTF-16 little endian)。
alexandroid

在Linux上使用铬。必须刷新页面以通过监视来确定页面是哪个进程htop(chrome似乎创建了很多线程)。
passerby51

1

第一件事-表单通常不被缓存。因此,无论您提交的内容是什么,都已转到该站点,如果它丢弃了,则表示您已经完成。您需要重新输入。

Lazarus使用SQLite DB存储您的表单数据(当然,只有在安装后)。

ps:核心转储是做有需要的事情的可爱尝试,但是我想知道这样做是否有付出一定努力的好处(这在间谍软件/恶意软件技术中会更有用,Joey这里没有冒犯之处)。


1
实际上,核心转储技术原来比我预期的要容易。
乔伊·亚当斯

@Joey,它为您服务,然后您为自己的问题声明了解决方案。我想知道每个遇到相同问题的人的情况如何-他们应该安装拉撒路(Lazarus)之类的东西还是等待获得核心转储并试试运气?如果是这样,那么请牢记这两件事是如何工作的。
尼克,

1
实际上,核心转储技术对我来说非常有用,而且操作非常简单。
lvella

2
针对未来的表单数据丢失,拉撒路是有希望的,但他根本不工作的轻微疲软。
Nicolas Barbulesco 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.