Per la cache, guarderesti NSURLCache
e il metodo (i) removeAllCachedResponses
e removeCachedResponseForRequest
Per LocalStorage, sembra che non ci sia un'API per parlare direttamente con Safari LocalStorage tranne tramite JS.
Tuttavia ho trovato questo AppleScript che fondamentalmente aggira l'API e cancella direttamente i database SQLite, ovviamente sostituisce USERNAME con il tuo nome utente.
indica l'applicazione "Finder"
select every item of folder "LocalStorage" of folder "Safari" of folder "Library" of folder "USERNAME" of folder "Users" of startup disk
move selection to the trash
end tell
Infine, c'è un progetto su SourceForge chiamato SafariCleaner che fa tutto ciò che si sta tentando di fare in un set di AppleScript.