Wie kann ich zwischengespeicherte Weiterleitungen von Safari vollständig leeren?

27

Ich habe ein Gerät mit einem webbasierten Kontrollfeld und habe es versehentlich so eingestellt, dass alle httpSeiten zu umgeleitet werden https, obwohl einige nicht funktionieren https. Obwohl ich dies inzwischen korrigiert habe, scheint Safari die Weiterleitung auswendig gelernt zu haben und weigert sich, sie zu vergessen, stattdessen versuche ich ständig, mich an die ungültige httpsAdresse weiterzuleiten .

Ich habe Safari bereits geschlossen, gelöscht ~/Library/Caches/com.apple.Safari/und ~/Library/Cookies/HSTS.plistes scheint sich immer noch an die Umleitung zu erinnern, wenn ich sie wieder öffne.

Wo könnte Safari diese Informationen sonst noch speichern? Ich kann über Firefox oder Chrome auf die richtige Seite zugreifen, sodass es sich möglicherweise nicht um einen systemweiten Dienst handelt oder wenn dies nicht der Fall ist, den die anderen Browser verwenden.

Leider, da das Web-Panel von einem Gerät bereitgestellt wird, von dem ich nicht glaube, dass ich die Header anpassen oder eine Umleitung zurück zur richtigen URL einrichten kann. Dies scheinen Optionen zu sein, die in anderen ähnlichen Fragen angeboten werden. Daher muss ich wirklich herausfinden, wo dies ist Daten werden gespeichert, damit ich sie mit Feuer zerstören kann.

Haravikk
quelle
Haben Sie versucht, Ihren ~/Library/SafariOrdner zu verwerfen / wegzuschieben und zu prüfen, ob das Problem dadurch behoben wird? In diesem Fall können Sie mit Elementen im Ordner experimentieren, bis Sie die Täterdatei gefunden haben.
Interessanterweise
Wie haben Sie die Weiterleitung eingestellt? Mit einer Erweiterung oder gibt es in Safari eine Einstellung dafür?
Owlswipe
Kommt die Weiterleitung bei einem privaten Browserfenster noch vor?
AllInOne
@AllInOne interessante Idee, aber leider passiert es immer noch unter privatem Browsing.
Haravikk

Antworten:

29

Basierend auf der Antwort von quanta :

Ich konnte nicht verwenden, launchctl unload /System/Library/LaunchAgents/com.apple.nsurlstoraged.plistda der Systemintegritätsschutz aktiviert ist:

$ 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

Ich konnte es jedoch umgehen, indem ich Folgendes ausführte:

  • killall nsurlstoraged(stoppt den nsurlstoraged-Prozess Ihres Benutzers; ich habe ihn tatsächlich ausgeführt sudo killall nsurlstoraged, aber ich vermute, dass es nicht erforderlich ist, den nsurlstoraged-Prozess des Systems ebenfalls zu stoppen, da sich der Cache im Library-Ordner des Benutzers befindet.)
  • rm -f ~/Library/Cookies/HSTS.plist (löscht den HSTS-Cache)
  • launchctl start /System/Library/LaunchAgents/com.apple.nsurlstoraged.plist (startet nsurlstoraged neu)
Grant Heaslip
quelle
Ich kann diese Antwort nicht genug unterstützen. Zumindest in Sierra scheint das Entfernen der HSTS.plistDatei das Problem nicht zu beheben, da sie weiterhin neu erstellt wird. Nachdem Sie jedoch die HSTS-Datei getötet nsurlstoragedund dann entfernt haben, hat dies den Trick getan!
NVAHALIK
1
Vielen Dank, hochgestimmt, aber ich habe es so gemacht. 1. Schließen Sie Safari 2. Bearbeiten ~/Library/Cookies/HSTS.plistund entfernen Sie den Eintrag für die Website, die ich auf http 3. Neustart des Computers
Jason S
Ja, Neustarten ist der Rat, den alle anderen Antworten Ihnen geben, aber mit 20 geöffneten Apps ist es viel bequemer und schneller, den nsurlstoraged-Prozess neu zu starten. Vielen Dank, @nvahalik!
Axello
2
Mojave-Update: Der Befehl rm -f ~/Library/Cookies/HSTS.plistwird zurückgegeben, es Operation not permittedsei denn, Sie haben in den Systemeinstellungen den vollständigen Festplattenzugriff auf Terminal.app gewährt => Sicherheit und Datenschutz => Datenschutz. Ansonsten hat die Lösung einwandfrei funktioniert! Vielen Dank!
Joehanna
@ nvahalik Was los ist, scheint noch seltsamer zu sein, als dass die Datei neu erstellt wird. rm ~/Library/Cookies/HSTS.plist ; touch ~/Library/Cookies/HSTS.plist ; chmod guo-wrx ~/Library/Cookies/HSTS.plisthat mir nicht mal geholfen, hat es aber killall nsurlstoragedgetan.
Flash Sheridan
6

