Можно ли определить, находится ли Chrome в режиме инкогнито с помощью сценария?

Действительно ли возможно определить, находится ли Google Chrome в режиме инкогнито с помощью сценария?

Править: Я на самом деле имел в виду, это возможный с помощью пользовательского сценария, но ответы предполагают, что JavaScript работает на веб-странице. Я повторно спросил вопрос здесь в отношении пользовательских сценариев.

107
задан Community 23 May 2017 в 12:34
поделиться

4 ответа

Один из способов - посетить уникальный URL-адрес и затем проверить, обрабатывается ли ссылка на этот URL-адрес как посещенная CSS.

Вы можете увидеть пример этого в «Обнаружении инкогнито» (Мертвая ссылка) .

Исследовательская статья того же автора по замене ссылки «Обнаружение инкогнито» выше

В main.html добавьте iframe,

 <iframe id='testFrame' name='testFrame' onload='setUniqueSource(this)' src='' style="width:0; height:0; visibility:hidden;"></iframe>

и некоторый код 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 = '';
}

Затем в тест. html , которые загружаются в 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> 

ПРИМЕЧАНИЕ: попытка сделать это из файловой системы может заставить Chrome кричать о «небезопасном Javascript». Это однако будет работать с веб-сервером.

18
ответ дан 24 November 2019 в 03:38
поделиться

Если вы разрабатываете расширение, вы можете использовать API вкладок, чтобы определить, является ли окно / вкладка инкогнито.

Дополнительную информацию можно найти здесь .

Если вы просто работаете с веб-страницей, это непросто, и так задумано. Однако я заметил, что все попытки открыть базу данных (window.database) терпят неудачу в режиме инкогнито, потому что в режиме инкогнито не допускается оставлять никаких следов данных на компьютере пользователя.

Я не тестировал его, но подозреваю, что все вызовы localStorage тоже терпят неудачу.

4
ответ дан 24 November 2019 в 03:38
поделиться

В документации по режиму инкогнито конкретно сказано, что веб-сайты не будут вести себя по-другому. Я полагаю, это означает, что ответ отрицательный.

-9
ответ дан 24 November 2019 в 03:38
поделиться

Вы можете, в JavaScript, посмотреть ответ JHurrah. За исключением того, что ссылки не выделяются, все, что делает режим инкогнито, это не сохраняет историю просмотров и куки. Из страницы помощи google help page:

  • Веб-страницы, которые вы открываете, и файлы, загруженные, пока вы находитесь в режиме инкогнито. не записываются в вашу историю просмотров и истории загрузок.
  • Все новые файлы cookie удаляются после закрытия всех окон инкогнито. которые вы открывали.

Как вы видите, различия между обычным просмотром и инкогнито происходят после посещения веб-страницы, поэтому браузер ничего не передает серверу, когда находится в этом режиме.

Вы можете посмотреть, что именно ваш браузер посылает серверу, используя один из многих анализаторов HTTP-запросов, например вот этот. Сравните заголовки между обычной сессией и инкогнито, и вы не увидите никакой разницы.

8
ответ дан 24 November 2019 в 03:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: