如何从工作区或直接从应用程序获取显示的数据?

如何从工作区或直接从应用程序获取显示的数据?

由于某种原因,我不得不使用另一个网络浏览器,而不是我每天使用的主浏览器,并且我选择了一个很久以前安装的小型浏览器。这个浏览器叫做Dooble,版本0.07(dooble-0.0+svn874),我已经使用它大约两周了。

这段时间我打开了很多网站,以后需要再次打开,所以我需要浏览历史记录。我在开始使用它之前检查过它是否保留了这段历史。现在我想访问历史记录并保存或导出或只是查看它。但它有一个问题。

历史记录显示在菜单栏中的列表中,如“文件”、“编辑”或“帮助”。该列表太大,无法在可见工作区中显示。它向下滚动到工作区的末尾,然后无限制地向右滚动(只是从屏幕中滚出),大约 95% 的内容位于工作区的可见部分之外,因此我看不到历史记录浏览器会保留它。

我决定以其他方式得到它。我正在寻找磁盘上的历史记录,因为我怀疑它可能存储在文件中。我检查了它使用/通过命令“lsof”生成的文件列表,并且没有与 Dooble 连接的文件。

我还在 ram 内存中进行了搜索,复制了 ram 的图像并在十六进制编辑器中打开,并寻找适当的字符串,但没有结果。

截取活动窗口屏幕截图的想法也是错误的,因为它只截取可见部分。就我而言,无法更改显示器的分辨率。我认为浏览器可能会加密存储在 ram 中的历史记录,就像在当前版本中一样,但我的版本非常旧(可能是 2008 年),并且我没有相关文档或帮助文件以及规范。

而且我使用交换,但我无法读取其内容。交换是一个文件,当我复制它并像 ram 的图像一样打开时,里面除了零之外什么都没有 - 该文件充满了零,尽管交换在某些部分已满,我可以看到在终端中输入“free”。

这是这个版本的来源:http://dooble.sourcearchive.com/documentation/0.0plus-psvn874-0ubuntu2/dir_9cc8d803eb63e208c05c995ec1941f6c.html,我不是程序员,不理解它,但也许它有助于找到任何解决方案,如果是这样,请告诉我如何使用它。

我使用 Ubuntu 和 Gnome。我无法关闭浏览器和显然系统,因为历史记录将被永久删除。我真的相信这里有人知道在我的情况下该怎么做。我不擅长 IT,所以我会感激每一个提示。

答案1

至少您使用的 Dooble 版本根本没有实现历史记录保存。设置窗口中的相关选项只是存根。

从记忆中提取历史是非常困难的。你能做的,至少是从内存中获取一些 URL 列表。由于 URL 可能在内存中被分割到不同的位置,并且内存中还有更多来自其他来源(缓存、库等)的 URL,因此您只能得到部分结果和很多“垃圾”。

假设Dooble的PID是21059(使用pgrep Dooble获取):

$ gdb -p 21059
(gdb) generate-core-file
Saved corefile core.21059
(gdb) detach
(gdb) quit

然后你可以在核心文件中搜索,例如

$ strings core.21059 -n 8 --encoding=l | grep "^http://" | 

或者

$ strings core.21059 -n 8 --encoding=l  | grep "^https://"

对于 URL。从 grep 表达式中删除^(matches start-of-line) 会提供更多结果,但也会产生更无趣的输出。

答案2

Dooble 的历史记录似乎存储在名为history.db 的SQLite 数据库中,位于~/.dooble 或%userprofile%\.dooble 下

http://sourceforge.net/p/dooble/code/HEAD/tree/trunk/browser/Source/dhistory.cc

答案3

我知道我不应该回答我的问题,但我找到了一些有用的解决方案,所以在这种情况下我希望我被允许。

我之前跳过了一个文件,因为它的名称是“WebpageIcons.db”。它大约有 2MB,所以我检查了内容,这是一个带有 Web 图标的 SQLite 数据库,这些图标连接到几乎每个或几乎每个访问过的网页之一导出数据库的一个表可能不是实际的历史记录,但它可以用作此,因为看起来就像包含所有访问过的页面的列表。

顺便说一句,我想感谢@esnyder、@Anthon、@Gilles,尤其是@jofel,他们给了我最好的解决方案,因为几乎可以工作。

我也根据 jofel 的建议做了这件事,在输出中我可以看到我访问过的网站的地址,甚至是非常可读的格式 - 带有标记,因此搜索<a href>足以获取网站列表。很难确保那里是否有一切,但似乎不是——只是网站的很大一部分。这有点不合逻辑,为什么只有部分网站而不是全部网站都存储在那里,其余部分来自历史列表,但这是一个细节。

我可以问你别的事吗?历史记录怎么可能在 GDB 生成的 core 文件中而不是在 /proc/kcore 文件中?请您或任何人向我解释一下吗?

相关内容