Wenn Sie das Menü "Entwickeln" in den Safari-Einstellungen aktivieren, können Sie den Cache von dort löschen (CMD + ALT + E).

Können Sie bestätigen, dass das Öffnen des Bedienfelds des Geräts im privaten Safari-Fenster (oder in einem anderen Webbrowser) ordnungsgemäß funktioniert?

Filip Jurik
quelle
Leider scheint die Option im Entwicklungsmenü die Umleitung nicht zu löschen, und Safari wird auch nicht geschlossen und manuell gelöscht, ~/Library/Caches/com.apple.Safarisodass die Umleitung an einer anderen Stelle gespeichert werden muss. HSTS war die Funktion, die ich versehentlich aktiviert, aber bereits gelöscht habe ~/Library/Cookies/HSTS.plist.
Haravikk
1
Ich kann auch bestätigen, dass diese Antwort das
Problem
Dieser hat für mich funktioniert
Matthew Cawley
5

Basierend auf der Antwort von @ Haravikk: /apple//a/267783/62907

Hat jemand eine Idee, welcher Prozess für die Datei ~ / Library / Cookies / HSTS.plist verantwortlich ist?

fs_usage kann helfen:

❯❯❯❯ 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

So können wir:

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

dann:

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

und versuche es noch mal.

Quanten
quelle
Vielen Dank! Das hat bei mir funktioniert. Ich habe HSTS.plist viele Male gelöscht (Safari vorher und nachher geschlossen / neu gestartet) und es wurde immer mit genau den gleichen Inhalten wie zuvor neu erstellt. Wenn ich nsurlstoraged zuerst entlade, dann die Plist lösche und nsurlstoraged neu starte, erhalte ich eine saubere Plist.
Lucianf
2
Sie können dies verbessern, indem Sie erwähnen, dass Sie Safari beenden und neu starten müssen, damit es funktioniert. Anstatt die HSTS.plist zu löschen, habe ich auch den problematischen Domain-Schlüssel gelöscht.
Malhal
3

Sie werden gute Ergebnisse erzielen, wenn Sie die Befehlszeile zum curlGerät verwenden, um sicherzustellen, dass die Umleitung nicht ausgeführt wird. Safari verfügt nicht wirklich über eine Engine zum Umschreiben von Adressen - insbesondere, wenn Sie zum privaten Surfen gehen, um Verlauf, Cookies usw. zu entfernen.

Wenn Sie nicht sicher sind, ob Sie Ihre Safari ausreichend bereinigt haben, können Sie auch testen, indem Sie die Systemeinstellungen öffnen und ein sauberes / neues Benutzerkonto auf dem Mac erstellen und die Site auf einer völlig sauberen Version von Safari testen, nachdem Sie sich von Ihrem normalen Benutzer abgemeldet haben .

bmike
quelle
Es gibt definitiv keine Weiterleitung (die Funktion, zu der ich eine Verbindung herstellen möchte, unterstützt HTTPS überhaupt nicht, weshalb das Aktivieren von HSTS für das gesamte Gerät ein schrecklicher, schrecklicher Fehler war). Ich kann mich
problemlos mit
"Safari hat nicht wirklich eine Engine zum Umschreiben von Adressen" - Ich habe derzeit das gleiche Problem in Safari mit einer Website, die auf meinem Laptop gehostet ist, und curl (zusammen mit Firefox, Chrome und einem privaten Browser-Fenster) Safari) auf dem gleichen Benutzerkonto lädt die Website ganz gut. Es muss also etwas mit Safari selbst zu tun haben.
Paul D. Waite
3

