(Cómo) ¿Puede un sitio web determinar si la Navegación privada de Safari está activada?

En Safari en Mavericks, a veces recibo un cuadro de diálogo de sitios web que indica que algunas funciones del sitio se bloquearán o degradarán a menos que desactive el modo de navegación privada. La mayoría de los usuarios probablemente esperan que su elección de usar la Navegación privada sea privada. Mi impresión es que otros navegadores principales no filtran el estado de Navegación privada a los sitios web.

He notado que mientras está en el modo de Navegación privada, Safari no solicitará favicons, por lo que, en teoría, un sitio podría bloquear el almacenamiento en caché del favicon y adivinar bastante bien que la Navegación privada está activada.

Por el contrario, en iOS, Safari no solicita favicons en absoluto. Pero, incluso en el modo de Navegación privada, solicitará cualquier "icono táctil de Apple" si accede al panel Compartir (el icono táctil de Apple se utiliza como el icono de la pantalla de inicio si posteriormente "Agrega a la pantalla de inicio" para ese dirección URL).

Además de favicon, ¿existen otras formas conocidas en las que un sitio web podría determinar (o adivinar con una precisión razonable) que está utilizando el modo de navegación privada en el escritorio de Safari?

¿Puede proporcionar un sitio web de ejemplo?
por ejemplo, video.pbs.org "Se ha producido un error. Para obtener la mejor experiencia con este sitio web, compruebe si la Navegación privada está DESACTIVADA".
Es posible que el sitio web se esté desactivando por algún otro factor, como DNT=1 o algún bloqueo del rastreador. Si ese es el caso, el mensaje de error es engañoso. Pero he conseguido algo similar en otros sitios.
Acabo de probar DNT y extensiones de bloqueo y eso no parece ser un factor. En el modo de Navegación privada con todas las extensiones desactivadas y DNT desactivado, sigo recibiendo el cuadro de diálogo de error. Pero con la Navegación privada desactivada y DNT=1 y (bloqueando) las extensiones activadas, no recibo el error.
¿Por qué no querrías que un sitio supiera que estás en modo de privacidad? Nuestra aplicación basada en la web no funcionará en absoluto en esa configuración, ya que dependemos en gran medida de indexeddb, appcache, almacenamiento local, trabajadores web y una variedad de otras características de HTML5 que simplemente no están disponibles en el modo de privacidad. Entonces, lo que está solicitando es una forma de evitar que le digamos a nuestros usuarios que han configurado su navegador para que nuestra aplicación web no funcione. ¿Cuál es el valor de eso? (Si no entiende por qué esto no tiene ningún sentido, simplemente relájese. No se verá perjudicado por un sitio que sabe
Prefiero minimizar la huella digital de mi navegador y la detección del servidor del modo de navegación privada contribuye a la entropía del navegador. Paso la mayor parte de mi tiempo de navegación en modo privado (o en Tor, que obviamente puede ser conocido por un sitio web, pero tiene otras ventajas de privacidad). Quizás los modos privados en el futuro permitan parte de la tecnología, pero la mantendrán en un espacio aislado. Sin embargo, para la navegación casual, absolutamente no quiero que lo que hago en una pestaña afecte lo que hago en otra.
Existe una biblioteca para detectar el modo de navegación: github.com/Maykonn/js-detect-incognito-private-browsing-paywall

Respuestas (2)

En iOS, el almacenamiento local de HTML5 no está disponible en el modo de navegación privada, lo que significa que puede detectarlo si intenta guardar algo en el almacenamiento local y detecta la excepción con el siguiente JavaScript:

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

Modificado de https://stackoverflow.com/a/17741714/

En OS X, no hay realmente un método canónico, pero esto debería proporcionar información útil:

Si está buscando una guía de implementación, probablemente debería probar Stack Overflow en su lugar

Gracias. Estoy interesado en la implementación del lado del servidor solo en la medida en que me ayude con la defensa contra las artes oscuras;)
Sin embargo, tenga cuidado con los falsos positivos: el fragmento de JavaScript proporcionado también mostraría la alerta en modo no privado si el casillero de almacenamiento local para ese origen está lleno.

La Navegación privada de Safari no funciona de la misma manera que la Navegación privada del otro navegador .

Por ejemplo, el modo de incógnito de Chrome crea una nueva sesión separada en la que todos los datos se eliminarán después de la sesión de navegación (el sitio web aún puede rastrear sus acciones desde la dirección IP en ese modo).

Si bien Safari prohíbe que el sitio web cree/escriba un archivo localmente, descarte todos los cambios realizados en las cookies, incluidas sus actividades en el navegador durante esta sesión de navegación (el sitio web aún puede rastrear su actividad en este modo, excepto que almacenaron cookies en esta sesión). descartarse).

Entonces, ¿cómo sabe un sitio web si ha activado la navegación privada? Porque comprueba si puede escribir archivos localmente .

Sin embargo, Safari permite cookies dentro de la sesión de navegación privada, ¿verdad? Puedo iniciar sesión en sitios web mientras estoy en Navegación privada y hacer todo lo que hago normalmente, y no he encontrado limitaciones, excepto en los casos raros en los que aparece un cuadro de diálogo como este.
Sí, modifiqué un poco mi respuesta. Me refiero a que sus cookies durante esta sesión no se guardan después de desactivar la Navegación privada.