(Como) Um site pode determinar se a Navegação Privada Safari está ativada?

11

No Safari no Mavericks, às vezes recebo uma caixa de diálogo dos sites indicando que algumas funções do site serão bloqueadas ou degradadas, a menos que eu desative o modo Navegação Privada. A maioria dos usuários provavelmente espera que a escolha de usar a Navegação Privada seja privada. Minha impressão é que outros navegadores principais não vazam o estado de Navegação Privada para sites.

Percebi que, enquanto no modo Navegação privada, o Safari não solicita favicons; portanto, em teoria, um site pode bloquear o cache do favicon e adivinhar bastante que a Navegação Privada está ativada.

Por outro lado, no iOS, o Safari não solicita favicons. Mas, mesmo no modo Navegação privada, solicitará qualquer "ícone de toque da maçã" se você acessar o painel Compartilhamento (o ícone de toque da maçã será usado como o ícone da tela inicial se, posteriormente, "Adicionar à tela inicial" URL).

Além do favicon, existem outras maneiras conhecidas de um site determinar (ou adivinhar com precisão razoável) que você está usando o modo de Navegação Privada no Safari da área de trabalho?

pseudon
fonte
Você pode fornecer um site de exemplo?
Sayzlim 22/05
por exemplo, video.pbs.org " Ocorreu um erro. Para uma melhor experiência com este site, verifique se a Navegação Privada está desativada."
Pseudon
É possível que o site esteja desativando algum outro fator, como DNT = 1 ou algum bloqueio do rastreador. Se for esse o caso, a mensagem de erro é enganosa. Mas obtive algo semelhante em outros sites.
Pseudon
1
Acabei de testar o DNT e as extensões de bloqueio e elas não parecem ser um fator. No modo Navegação Privada com todas as extensões desativadas e DNT desativadas, ainda recebo a caixa de diálogo de erro. Mas com a Navegação privada desativada e as extensões DNT = 1 e (bloqueando) ativadas, não recebo o erro.
Pseudon
Por que você não deseja que um site saiba que está no modo de privacidade? Nosso aplicativo baseado na Web não funcionará completamente nessa configuração, uma vez que dependemos muito do indexeddb, appcache, armazenamento local, trabalhadores da web e uma variedade de outros recursos HTML5 que simplesmente não estão disponíveis no modo de privacidade. Então, o que você está pedindo é uma maneira de impedir que nossos usuários digam que eles configuraram seu navegador para que nosso aplicativo Web não funcione. Qual o valor disso? (Se você não entende por que isso não faz sentido, apenas relaxe. Você não é prejudicado por um site sabendo
user3343404

Respostas:

14

No iOS, o armazenamento local do HTML5 não está disponível no modo de navegação privada, o que significa que você pode detectá-lo tentando salvar algo no armazenamento local e capturando a exceção com o seguinte JavaScript:

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

Modificado em /programming//a/17741714/

No OS X, não existe realmente um método canônico, mas isso deve fornecer algumas informações úteis:

Se você está procurando orientações de implementação, provavelmente deve tentar Stack Overflow

grg
fonte
Obrigado. Estou interessado na implementação do lado do servidor apenas na medida em que ele me ajuda com defesa contra as artes das trevas;)
pseudon
2
Porém, cuidado com falsos positivos - o snippet JavaScript fornecido também mostraria o alerta no modo não privado se o armário de armazenamento local para essa origem estiver cheio.
Mathias Bynens
4

A Navegação Privada do Safari não funciona da mesma maneira que a Navegação Privada do outro navegador .

Por exemplo, o Modo de navegação anônima do Chrome cria uma nova sessão separada, onde todos os dados serão excluídos após a sessão de navegação (o site ainda pode rastrear suas ações a partir do endereço IP nesse modo).

Enquanto o Safari proíbe o site de criar / gravar um arquivo localmente, descarte todas as alterações feitas nos cookies, incluindo suas atividades no navegador durante esta sessão de navegação (o site ainda pode rastrear sua atividade neste modo, exceto que eles armazenaram cookies nesta sessão. ser descartado).

Então, como um site sabe se você ativou a Navegação Privada? Porque verifica se pode gravar arquivos localmente .

sayzlim
fonte
O Safari permite cookies dentro da sessão de Navegação Privada, certo? Consigo fazer login em sites da Web durante a Navegação Privada, fazer tudo o que normalmente faço e não encontrei limitações, exceto nos raros casos em que recebo um diálogo como este.
Pseudon
Sim, modifiquei minha resposta um pouco. Quero dizer que seus cookies durante esta sessão não são salvos depois que a Navegação Privada é desativada.
Sayzlim 22/05