Daher habe ich eine Problemumgehung gefunden, obwohl dies keine endgültige Antwort auf die eigentliche Frage ist. Ich werde sie daher erst dann als solche kennzeichnen, wenn ich weitere Informationen finde.

Es stellt sich heraus, dass die Datei ~/Library/Cookies/HSTS.plisttatsächlich die Ursache des Problems war, wie ich vermutet habe. Das Löschen dieser Datei aus dem betroffenen Benutzerkonto funktioniert jedoch nicht, auch wenn Safari geschlossen ist, da sie nach einer unbekannten Zeitspanne mit dem Verstoß neu erstellt wird Eintrag, der die ungültige Umleitung erzwang.

Meine Lösung war also die folgende:

  1. Stellen Sie sicher, dass Sie mindestens ein anderes Benutzerkonto auf Ihrem Mac haben (falls nicht, erstellen Sie eines).
  2. Abmeldung des betroffenen Benutzerkontos.
  3. Melden Sie sich bei einem anderen Benutzerkonto an (ein Gastkonto kann je nach Einschränkungen nicht ausreichen).
  4. Ermitteln Sie den Kurznamen Ihres betroffenen Benutzerkontos. Wenn Sie es nicht wissen, überprüfen Sie es am besten, indem Sie unter Systemeinstellungen -> Benutzer nachsehen. In der Regel wird der vollständige Name in Kleinbuchstaben und ohne Leerzeichen angegeben. Wenn Ihr vollständiger Name also "John Smith" lautet, lautet der Kurzname möglicherweise "Johnsmith".
  5. Öffnen Sie ein Fenster in Terminal und su shortnameersetzen Sie "Kurzname" durch den Kurznamen des betroffenen Benutzerkontos. Drücken Sie die Eingabetaste und geben Sie bei Aufforderung das Kennwort für das betroffene Konto ein.
  6. Geben Sie nun den nächsten Befehl ein rm ~/Library/Cookies/HSTS.plistund drücken Sie die Eingabetaste. Dadurch wird die HSTS-Speicherdatei gelöscht.
  7. Geben Sie schließlich ein exit, drücken Sie die Eingabetaste und schließen Sie das Terminal.

Jetzt können Sie sich wieder in das betroffene Benutzerkonto einloggen, und die störende HSTS-Umleitung sollte endgültig verschwunden sein.

Obwohl dies eine brauchbare Problemumgehung darstellt, möchte ich wirklich wissen, warum das Löschen der Datei HSTS.plist von meinem betroffenen Konto nicht funktioniert hat. Die Tatsache, dass es neu erstellt wird, bedeutet, dass ein Hintergrundprozess dafür verantwortlich ist. Dies bedeutet, dass es möglich sein sollte, die Datei aus dem betroffenen Benutzerkonto zu löschen, indem dieser Prozess einfach gestoppt, die Datei gelöscht und anschließend der Prozess neu gestartet wird.

Hat jemand irgendwelche Ideen, welcher Prozess für die ~/Library/Cookies/HSTS.plistDatei verantwortlich ist? Sobald wir wissen, dass es möglich sein sollte, das Problem einfacher zu beheben.

Haravikk
quelle
2

Hier ist eine Idee!

Sie können die Umleitung nicht rückgängig machen, indem Sie den Server so einstellen, dass https-Anforderungen zurück an http umgeleitet werden (da Sie keinen Administratorzugriff dazu haben).

Aber was , wenn Sie Trick Safari in dieser umgekehrten Umleitung , dass Angebote auf einen anderen Server zu verbinden?

Sie können dies in der /etc/hostsDatei Ihres lokalen Computers einrichten .

Angenommen, die aktuell zwischengespeicherte Umleitung ist von http://example.combis https://example.com.

Richten Sie nun eine URL ein oder identifizieren Sie sie, die Sie auf jedem Server der Welt anfordern können, der von https zurück zu http umleitet. Nehmen wir an, der Server hat die Adresse von https://redirecting.example.com.

Dann suchen Sie die IP-Adresse von redirecting.example.com. Im Terminal können Sie das so machen:

host redirecting.example.com

Sie erhalten ein Ergebnis in etwa wie folgt:

redirecting.example.com has address 69.69.69.69

Öffnen Sie nun Ihre Datei / etc / hosts und fügen Sie eine neue Zeile hinzu, die Anfragen für example.com an die IP-Adresse von redirecting.example.com verweist, wie folgt:

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

