如何从Safari v10.1缓存中获取Safari历史记录域图像?

5
我想在我的应用程序中获取Safari中显示的图像。我必须根据域区分所有缓存图像,因此在Mac OS X12.4和Safari v10.1的新更新之前,我从以下位置获取图像: ~/Library/Caches/com.apple.Safari/WebKitCache/Version 例如,我从以下位置获取google.com的图像-: ~/Library/Caches/com.apple.Safari/WebKitCache/Version 9/Records/google.com 在此位置,操作系统通过域名文件夹保存图像。但是,在更新后,它们将域名更改为一个不同的字符串,如下所示: ~/Library/Caches/com.apple.Safari/WebKitCache/Version 9/Records/1A71C22C3069617815FB52ACDEB96918BD33D7DD 在这种情况下,我无法按域名指定图像。
我尝试了解决此问题的所有可能性,因此请问是否可以按域检索浏览器缓存图像或者可以验证哪个域缓存了哪个图像。
我之前得到的内容:

earlier images from browser

更新后我得到的结果是 - :

later images from browser

大家提前感谢。


我不确定...但是,WebKit是开源的。如果你非常想得到答案,也许在挖掘一番后你能在那里找到它(另一方面,也许不行,我不知道这个逻辑是存在于WebKit还是Safari中)。https://github.com/WebKit/webkit/blob/8bf56e25f2c6791f517b676158503b3f32f7f2b3/Source/WebKit2/UIProcess/WebsiteData/WebsiteDataStore.cpp - Jordan Smith
如果您正在寻找检索丢失的数据、页面缓存的方法,我建议在VS Code中打开WebKitCache文件夹并使用搜索功能(cmd+shift+f)查找关键词。我发现有数GB的完整js、css和html文件,它们都有着神秘的文件名。 - northamerican
1个回答

0

看起来 Safari 已经更改了 Safari 缓存文件的命名约定格式。我们也遇到了同样的问题,并正在寻找解决方法;然后我们得出以下结论:

Safari 将其历史记录数据库维护在以下位置: ~/Library/Safari/History.db

读取此数据库。该数据库有一个名为“history_visits”的表,其中包含触发 URL 的时间戳和其唯一 ID。

使用此唯一 ID,您将在另一个名为“history_items”的表中找到触发的 URL。

查找与数据库中相同时间戳匹配的缓存图像。

如果匹配,则可能是您要查找的正确图像。

另一个重要的事情是-: 这不是根据 Safari 历史记录获取精确图像的完美解决方案,这只是我们想出的解决方案。


那是个很棒的答案,谢谢! - Ron Gahlot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接