OSX Sierra 10.12.1 Safari 10.0.1
我试图在删除所有网站数据时以编程方式重现MacOS Safari-> Preferences-> Privacy-> ManageWebsiteData-> RemoveAll按钮的行为,但是,数据似乎总是存在。许多SO线程使用HTTPCookieStorage类在这些方面提出了一些建议:
if #available(OSX 10.11, *) {
cookieJar = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "Cookies")
} else {
cookieJar = HTTPCookieStorage.shared
}
cookieJar.removeCookies(since: Date(timeIntervalSince1970: 1))
使用this二进制cookie阅读器python脚本我可以在〜/ Library / Cookies / Cookies.binarycookies中验证预期的结果
我还验证了cookieJar.setCookie()等操作,并且cookieJar.deleteCookie()在此商店中进行了更改,并且cookieJar.cookies正如预期的那样。
我还根据我遇到的其他几个SO线程添加了此调用:
URLCache.shared.removeAllCachedResponses()
执行此代码后,网站数据将继续保留。 Safari->偏好设置 - >隐私 - > ManageWebsiteData似乎不受影响。
我也尝试过这里的指导并在Safari关闭时执行此操作,因为这可以使用FileManager类以编程方式实现: https://www.macissues.com/2015/06/22/how-to-fully-reset-safari-on-your-mac/
网站数据仍然存在。有没有人知道为完全删除所有网站数据需要采取的任何进一步措施?
答案 0 :(得分:0)
这会删除您应用的Cookie。例如。 NSURLSession
来电或WKWebView
受此影响。您无法从其他应用程序(Safari)中删除用户的Cookie。如果可能,这将是隐私/恶意软件问题。
如果这不是沙盒应用,您可以删除Safari沙箱中的文件。
答案 1 :(得分:0)
您可以使用AppleScript单击“全部删除”按钮。
tell application "System Events" to tell process "Safari"
-- Display the preferences privacy tab
keystroke "," using command down
delay 1
click button "Privacy" of toolbar 1 of window 1
-- Display the cookie list
click button "Manage Website Data…" of group 1 of group 1 of window "Privacy"
delay 3
click button "Remove All"
click button "Done"
end tell
显然,这样做的缺点是用户可以准确地看到发生了什么。