Speichern Sie Ihre Änderungen und leeren Sie den DNS-Cache im Terminal wie folgt:

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

Dann in Safari eine Anfrage stellen, für https://example.comdie Antwort sollte eine Weiterleitung zurück sein http://example.com, an welcher Stelle (Daumen drücken) Ihre Safari-Weiterleitung von vor 6 Monaten überschrieben wird.

Wenn Sie fertig sind, entfernen Sie die Zeile, die Sie zu Ihrer Datei / etc / hosts hinzugefügt haben, und leeren Sie den DNS-Cache erneut.

Alles in einem
quelle
Obwohl es eine gute Idee ist, löst es das eigentliche Problem nicht. Ich suche keine Problemumgehungen, sondern möchte wissen, wo diese Umleitung zwischengespeichert wird, sodass Safari sie weiterhin verwendet, obwohl sie nicht mehr gültig ist (auf dem Server ist HSTS nicht aktiviert, ich habe sie nur versehentlich kurz aktiviert) ). Es muss irgendwo aufbewahrt werden, aber ich kann nicht herausfinden, wo.
Haravikk
Dies ist nicht das, was ich als Workaround bezeichnen würde, da ich davon ausgehe, dass es das eigentliche Problem lösen wird . Es geht nur darum, dass Sie nicht die Kontrolle über das Gerät haben. Aber ich höre Sie - es wäre schön, wenn Sie die zwischengespeicherte Einstellung direkt löschen könnten. Weist Safari Technology Preview auch ein schlechtes Verhalten auf?
AllInOne
Leider so; Ich denke nicht, dass es ein Problem mit Safari selbst als solchem ​​ist, sondern mit einem MacOS-Dienst, von dem es abhängt, da es tatsächlich ~/Library/Cookies/HSTS.plistals der Schuldige erscheint, aber das Löschen aus dem betroffenen Konto funktioniert nicht (da es neu erstellt wird) einige Zeit später mit fehlerhafter Weiterleitung). Ich bin mir jedoch nicht sicher, welcher Prozess dies tut.
Haravikk
2

Nachdem ich all diese Lösungen ausprobiert hatte, funktionierte für mich Folgendes:

  • Entfernen Sie alle Instanzen der Domäne aus dem Safari-Verlauf
  • Beenden Sie Safari
  • Löschen ~/Library/Cookies/HSTS.plist
  • Neustart
Edward Loveall
quelle
2

Meine zwei Cent für das neue MacOS Mojave 10.14 Beta (18A365a)

a) Sie können nicht definitiv aufhörennsurlstoraged , es startet in 2 Sekunden neu, auch wenn sudo

b) Sie können "HSTS.plist" nicht löschen : wenn Sie Folgendes eingeben:

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

Sie erhalten: Operation nicht erlaubt

c) auch wenn Sie versuchen:

ls -la ~/Library/Cookies/

Sie erhalten: Operation nicht erlaubt

das gleiche für

nano ~/Library/Cookies/HSTS.plist 

(leere Akte..)

Sie können also nicht definitiv darauf zugreifen . (vielleicht SIP?)

d) Seltsamerweise können Sie Folgendes aus dem Finder löschen :

CMD Shift G "~ / Bibliothek / Cookies /"

Bildbeschreibung hier eingeben

und du kannst mit der maus löschen:

Bildbeschreibung hier eingeben

e) Seltsamer: Sie können mit der Maus zum Desktop wechseln, ihn bearbeiten und wieder platzieren !

(Ein echter Quatsch, GUI ist mächtiger als sudo ..)

ingconti
quelle
2

In Safari, Firefox und Chrome müssen Sie lediglich die Entwickler-Seitenleiste öffnen , die Registerkarte "Netzwerk" auswählen und die Zwischenspeicherung deaktivieren .

In Safari ist das eine durchgestrichene Tube, die blaue neben dem Mülleimer-Logo. Aktivieren Sie dies, und die alte permanente Umleitung sollte ignoriert werden. Safari deaktiviert das Chaching 503 permanente Weiterleitungen

Der größte Vorteil ist, dass Sie nicht mit Dateien herumspielen müssen, nicht alle HTST-Einträge löschen und die Sicherheitsvorteile verlieren. Es funktioniert auch über Browser hinweg.

