(Как) Может ли веб-сайт определить, включен ли частный просмотр Safari?

11

В Safari на Mavericks я иногда получаю диалог с веб-сайтов, указывающий, что некоторые функции сайта будут заблокированы или ухудшены, если я не отключу режим частного просмотра. Большинство пользователей, вероятно, ожидают, что выбор приватного просмотра будет закрытым. У меня сложилось впечатление, что другие крупные браузеры не пропускают статус Private Browsing на веб-сайты.

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

Напротив, в iOS Safari вообще не запрашивает иконки. Но даже в режиме приватного просмотра он будет запрашивать любой значок «apple-touch-icon», если вы переходите на панель «Общий доступ» (значок «apple-touch-icon» используется в качестве значка «Главный экран», если впоследствии для этого «Добавить на главный экран»). URL).

Кроме favicon, существуют ли другие известные способы, которыми веб-сайт может определить (или предположить с достаточной точностью), что вы используете режим Private Browsing в настольном Safari?

pseudon
источник
Можете ли вы привести пример веб-сайта?
Сайзлим
например, video.pbs.org « Произошла ошибка. Для лучшего использования этого веб-сайта, пожалуйста, проверьте , не отключен ли режим приватного просмотра».
псевдон
Возможно, что веб-сайт отключает какой-то другой фактор, такой как DNT = 1 или некоторая блокировка трекера. Если это так, сообщение об ошибке вводит в заблуждение. Но я получил нечто подобное на других сайтах.
псевдон
1
Я только что проверил DNT и блокировку расширений, и это, кажется, не является фактором. В режиме приватного просмотра со всеми отключенными расширениями и неустановленным DNT я по-прежнему получаю сообщение об ошибке. Но с отключенным приватным просмотром и включенным DNT = 1 и (блокированием) расширений я не получаю сообщение об ошибке.
псевдон
Почему вы не хотите, чтобы сайт знал, что вы находитесь в режиме конфиденциальности? Наше веб-приложение будет полностью неработоспособным в этой конфигурации, так как мы в значительной степени полагаемся на indexeddb, appcache, локальное хранилище, веб-работников и ряд других функций HTML5, которые просто недоступны в режиме конфиденциальности. Итак, то, о чем вы просите, - это способ не дать нашим пользователям сказать, что они настроили свой браузер так, чтобы наше веб-приложение не работало. Какова ценность этого? (Если вы не понимаете, почему это не имеет никакого смысла, просто расслабьтесь. Сайт не пострадает от вас
user3343404

Ответы:

14

На iOS локальное хранилище HTML5 недоступно в режиме частного просмотра, что означает, что вы можете обнаружить его, пытаясь что-то сохранить в локальном хранилище и перехватывая исключение с помощью следующего JavaScript:

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

Изменено с /programming//a/17741714/

На OS X нет действительно канонического метода, но это должно предоставить некоторую полезную информацию:

Если вы ищете руководство по реализации, вам, вероятно, стоит попробовать Stack Overflow вместо

Grg
источник
Спасибо. Я заинтересован в реализации на стороне сервера только в той мере, в которой это помогает мне в защите от темных искусств;)
псевдон
2
Остерегайтесь ложных срабатываний, хотя - предоставленный фрагмент JavaScript также будет показывать предупреждение в не приватном режиме, если локальный шкафчик хранилища для этого источника заполнен.
Матиас Биненс
4

Приватный просмотр Safari не работает так же, как приватный просмотр в другом браузере .

Например, режим инкогнито в Chrome создает отдельный новый сеанс, в котором все данные будут удалены после сеанса просмотра (веб-сайт все еще может отслеживать ваши действия с IP-адреса в этом режиме).

Хотя Safari запрещает веб-сайту создавать / записывать файлы локально, откажитесь от всех изменений, внесенных в файлы cookie, включая ваши действия в браузере во время этого сеанса просмотра (сайт все равно может отслеживать вашу активность в этом режиме, за исключением того, что они сохраняют файлы cookie в этом сеансе. быть отброшены).

Так как веб-сайт узнает, что вы включили приватный просмотр? Потому что он проверяет, может ли он записывать файлы локально .

sayzlim
источник
Safari разрешает использование файлов cookie в сеансе приватного просмотра, верно? Я могу заходить на веб-сайты, находясь в режиме приватного просмотра, и делаю все, что обычно делаю, и не обнаружил никаких ограничений, кроме тех редких случаев, когда я получаю диалог, подобный этому.
псевдон
Да, немного изменил мой ответ. Я имею в виду, что ваши куки во время этого сеанса не сохраняются после отключения приватного просмотра.
Сайзлим