Uma maneira é visitar um URL exclusivo e, em seguida, verificar se um link para esse URL é tratado como visitado por CSS.
Você pode ver um exemplo disso em "Detectando incógnito" (link inativo) .
Artigo de pesquisa do mesmo autor para substituir o link Detecção de incógnito acima
Em main.html
adicionar um iframe,
<iframe id='testFrame' name='testFrame' onload='setUniqueSource(this)' src='' style="width:0; height:0; visibility:hidden;"></iframe>
, e algum código JavaScript:
function checkResult() {
var a = frames[0].document.getElementById('test');
if (!a) return;
var color;
if (a.currentStyle) {
color = a.currentStyle.color;
} else {
color = frames[0].getComputedStyle(a, '').color;
}
var visited = (color == 'rgb(51, 102, 160)' || color == '#3366a0');
alert('mode is ' + (visited ? 'NOT Private' : 'Private'));
}
function setUniqueSource(frame) {
frame.src = "test.html?" + Math.random();
frame.onload = '';
}
Em seguida, test.html
são carregados no iFrame:
<style>
a:link { color: #336699; }
a:visited { color: #3366A0; }
</style>
<script>
setTimeout(function() {
var a = document.createElement('a');
a.href = location;
a.id = 'test';
document.body.appendChild(a);
parent.checkResult();
}, 100);
</script>
NOTA: tentar isso no sistema de arquivos pode fazer o Chrome gritar sobre "Javascript não seguro". No entanto, ele funcionará servindo de um servidor da web.
incognito
se você pudesse determiná-lo facilmente :)