(Wie) Kann eine Website feststellen, ob Safari Private Browsing aktiviert ist?

11

In Safari on Mavericks wird auf Websites manchmal ein Dialogfeld angezeigt, das darauf hinweist, dass einige Websitefunktionen blockiert oder beeinträchtigt werden, sofern ich den privaten Browsermodus nicht deaktiviere. Die meisten Benutzer erwarten wahrscheinlich, dass ihre Wahl, ob Private Browsing verwendet werden soll, privat ist. Mein Eindruck ist, dass andere große Browser den Status "Privates Browsen" nicht an Websites weitergeben.

Ich habe festgestellt, dass Safari im privaten Browsermodus keine Favoriten anfordert. Theoretisch könnte eine Site das Caching des Favicons blockieren und eine ziemlich gute Vermutung anstellen, dass das private Browsing aktiviert ist.

Im Gegensatz dazu fordert Safari unter iOS überhaupt keine Favoriten an. Aber auch im privaten Browsermodus wird ein "Apple-Touch-Symbol" angefordert, wenn Sie auf das Freigabebedienfeld zugreifen (das Apple-Touch-Symbol wird als Startbildschirmsymbol verwendet, wenn Sie anschließend "Zum Startbildschirm hinzufügen" hinzufügen URL).

Gibt es außer Favicon andere bekannte Möglichkeiten, wie eine Website feststellen (oder mit angemessener Genauigkeit erraten) kann, dass Sie den privaten Browsermodus in Desktop Safari verwenden?

Pseudon
quelle
Können Sie eine Beispielwebsite bereitstellen?
Sayzlim
Beispiel: video.pbs.org "Es ist ein Fehler aufgetreten. Um die bestmögliche Erfahrung mit dieser Website zu erzielen , überprüfen Sie bitte, ob das private Surfen deaktiviert ist."
Pseudon
Es ist möglich, dass die Website einen anderen Faktor wie DNT = 1 oder eine Tracker-Blockierung auslöst. In diesem Fall ist die Fehlermeldung irreführend. Aber ich habe auf anderen Seiten etwas Ähnliches bekommen.
Pseudon
1
Ich habe gerade DNT getestet und Erweiterungen blockiert, und diese scheinen kein Faktor zu sein. Im privaten Browsermodus mit deaktivierten Nebenstellen und deaktiviertem DNT wird weiterhin der Fehlerdialog angezeigt. Aber wenn Private Browsing deaktiviert und DNT = 1 und (blockierende) Erweiterungen aktiviert sind, wird der Fehler nicht angezeigt.
Pseudon
Warum soll eine Website nicht wissen, dass Sie sich im Datenschutzmodus befinden? Unsere webbasierte Anwendung wird in dieser Konfiguration völlig funktionsunfähig sein, da wir uns stark auf indexeddb, Appcache, lokalen Speicher, Webworker und eine Vielzahl anderer HTML5-Funktionen verlassen, die im Datenschutzmodus einfach nicht verfügbar sind. Sie möchten also verhindern, dass wir unseren Benutzern mitteilen, dass sie ihren Browser so konfiguriert haben, dass unsere Webanwendung nicht funktioniert. Was ist der Wert davon? (Wenn Sie nicht verstehen, warum dies keinen Sinn ergibt, entspannen Sie sich einfach. Sie werden nicht durch ein Site-Wissen verletzt
user3343404

Antworten:

14

Unter iOS ist der lokale Speicher von HTML5 im privaten Browsermodus nicht verfügbar. Dies bedeutet, dass Sie ihn erkennen können, indem Sie versuchen, etwas im lokalen Speicher zu speichern und die Ausnahme mit dem folgenden JavaScript abfangen:

try { localStorage.test = 2; } catch (e) {
  alert('You are in Private Browsing mode');
}

Geändert von /programming//a/17741714/

Unter OS X gibt es eigentlich keine kanonische Methode, aber diese sollte einige nützliche Informationen liefern:

Wenn Sie nach Anleitungen zur Implementierung suchen, sollten Sie stattdessen wahrscheinlich Stack Overflow ausprobieren

grg
quelle
Vielen Dank. Ich bin nur insoweit an einer serverseitigen Implementierung interessiert, als sie mir bei der Verteidigung gegen die dunklen Künste hilft;)
Pseudon
2
Achten Sie jedoch auf Fehlalarme. Das bereitgestellte JavaScript-Snippet zeigt die Warnung auch im nicht privaten Modus an, wenn das lokale Schließfach für diesen Ursprung voll ist.
Mathias Bynens
4

Das private Surfen in Safari funktioniert nicht auf die gleiche Weise wie das private Surfen im anderen Browser .

Im Inkognito-Modus von Chrome wird beispielsweise eine separate neue Sitzung erstellt, in der alle Daten nach der Browsersitzung gelöscht werden (die Website kann Ihre Aktionen weiterhin anhand der IP-Adresse in diesem Modus verfolgen).

Während Safari der Website verbietet, eine Datei lokal zu erstellen / zu schreiben, verwerfen Sie alle Änderungen, die an Cookies vorgenommen wurden, einschließlich Ihrer Aktivitäten im Browser während dieser Browsersitzung (die Website kann Ihre Aktivitäten in diesem Modus weiterhin verfolgen, außer dass sie Cookies in dieser Sitzung gespeichert haben verworfen werden).

Woher weiß eine Website, ob Sie Private Browsing aktiviert haben? Weil es prüft, ob es Dateien lokal schreiben kann .

sayzlim
quelle
Safari erlaubt jedoch Cookies innerhalb der Private Browsing-Sitzung, oder? Ich kann mich beim privaten Surfen auf Websites anmelden und alles tun, was ich normalerweise tue, und bin auf keine Einschränkungen gestoßen, außer in den seltenen Fällen, in denen ich einen solchen Dialog erhalte.
Pseudon
Ja, ich habe meine Antwort ein wenig geändert. Ich meine, Ihre Cookies während dieser Sitzung werden nicht gespeichert, nachdem das private Surfen deaktiviert ist.
Sayzlim