(Come) Un sito web può determinare se Safari Navigazione privata è attivato?


11

In Safari su Mavericks, a volte ottengo una finestra di dialogo dai siti Web che indica che alcune funzioni del sito saranno bloccate o degradate a meno che non disattivi la modalità Navigazione privata. La maggior parte degli utenti probabilmente si aspetta che la scelta di utilizzare la navigazione privata sia privata. La mia impressione è che altri principali browser non perdano lo stato di Navigazione privata sui siti Web.

Ho notato che mentre si trova in modalità Navigazione privata, Safari non richiederà favicon, quindi in teoria un sito potrebbe bloccare la memorizzazione nella cache della favicon e fare una supposizione piuttosto buona che Navigazione privata sia attiva.

Al contrario, su iOS, Safari non richiede affatto favicon. Ma, anche in modalità Navigazione privata, richiederà qualsiasi "icona apple-touch" se accedi al pannello Condivisione (l'icona apple-touch viene utilizzata come icona della schermata principale se successivamente "Aggiungi alla schermata principale" per quello URL).

Oltre a favicon, ci sono altri modi noti in cui un sito web potrebbe determinare (o indovinare con ragionevole accuratezza) che si sta utilizzando la modalità di navigazione privata in Safari desktop?


Potete fornire un sito Web di esempio?
sayzlim,

ad esempio, video.pbs.org "Si è verificato un errore. Per la migliore esperienza con questo sito Web, controlla se la navigazione privata è DISATTIVATA."
pseudon,

È possibile che il sito Web si stacchi da qualche altro fattore, come DNT = 1 o alcuni blocchi del tracker. In tal caso, il messaggio di errore è fuorviante. Ma ho ottenuto qualcosa di simile su altri siti.
pseudon,

1
Ho appena testato DNT e il blocco delle estensioni e quelli non sembrano essere un fattore. In modalità Navigazione privata con tutte le estensioni disattivate e DNT non impostato, visualizzo ancora la finestra di dialogo di errore. Ma con Navigazione privata disattivata e DNT = 1 e (blocco) estensioni attivate, non visualizzo l'errore.
pseudon,

Perché non vorresti che un sito sapesse che sei in modalità privacy? La nostra applicazione basata sul web sarà completamente non funzionale in quella configurazione poiché ci basiamo fortemente su indexeddb, appcache, archiviazione locale, web worker e una varietà di altre funzionalità HTML5 che non sono semplicemente disponibili in modalità privacy. Quindi, ciò che stai chiedendo è un modo per impedirci di dire ai nostri utenti che hanno configurato il loro browser in modo che la nostra applicazione web non funzioni. Qual è il valore di quello? (Se non capisci perché questo non ha alcun senso, rilassati. Non sei danneggiato da una
conoscenza del

Risposte:


14

Su iOS, l'archiviazione locale di HTML5 non è disponibile in modalità di navigazione privata, il che significa che puoi rilevarla tentando di salvare qualcosa nell'archiviazione locale e catturando l'eccezione con il seguente JavaScript:

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

Modificato da /programming//a/17741714/

Su OS X, non esiste davvero un metodo canonico, ma questo dovrebbe fornire alcune informazioni utili:

Se stai cercando una guida all'implementazione, dovresti probabilmente provare Stack Overflow


Grazie. Sono interessato all'implementazione sul lato server solo nella misura in cui mi aiuta con la difesa contro le arti oscure;)
pseudon

2
Fai attenzione ai falsi positivi: lo snippet JavaScript fornito mostrerebbe anche l'avviso in modalità non privata se l'armadietto di archiviazione locale per quell'origine è pieno.
Mathias Bynens,


4

Private Browsing di Safari non funziona allo stesso modo come l'altro browser Private Browsing .

Ad esempio, la modalità di navigazione in incognito di Chrome crea una nuova sessione separata in cui tutti i dati verranno eliminati dopo la sessione di navigazione (il sito Web può ancora tracciare le tue azioni dall'indirizzo IP in quella modalità).

Mentre Safari vieta al sito Web di creare / scrivere un file localmente, elimina tutte le modifiche apportate ai cookie, comprese le tue attività nel browser durante questa sessione di navigazione (il sito Web può comunque tenere traccia delle tue attività in questa modalità, tranne per il fatto che hanno memorizzato i cookie in questa sessione essere scartato).

Quindi, come fa un sito Web a sapere se hai attivato la navigazione privata? Perché controlla se è possibile scrivere file localmente .


Safari, tuttavia, consente i cookie durante la sessione di Navigazione privata, giusto? Sono in grado di accedere a siti Web durante la navigazione privata e fare tutto ciò che faccio normalmente e non ho riscontrato alcuna limitazione, tranne nei rari casi in cui viene visualizzata una finestra di dialogo come questa.
pseudon,

Sì, ho modificato un po 'la mia risposta. Intendo che i tuoi cookie durante questa sessione non vengono salvati dopo la disattivazione della Navigazione privata.
sayzlim,
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.