Come posso scaricare completamente i reindirizzamenti memorizzati nella cache da Safari?


27

Ho un dispositivo con un pannello di controllo basato sul Web e l'ho impostato accidentalmente per reindirizzare tutte le httppagine https, anche se alcune non funzionano https. Anche se da allora l'ho corretto, Safari sembra aver memorizzato il reindirizzamento e si rifiuta di dimenticarlo, mentre cerca costantemente di reindirizzarmi httpsall'indirizzo non valido .

Ho già chiuso Safari, cancellato ~/Library/Caches/com.apple.Safari/e ~/Library/Cookies/HSTS.plistma sembra ancora ricordare il reindirizzamento quando lo riapro.

In quale altro luogo Safari potrebbe conservare queste informazioni? Posso accedere alla pagina corretta tramite Firefox o Chrome, quindi potrebbe non essere un servizio a livello di sistema o se non è quello che usano gli altri browser.

Sfortunatamente perché il pannello web è fornito da un dispositivo non credo di poter regolare le intestazioni o impostare un reindirizzamento all'URL corretto, che sembrano essere opzioni offerte in altre domande simili, quindi ho davvero bisogno di scoprire dove questo i dati vengono archiviati in modo che io possa distruggerli con il fuoco.



Hai provato a eliminare / spostare la ~/Library/Safaricartella e vedere se questo risolve il problema? In tal caso, puoi provare gli elementi all'interno della cartella fino a quando non trovi il file colpevole.
interessante il

Come hai impostato il reindirizzamento? Con un'estensione o c'è un'impostazione in Safari per quello?
Gufo,

Il reindirizzamento si verifica ancora con una finestra di navigazione privata?
AllInOne

@AllInOne un'idea interessante, ma sfortunatamente succede ancora durante la navigazione privata.
Haravikk,

Risposte:


29

Basato sulla risposta di Quanta :

Non sono stato in grado di utilizzare launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plistperché la protezione dell'integrità del sistema è abilitata:

$ launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist
/System/Library/LaunchAgents/com.apple.nsurlstoraged.plist: Operation not permitted while System Integrity Protection is engaged

