(Cómo) ¿Puede un sitio web determinar si Safari Private Browsing está activado?

11

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 importantes no filtran el estado de Navegación Privada a los sitios web.

He notado que mientras está en 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 hacer una suposición bastante buena de que la Navegación privada está activada.

En contraste, en iOS, Safari no solicita favicons en absoluto. Pero, incluso en el modo de Navegación Privada, solicitará cualquier "ícono táctil de manzana" si accede al panel Compartir (el ícono táctil de manzana se usa como el icono de la pantalla de inicio si posteriormente "Agregar a la pantalla de inicio" para eso URL)

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

seudon
fuente
¿Puedes proporcionar un sitio web de ejemplo?
sayzlim
por ejemplo, video.pbs.org "Se ha producido un error. Para obtener la mejor experiencia con este sitio web, verifique si la Navegación privada está desactivada".
pseudon
Es posible que el sitio web esté eliminando algún otro factor, como DNT = 1 o algún bloqueo de rastreador. Si ese es el caso, el mensaje de error es engañoso. Pero he obtenido algo similar en otros sitios.
pseudon
1
Acabo de probar DNT y las extensiones de bloqueo y esas no parecen 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 las extensiones DNT = 1 y (bloqueo) activadas, no obtengo el error.
pseudon
¿Por qué no quieres que un sitio sepa que estás en modo de privacidad? Nuestra aplicación basada en la web será completamente no funcional en esa configuración ya que dependemos en gran medida de indexeddb, appcache, almacenamiento local, trabajadores web y una variedad de otras características HTML5 que simplemente no están disponibles en modo de privacidad. Entonces, lo que está pidiendo es una manera de evitar que les 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 conoce
user3343404

Respuestas:

14

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

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

Modificado de /programming//a/17741714/

En OS X, no existe 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

grg
fuente
Gracias. Estoy interesado en la aplicación del lado del servidor sólo en la medida en que me ayuda con la defensa contra las artes oscuras;)
pseudon
2
Sin embargo, tenga cuidado con los falsos positivos: el fragmento de JavaScript proporcionado también mostrará la alerta en modo no privado si el bloqueador de almacenamiento local para ese origen está lleno.
Mathias Bynens
4

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) ser descartado).

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

sayzlim
fuente
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 hago todo lo que hago normalmente, y no he encontrado limitaciones, excepto en los casos excepcionales en los que aparece un cuadro de diálogo como este.
pseudon
Sí, modifiqué mi respuesta un poco. Me refiero a que sus cookies durante esta sesión no se guardan después de que se apaga la navegación privada.
sayzlim