Kann über ein Skript festgestellt werden, ob sich Google Chrome im Inkognito-Modus befindet?
Bearbeiten: Ich meinte eigentlich, dass es über ein Benutzerskript möglich ist, aber die Antworten setzen voraus, dass JavaScript auf einer Webseite ausgeführt wird. Ich habe die Frage hier in Bezug auf Benutzerskripte erneut gestellt.
javascript
google-chrome
incognito-mode
RodeoClown
quelle
quelle
incognito
wenn Sie es leicht bestimmen könnten :)Antworten:
Ja. Die FileSystem-API ist im Inkognito-Modus deaktiviert. Überprüfen Sie https://jsfiddle.net/w49x9f1a/, wenn Sie sich im Inkognito-Modus befinden und nicht.
Beispielcode:
quelle
Eine Möglichkeit besteht darin, eine eindeutige URL zu besuchen und dann zu überprüfen, ob ein Link zu dieser URL als von CSS besucht behandelt wird.
Ein Beispiel hierfür finden Sie unter "Erkennen von Inkognito" (toter Link) .
Forschungsbericht desselben Autors als Ersatz für den obigen Link "Detecting Incognito"
In
main.html
fügen Sie ein iframe,und etwas JavaScript-Code:
Dann
test.html
werden in den iFrame geladen:HINWEIS: Wenn Sie dies über das Dateisystem versuchen, kann Chrome über "Unsicheres Javascript" weinen. Es funktioniert jedoch von einem Webserver aus.
quelle
:visited
: hacks.mozilla.org/2010/03/…In Chrome 74+ können Sie dies ermitteln, indem Sie den verfügbaren Speicherplatz des Dateisystems schätzen
Siehe die jsfiddle
quelle
Sie können in JavaScript die Antwort von JHurrah sehen . Abgesehen davon, dass Links nicht hervorgehoben werden, werden im Inkognito-Modus nur der Browserverlauf und die Cookies nicht gespeichert. Von der Google- Hilfeseite :
Wie Sie sehen können, treten die Unterschiede zwischen normalem Surfen und Inkognito nach dem Besuch der Webseite auf. Daher kommuniziert der Browser in diesem Modus nichts mit dem Server.
Mit einem der vielen HTTP-Anforderungsanalysatoren wie diesem können Sie sehen, was genau Ihr Browser an den Server sendet . Vergleichen Sie die Header zwischen normaler Sitzung und Inkognito, und Sie werden keinen Unterschied feststellen.
quelle
Wenn Sie eine Erweiterung entwickeln, können Sie mithilfe der Registerkarten-API feststellen, ob ein Fenster / eine Registerkarte inkognito ist.
Weitere Informationen finden Sie hier .
Wenn Sie nur mit einer Webseite arbeiten, ist dies nicht einfach und so konzipiert. Ich habe jedoch festgestellt, dass alle Versuche, eine Datenbank (window.database) zu öffnen, in incongnito fehlschlagen. Dies liegt daran, dass in inkognito keine Datenspur auf dem Computer des Benutzers zurückbleiben darf.
Ich habe es nicht getestet, aber ich vermute, dass alle Aufrufe von localStorage ebenfalls fehlschlagen.
quelle
Dies verwendet ein Versprechen, darauf zu warten, dass der asynchrone Code ein Flag setzt, damit wir es anschließend synchron verwenden können.
dann können wir tun
quelle
reject('Check incognito failed')
mit ,resolve(false)
wenn ich willisIncognito
ein Boolescher Wert zu sein, der immer nur wahr oder falsch ist? Vielen Dank.Syntax Error: await is a reserved word
und denke, dass esawait
immer innerhalb einerasync
Funktion sein muss. Ich denke, dieser Code funktioniert nicht.reject
würde eine Ausnahme auslösen, wenn es aufgerufen wird, und ein Wert würde nicht zurückgegeben, soisIncognito
wäre es immertrue
oderfalse
wie der Code geschrieben wird. Sie können dort jedoch auch eine 'Auflösung' verwenden, wenn Sie einen Wert zurückgeben möchten. Und es könnte davon abhängen, wie die Umgebung im globalen Bereich wartet? Es funktioniert auf der Chrome-Konsole im globalen Bereich, aber Sie können versuchen, alles(async function() { 'everything here' })();
isIncognito
anstelle des Ergebnisses speichern und anschließend in einer asynchronen Funktion ausführen:let isIncognito = new Promise( ...etc
Dann hätten Sie woanders eine Funktion wie(async function() { if( !(await isIncognito) ) {alert('not incognito') } })();
Schnelle Funktion zum Kopieren und Einfügen basierend auf Aloks Antwort (Hinweis: Dies ist asynchron)
Verwendung:
quelle
Hier ist die vorgeschlagene Antwort, die in ES6-Syntaxt geschrieben und leicht bereinigt wurde.
quelle
Hier verspricht die Lösung
Und wie man es benutzt:
quelle
In der Dokumentation zum Inkognito-Modus heißt es ausdrücklich, dass sich Websites nicht anders verhalten. Ich glaube, das bedeutet, dass die Antwort nein ist.
quelle