Tuttavia sono stato in grado di aggirare il problema nel modo seguente:

  • killall nsurlstoraged(interrompe il processo nsurlstoraged dell'utente; in realtà l'ho eseguito sudo killall nsurlstoraged, ma sospetto che non sia necessario arrestare anche il nsurlstoraged del sistema, poiché la cache si trova nella cartella Libreria dell'utente)
  • rm -f ~/Library/Cookies/HSTS.plist (elimina la cache HSTS)
  • launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist (riavvia nsurlstoraged)

Non posso votare abbastanza questa risposta. Sembra che almeno su Sierra, semplicemente rimuovendo il HSTS.plistfile non risolverà il problema perché continuerà a essere ricostruito. Tuttavia, dopo aver ucciso nsurlstoragede quindi rimosso il file HSTS, questo ha funzionato!
nvahalik,

1
Grazie mille, votato, ma l'ho fatto così. 1. Chiudi Safari 2. Modifica ~/Library/Cookies/HSTS.pliste rimuovi la voce per il sito che desidero su http 3. Riavvia il computer
Jason S

Sì, il riavvio è il consiglio che ti danno tutte le altre risposte, ma con 20 app aperte è molto più conveniente e più rapido riavviare il processo non riparato. Grazie @nvahalik!
axello,

2
Aggiornamento Mojave: il comando rm -f ~/Library/Cookies/HSTS.plisttornerà a Operation not permittedmeno che tu non abbia concesso l' accesso completo al disco a Terminal.app in Preferenze di Sistema => Sicurezza e Privacy => Privacy. Altrimenti, la soluzione ha funzionato perfettamente! Grazie!
joehanna

@ nvahalik Quello che sta succedendo sembra ancora più strano del file che viene ricostruito; nemmeno rm ~/Library/Cookies/HSTS.plist ; touch ~/Library/Cookies/HSTS.plist ; chmod guo-wrx ~/Library/Cookies/HSTS.plistmi ha aiutato, ma l'ha killall nsurlstoragedfatto.
Flash Sheridan,

6

Se abiliti il ​​menu Sviluppo nelle preferenze di Safari, puoi cancellare la cache da lì (CMD + ALT + E).

Puoi confermare che l'apertura del pannello di controllo del dispositivo nella finestra privata di Safari (o in un browser Web diverso) funziona correttamente?


Sfortunatamente l'opzione di menu di sviluppo non sembra cancellare il reindirizzamento, né chiudere Safari ed eliminare manualmente ~/Library/Caches/com.apple.Safariquindi il reindirizzamento deve essere memorizzato da qualche altra parte. HSTS è stata la funzione che ho abilitato per errore ma che ho già eliminato ~/Library/Cookies/HSTS.plist.
Haravikk,

1
Posso anche confermare che questa risposta non lo risolve
malhal,

Questo ha funzionato per me
Matthew Cawley,

5

Basato sulla risposta di @ Haravikk: /apple//a/267783/62907

Qualcuno ha qualche idea su quale processo sia responsabile del file ~ / Library / Cookies / HSTS.plist?

fs_usage può aiutare:

❯❯❯❯ sudo fs_usage | grep HSTS
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000238   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000009   nsurlstorage
16:11:03  open              /Users/quanta/Library/Cookies/HSTS.plist                                         0.016268   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000008   nsurlstorage
16:11:03    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000003   nsurlstorage
16:11:03  access            /Users/quanta/Library/Cookies/HSTS.plist                                         0.000011   dbfseventsd
16:11:04  lstat64           /Users/quanta/Library/Cookies/HSTS.plist                                         0.000008   fseventsd
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000006   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000002   nsurlstorage
16:11:08  open              /Users/quanta/Library/Cookies/HSTS.plist                                         0.000144   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000002   nsurlstorage
16:11:08    HFS_update      /Users/quanta/Library/Cookies/HSTS.plist                                         0.000003   nsurlstorage
16:11:08  access            /Users/quanta/Library/Cookies/HSTS.plist                                         0.000021   dbfseventsd
16:11:09  lstat64           /Users/quanta/Library/Cookies/HSTS.plist                                         0.000042   fseventsd

Quindi possiamo:

launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

poi:

rm -f ~/Library/Cookies/HSTS.plist

e riprova.


Grazie! Questo ha funzionato per me. Ho cancellato HSTS.plist molte volte (chiudendo / riavviando Safari prima e dopo) e veniva sempre ricreato esattamente con gli stessi contenuti di prima. Scaricare prima nsurlstoraged, quindi eliminare il plist e riavviare nsurlstoraged mi ha dato un chiaro plist.
lucianf,

2
Puoi migliorarlo menzionando la necessità di chiudere e riavviare Safari affinché funzioni. Inoltre, anziché eliminare il file HSTS.plist, ho appena eliminato la chiave di dominio del problema.
Malhal,

3

Avrai buoni risultati se usi la riga di comando curlsul dispositivo per assicurarti che non stia eseguendo il reindirizzamento. Safari non ha davvero un motore per riscrivere gli indirizzi, specialmente se vai nella navigazione privata per rimuovere cronologia, cookie, ecc ...

Se non sei sicuro di aver pulito abbastanza Safari, puoi anche testare aprendo le preferenze di sistema e creando un account utente pulito / nuovo sul Mac e testando il sito su una versione totalmente pulita di Safari dopo aver disconnesso il tuo normale utente .


Non c'è assolutamente alcun reindirizzamento (la funzione a cui sto cercando di connettermi non supporta affatto HTTPS, motivo per cui abilitare HSTS per l'intero dispositivo è stato un errore terribile, terribile); Posso collegarmi bene da altri account utente e browser, quindi c'è qualcosa memorizzato da qualche parte sul mio account principale che sta memorizzando nella cache questo :(
Haravikk,

"Safari non ha davvero un motore per riscrivere gli indirizzi" - Al momento ho lo stesso problema che si verifica in Safari con un sito Web ospitato sul mio laptop e arricciato (insieme a Firefox, Chrome e una finestra di Navigazione privata proprio lì in Safari) sullo stesso account utente carica bene il sito. Quindi deve essere qualcosa a che fare con Safari stesso.
Paul D. Waite,

3

Quindi ho trovato una soluzione al problema, anche se questa non è una risposta definitiva alla domanda reale, quindi non la contrassegnerò come tale fino a quando non trovo più informazioni.

Si scopre che il file ~/Library/Cookies/HSTS.plistera effettivamente la fonte del problema, come sospettavo, tuttavia l'eliminazione dall'account utente interessato non funziona, anche con Safari chiuso, poiché viene ricreato dopo un periodo di tempo sconosciuto, completo con l'infrazione voce che stava forzando il reindirizzamento non valido.

Quindi la mia soluzione era la seguente:

  1. Assicurati di avere almeno un altro account utente sul tuo Mac (in caso contrario, creane uno).
  2. Disconnessione dell'account utente interessato.
  3. Accedi a un altro account utente (un account ospite potrebbe non essere sufficiente, a seconda delle restrizioni).
  4. Scopri il nome breve del tuo account utente interessato; se non lo sai, il modo migliore per verificare è guardare in Preferenze di Sistema -> Utenti. Di solito se sarà il nome completo, maiuscolo e senza spazi, quindi se il tuo nome completo è "John Smith", il nome breve potrebbe essere "johnsmith".
  5. Aprire una finestra in Terminale, digitare su shortnamesostituendo "shortname" con il nome breve dell'account utente interessato. Premi invio e, quando richiesto, inserisci la password per l'account interessato.
  6. Ora digita il comando successivo rm ~/Library/Cookies/HSTS.pliste premi invio, questo eliminerà il file di archiviazione HSTS.
  7. Alla fine digita exit, premi invio e chiudi Terminale.

