2017-01-24 16 views
3

OSXシエラ10.12.1サファリ10.0.1私はすべてのウェブサイトのデータを削除するには、プログラムのMacOS Safari-> Preferences-> Privacy-> ManageWebsiteData-> REMOVEALLボタンの動作を再現しようとしています削除Safariのクッキープログラムで

しかし、データは常に持続するようです。私は〜/ライブラリ/クッキー/ Cookies.binarycookies

Iで期待される結果を検証することができ

if #available(OSX 10.11, *) { 
    cookieJar = HTTPCookieStorage.sharedCookieStorage(forGroupContainerIdentifier: "Cookies") 
} else { 
    cookieJar = HTTPCookieStorage.shared 
} 
cookieJar.removeCookies(since: Date(timeIntervalSince1970: 1)) 

thisバイナリクッキーリーダーのPythonスクリプトを使用した:SOスレッドの数はHTTPCookieStorageクラスを使用して、これらの線に沿って何かを示唆しますcookieJar.setCookie()やcookieJar.deleteCookie()などの操作がこのストア内で変更を行い、cookieJar.cookiesが期待どおりに動作することを検証しました。

私も他のSOスレッドのカップルに基づいて、この呼び出しを追加しました私が出会った:

URLCache.shared.removeAllCachedResponses() 

このコードを実行した後、Webサイトのデータを永続化され続けています。 Safari->設定 - >プライバシー - > ManageWebsiteDataは一見影響を受けていません。

私もここから次のガイダンスを試してみましたが、これはFileManagerのクラスを使用して、プログラムで達成することができたので、閉じた状態のSafariでこの操作を行ってきました: https://www.macissues.com/2015/06/22/how-to-fully-reset-safari-on-your-mac/

ウェブサイトのデータがまだ持続しました。誰もがすべてのウェブサイトのデータを完全に削除するために取らなければならないさらなるステップについて知っていますか?

答えて

0

これは、あなたのアプリのクッキーを削除します。例えば。 NSURLSessionコールまたはWKWebViewがこの影響を受けます。別のアプリ(Safari)からユーザーのCookieを削除することはできません。可能であれば、これはプライバシー/マルウェアの懸念事項になります。

サンドボックスアプリでない場合は、おそらくSafariのサンドボックス内のファイルを削除するだけです。

+0

サファリサンドボックスのご提案ありがとうございます、私はそれを試してみましょう。 [API](https://developer.apple.com/reference/foundation/nshttpcookiestorage)は、cookieストレージが共有されているOSXではなく、sessionOnly = TRUEの場合を除いてiOSにのみ適用されます。 – Glen

+0

私はサンドボックスの提案を試してみましたが、また、表示されているウェブサイトのデータをもたらすことを期待して他のいくつかの項目を削除: '〜/ライブラリ/ Safari' '〜/ライブラリ/ Cookies' '〜ライブラリ/キャッシュを/ com.apple.Safari' Safariのウェブサイトのデータは引き続き表示されます。 – Glen

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 

明らかに、これは、ユーザが何が起こっているかを正確に見ることができるという欠点を有する。

+0

答えBruceに感謝します。私があなたが述べた理由で、私はリンスクリプトを割り引いたが、それでもスクリプトは素晴らしく簡潔で、自分自身を考案したスクリプトよりも優れている。私は最終的にSafariの設定を操作してプライベートブラウザのウィンドウだけを開くようになりましたが、これもまたユーザーが設定を上書きする可能性があります。 FWIWの目的は、新しい拡張アーキテクチャを利用してSafariの上に複数のユーザープロファイルを追加することを実験していましたが、クッキーの制限のためにこれらのプロファイル間に漏れがないことを保証できませんでした。 – Glen

+0

Ah。私はSafariが単一ユーザーになるように設計されているので、常に苦労していると思います.MacOSはマルチユーザーであり、すべてのユーザーがそれぞれのアカウントを持つことを期待しています。 – BruceH

+0

[申し訳ありませんが、構文をチェックしている間に編集がタイムアウトしました] $ sudo -uゲスト "open -a Safari" sudoersファイルを使用する必要があります権限を正しく取得する。 – BruceH

関連する問題