objective-c - 如何在 Safari v10.1 中获取 Safari 历史域图像形成缓存

标签 objective-c xcode cocoa safari macos-sierra

我想从我的应用程序中显示的 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

在此先感谢大家。

最佳答案

似乎 safari 已经更改了 safari 缓存文件的命名约定格式。仅供引用,我们在做同样的事情,我们正在为此寻找解决方法;然后我们得出如下结论 - :

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

阅读这个数据库。该数据库有一个名为“history_visits”的表,其中包含触发 url 的时间戳及其唯一 ID

使用此唯一 ID,您将在另一个名为 "history_items"

的表中找到触发的 url

根据数据库查找匹配相同时间戳的缓存图​​片。

如果匹配,那么它可能就是您正在寻找的正确图片。

另一个重要的事情是——: 这不是根据 safari 历史获取准确图像的问题的完整证明解决方案,它只是我们提出的解决方案。

关于objective-c - 如何在 Safari v10.1 中获取 Safari 历史域图像形成缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039504/

相关文章:

objective-c - 如何在 Cocoa 桌面应用程序中实用地创建和加载多个 View ?

ios - 虽然我遵循 _Block ,内存泄漏发生@ ASIHTTPRequest

ios - 检测两个节点上的屏幕位置

iphone - 为什么 NSFileManager 无法打开文件?

ios - IOS中如何去除UILabel中多余的空格

objective-c - NSTimer 问题

ios - 在不关闭键盘的情况下在文本字段之间切换时 Xcode 约束中断

ios - Xcode Swift 3.0 通知框架应用角标(Badge)未更新

swift - 将 Binding<Int> 与 TextField SwiftUI 一起使用

iphone - 检查 nsstring 是否与另一个字符串匹配