A questo punto è ora possibile accedere nuovamente all'account utente interessato e il reindirizzamento HSTS offensivo dovrebbe essere eliminato definitivamente.

Ora, mentre questo fornisce una soluzione utilizzabile, mi piacerebbe davvero sapere perché l'eliminazione del file HSTS.plist dal mio account interessato non ha funzionato; il fatto che venga ricreato significa che è responsabile un processo in background, il che significa che dovrebbe essere possibile eliminare il file dall'account utente interessato semplicemente interrompendo tale processo, eliminando il file, quindi riavviando il processo.

Qualcuno ha qualche idea su quale processo sia responsabile del ~/Library/Cookies/HSTS.plistfile? Una volta che sappiamo che dovrebbe essere possibile dare una soluzione più semplice al problema.


2

Ecco un'idea!

Dici che non puoi annullare il reindirizzamento impostando il server per reindirizzare le richieste https su http (poiché non hai accesso come amministratore per farlo).

E se ingannassi Safari per connetterti a un altro server che offre questo reindirizzamento inverso?

Puoi configurarlo nel /etc/hostsfile del tuo computer locale .

Ad esempio, supponiamo che l'attuale reindirizzamento nella cache sia da http://example.coma https://example.com.

Ora imposta o identifica un URL che puoi richiedere su qualsiasi server al mondo che reindirizza da https a http. Diciamo che il server ha l'indirizzo di https://redirecting.example.com.

Quindi cercare l'indirizzo IP di redirecting.example.com. In Terminal puoi fare così:

host redirecting.example.com

Ottieni un risultato simile a questo:

redirecting.example.com has address 69.69.69.69

Ora apri il tuo file / etc / hosts e aggiungi una nuova riga che punti le richieste per example.com all'indirizzo IP di redirecting.example.com, in questo modo:

### point host example.com at the ip address of redirecting.example.com
69.69.69.69 example.com

Salvare le modifiche e cancellare la cache DNS nel terminale in questo modo:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder; say DNS cache flushed

Quindi in Safari fare una richiesta per https://example.comla risposta dovrebbe essere un reindirizzamento a http://example.com, a quel punto (dita incrociate) il reindirizzamento Safari di 6 mesi fa verrà sovrascritto.

Al termine, rimuovere la riga aggiunta al file / etc / hosts e svuotare nuovamente la cache DNS.


Mentre è una bella idea non risolve il vero problema; Non sto cercando soluzioni alternative, ma piuttosto voglio sapere dove questo reindirizzamento viene memorizzato nella cache in modo tale che Safari continui a usarlo anche se non è più valido (il server non ha HSTS abilitato, l'ho semplicemente abilitato brevemente per errore ). Si deve essere conservato da qualche parte, ma non riesco a capire dove.
Haravikk,

Questo non è ciò che definirei una soluzione alternativa, poiché mi aspetto che risolva il problema reale . Funziona solo attorno al fatto che non hai il controllo del dispositivo. Ma ti ascolto: sarebbe bello poter cancellare direttamente l'impostazione memorizzata nella cache. Safari Technology Preview mostra anche il cattivo comportamento?
AllInOne,

Purtroppo così; Non penso che sia un problema con Safari stesso in quanto tale, ma piuttosto un servizio macOS da cui dipende, in quanto sembra essere ~/Library/Cookies/HSTS.pliststato il colpevole, ma eliminarlo dall'account interessato non funziona (poiché viene ricreato qualche tempo dopo, completo di reindirizzamento errato). Non sono sicuro di quale processo lo stia facendo.
Haravikk,

2

Dopo aver provato tutte queste soluzioni, quello che ha funzionato per me è stato:

  • Rimuovi tutte le istanze del dominio dalla cronologia di Safari
  • Esci da Safari
  • Elimina ~/Library/Cookies/HSTS.plist
  • Ricomincia

2

I miei due centesimi per il nuovo macOS Mojave 10.14 Beta (18A365a)

a) Non puoi fermarti definitivamente nsurlstoraged, si riavvia in 2 secondi, anche se sudo

b) non è possibile eliminare "HSTS.plist": se si digita:

sudo rm -f ~/Library/Cookies/HSTS.plist

si ottiene: operazione non consentita

c) anche se provi:

ls -la ~/Library/Cookies/

si ottiene: operazione non consentita

lo stesso per

nano ~/Library/Cookies/HSTS.plist 