Glückwunsch
quelle
Kannst du bitte bestätigen, ob es sich um eine dauerhafte Lösung handelt? Wird das Problem erneut auftreten, wenn der Cache erneut aktiviert wird, oder wird er vorübergehend deaktiviert, um ihn zu leeren?
Haravikk
1
@ Haravikk in meinen Tests würde nicht auf die permanente Umleitung zurückgreifen, wenn stattdessen eine neue Seite geladen werden könnte. Auch nach dem Schließen des Entwicklungsfensters, wenn das Ihre Frage beantwortet
luckydonald
1

Zunächst stellen Sie sicher , der Server ist nicht das Senden der Strict-Transport-Sicherheits - Header
Sie können dies tun mit curl -I( -Iwird nur die Kopfzeilen)

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

Wenn der Server den Strict-Transport-Security-Header sendet, hat das Entfernen aus Ihrem Browser keine Auswirkung, da er beim nächsten Zugriff auf die Site erneut festgelegt wird.

Entfernen Sie Ihre Site aus der Http Secure Transport Security-Datenbank von Safari

  1. Schließen Sie Safari
  2. Bearbeiten ~/Library/Cookies/HSTS.plist
    Suchen Sie nach dem Eintrag für die Site, auf die Sie über http zugreifen möchten, entfernen Sie ihn und speichern Sie die Datei.
    • Ich bearbeite lieber als zu entfernen, da keine gültigen Einträge entfernt werden müssen.
    • Ich bearbeite plist-Dateien mit Xcode, aber wenn es nicht installiert ist, können Sie einfach einen Texteditor verwenden.
  3. Starte deinen Computer neu.
    • Anstatt Ihren Computer neu zu starten nsurlstoraged, können Sie einen Neustart durchführen. Dies kann jedoch durch SIP verursacht werden, sodass ein Neustart des Computers möglicherweise einfacher ist. Siehe Grants Antwort und Quantas Antwort zum Neustartnsurlstoraged
Jason S
quelle
1

Aus Grand Heaslips Antwort habe ich ein Drehbuch gemacht:

#!/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

Es beendet die Safari ordnungsgemäß, stoppt nsurlstoraged, entfernt die HSTS.plist und startet nsurlstoraged erneut. Dies hat bei mir unter macOS 10.13.5 einwandfrei funktioniert

Martin Emrich
quelle
1

Ich benutze Mojave (10.14). Ich habe die bisher angegebenen Methoden ausprobiert, um HSTS.plist zu entfernen. Außerdem musste ich Terminal zu den Systemeinstellungen> Sicherheit & Datenschutz> Vollständiger Datenträgerzugriff hinzufügen, um das Symptom "Vorgang nicht zulässig" beim Auflisten des Inhalts von ~ / Library / Cookies / zu beseitigen.

Das Entfernen der Datei und der Neustart des Daemons funktionierten jedoch nicht. Also habe ich erneut versucht, Safari zu öffnen, ging zu Einstellungen, Datenschutz, Websitedaten verwalten. Dann habe ich alle "Cache-Cookies, lokaler Speicher" für den anstößigen Domainnamen entfernt. Das hat mein Problem gelöst.

Ich kann jetzt nicht sagen, ob das Entfernen von HSTS erforderlich war oder nicht.

Bob Peterson
quelle
Ich habe das Gleiche versucht und zweimal neu gestartet, aber nur die Safari-Benutzeroberfläche hat auch bei mir funktioniert. Vielen Dank!
Bart Verkoeijen
-1

Versuchen Sie dies dann, gehen Sie zu Schritt 1: Gehen Sie zu ~ / Library-Ordner, Schritt 2: Löschen Sie den Safari-Ordner von ~ / Library / Application Support, Schritt 3: Löschen Sie die folgenden Ordner von ~ / Library / Caches, Schritt 4: Löschen Sie dann ~ / Bibliothek / Safari-Ordner PS: Halten Sie die Safari während der obigen Vorgänge geschlossen

Omi Harjani
quelle
1
Antworten auf Ask Different müssen mehr als nur ein Link sein. Es ist in Ordnung, einen Link einzufügen, aber bitte fassen Sie ihn in der Antwort zusammen oder extrahieren Sie ihn. Die Idee ist, die Antwort allein zu lassen.
Nohillside