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

In Safari auf Mavericks erhalte ich manchmal einen Dialog von Websites, der darauf hinweist, dass einige Website-Funktionen blockiert oder herabgesetzt werden, wenn ich den Modus „Privates Surfen“ nicht deaktiviere. Die meisten Benutzer erwarten wahrscheinlich, dass ihre Wahl, ob sie Privates Surfen verwenden, privat ist. Mein Eindruck ist, dass andere große Browser den Status „Privates Surfen“ nicht an Websites weitergeben.

Mir ist aufgefallen, dass Safari im privaten Browsing-Modus keine Favicons anfordert, sodass eine Website theoretisch das Caching des Favicons blockieren und ziemlich gut vermuten könnte, dass Private Browsing aktiviert ist.

Im Gegensatz dazu fordert Safari unter iOS überhaupt keine Favicons an. Aber selbst im Modus „Privates Surfen“ wird ein beliebiges „Apple-Touch-Symbol“ angefordert, wenn Sie auf das Freigabefenster zugreifen (das Apple-Touch-Symbol wird als Startbildschirmsymbol verwendet, wenn Sie dafür anschließend „Zum Startbildschirm hinzufügen“) URL).

Gibt es neben dem Favicon andere bekannte Möglichkeiten, mit denen eine Website feststellen (oder mit angemessener Genauigkeit erraten) kann, dass Sie den Modus „Privates Surfen“ in Desktop-Safari verwenden?

Können Sie eine Beispiel-Website bereitstellen?
zB video.pbs.org "Ein Fehler ist aufgetreten. Um diese Website optimal nutzen zu können, überprüfen Sie bitte, ob Privates Surfen deaktiviert ist."
Es ist möglich, dass die Website von einem anderen Faktor abweicht, wie z. B. DNT=1 oder einer Tracker-Blockierung. In diesem Fall ist die Fehlermeldung irreführend. Aber ich habe etwas Ähnliches auf anderen Seiten bekommen.
Ich habe gerade DNT getestet und Erweiterungen blockiert, und das scheint kein Faktor zu sein. Im Private-Browsing-Modus, bei dem alle Erweiterungen deaktiviert und DNT deaktiviert sind, erhalte ich immer noch den Fehlerdialog. Aber wenn Private Browsing ausgeschaltet und DNT=1 und (blockierende) Erweiterungen eingeschaltet sind, erhalte ich den Fehler nicht.
Warum möchten Sie nicht, dass eine Website weiß, 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 fordern also eine Möglichkeit, uns davon abzuhalten, unseren Benutzern mitzuteilen, 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 macht, entspannen Sie sich einfach. Sie werden nicht durch eine bekannte Website geschädigt
Ich ziehe es vor, meinen Browser-Fingerabdruck zu minimieren, und die Servererkennung des privaten Browsermodus trägt zur Browser-Entropie bei. Ich verbringe den größten Teil meiner Browserzeit entweder im privaten Modus (oder in Tor, was natürlich einer Website bekannt sein kann, aber andere Datenschutzvorteile hat). Vielleicht werden private Modi in Zukunft einen Teil der Technologie zulassen, aber in einer Sandbox bleiben. Beim gelegentlichen Surfen möchte ich jedoch absolut nicht, dass das, was ich auf einem Tab tue, das beeinflusst, was ich auf einem anderen tue.
Existiert eine Bibliothek, um den Browsermodus zu erkennen: github.com/Maykonn/js-detect-incognito-private-browsing-paywall

Antworten (2)

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

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

Geändert von https://stackoverflow.com/a/17741714/

Unter OS X gibt es nicht wirklich eine kanonische Methode, aber dies sollte einige nützliche Informationen liefern:

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

Vielen Dank. Ich interessiere mich nur insofern für die serverseitige Implementierung, als sie mir bei der Verteidigung gegen die dunklen Künste hilft ;)
Hüten Sie sich jedoch vor Fehlalarmen – das bereitgestellte JavaScript-Snippet würde die Warnung auch im nicht privaten Modus anzeigen, wenn das lokale Speicherschließfach für diesen Ursprung voll ist.

Das Private Browsing von Safari funktioniert nicht auf die gleiche Weise wie das Private Browsing der anderen Browser .

Beispielsweise erstellt der Inkognito-Modus von Chrome eine separate neue Sitzung, 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/schreiben, verwerfen Sie alle an Cookies vorgenommenen Änderungen, 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 speichert verworfen werden).

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

Safari erlaubt jedoch Cookies innerhalb der Private-Browsing-Sitzung, richtig? Ich kann mich beim privaten Surfen bei 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.
Ja, ich habe meine Antwort ein wenig geändert. Ich meine, Ihre Cookies während dieser Sitzung werden nicht gespeichert, nachdem Private Browsing deaktiviert wurde.