(file vuoto ..)

Quindi non puoi assolutamente accedervi . (forse SIP?)

d) stranamente puoi cancellare se dal Finder:

CMD Shift G "~ / Library / Cookie /"

inserisci qui la descrizione dell'immagine

e puoi cancellare con il mouse:

inserisci qui la descrizione dell'immagine

e) più strano: puoi passare al desktop usando il mouse, modificarlo e riposizionarlo !

(una vera assurdità, la GUI è più potente di sudo ..)


2

Anche in Safari, Firefox e Chrome, tutto ciò che devi fare è aprire la barra laterale dello sviluppatore , selezionare la scheda di rete e disabilitare la memorizzazione nella cache .

In Safari è una cosa del tubo barrato, quella blu accanto al logo del cestino. Attivalo e il vecchio reindirizzamento permanente dovrebbe essere ignorato. Safari disabilita il chaching 503 reindirizzamenti permanenti

Il più grande vantaggio è che non devi fare confusione con i file, non eliminerai tutte le voci HTST e perderai i vantaggi di sicurezza. Funziona anche su tutti i browser.


Anche se questo è molto utile da sapere, puoi confermare se funziona come una soluzione permanente? ad es. se la cache viene riabilitata, il problema riapparirà o la disabiliterà temporaneamente?
Haravikk,

1
@Haravikk nei miei test non sarebbe tornato a utilizzare il reindirizzamento permanente quando è stata caricata una nuova pagina. Anche dopo aver chiuso la finestra di sviluppo, se questo risponde alla tua domanda
luckydonald

1

Per prima cosa assicurati che il server non stia inviando l' intestazione Strict-Transport-Security
Puoi farlo con curl -I( -Iottiene solo le intestazioni)

curl -I http://my-http-domain.com

Se il server invia l'intestazione Strict-Transport-Security, rimuoverlo dal browser non avrà alcun effetto, poiché la prossima volta che accederai al sito, verrà impostato nuovamente.

Rimuovi il tuo sito dal database Http Secure Transport Transport Security di Safari

  1. Chiudi Safari
  2. Modifica ~/Library/Cookies/HSTS.plist
    Cerca la voce per il sito a cui desideri accedere tramite http, rimuovila e salva il file.
    • Preferisco modificare piuttosto che rimuovere in quanto non è necessario rimuovere voci valide.
    • Modifico i file di plist usando Xcode, ma se non è installato puoi semplicemente usare un editor di testo.
  3. Riavvia il tuo computer.
    • Invece di riavviare il computer, è possibile riavviare nsurlstoragedma ciò può essere coinvolto a causa di SIP, quindi un riavvio del computer potrebbe essere più semplice. Vedi la risposta di Grant e la risposta di Quanta sul riavvionsurlstoraged

1

Ho realizzato una sceneggiatura dalla risposta di Grand Heaslip:

#!/bin/sh

osascript -e 'quit app "Safari"'
sleep 2
killall nsurlstoraged
sleep 2
rm -f ~/Library/Cookies/HSTS.plist
launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist

Termina con garbo il safari, arresta nsurlstoraged, rimuove la HSTS.plist e ricomincia da capo. Questo ha funzionato bene per me qui su macOS 10.13.5


1

Sto usando Mojave (10.14). Ho provato i metodi forniti finora per rimuovere HSTS.plist. Inoltre, dovevo aggiungere Terminale all'elenco Preferenze di Sistema> Sicurezza e Privacy> Accesso completo disco per curare il sintomo "Operazione non consentita" quando si elencano i contenuti di ~ / Libreria / Cookie /.

Ma rimuovere il file e riavviare il demone non ha funzionato. Quindi ho provato ad aprire nuovamente Safari, sono andato su Preferenze, Privacy, Gestisci dati sito Web. Quindi ho rimosso tutti i "cookie della cache, memoria locale" per il nome di dominio offensivo. Ciò ha risolto il mio problema.

Non posso dire ora se la rimozione di HSTS era necessaria o meno.


Ho provato lo stesso e riavviato due volte, ma solo usando l'interfaccia utente di Safari ha funzionato anche per me. Grazie!
Bart Verkoeijen,

-1

Prova quindi, vai al Passaggio 1: vai a ~ / Cartella Libreria, Passaggio 2: Elimina la cartella Safari da ~ / Libreria / Supporto applicazioni, Passaggio 3: Elimina le cartelle sottostanti da ~ / Libreria / Cache, Passaggio 4: quindi Elimina ~ / Cartella Libreria / Safari PS: tieni chiuso Safari durante le operazioni sopra


1
Risposte su Ask Diverso deve essere più di un semplice link. Va bene includere un link, ma riassumilo o estrailo nella risposta. L'idea è di rendere la risposta indipendente.
Nohillside
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.