(Як) Чи може веб-сайт визначити, чи ввімкнено приватне перегляд Safari?


11

У Safari on Mavericks я інколи отримую діалогове вікно із веб-сайтів, яке вказує на те, що деякі функції веб-сайтів будуть заблоковані або деградовані, якщо я не вимкну режим приватного перегляду. Більшість користувачів, напевно, очікують, що вибір приватного перегляду буде приватним. Моє враження, що інші основні браузери не просочують стан приватного перегляду до веб-сайтів.

Я помітив, що, перебуваючи в режимі приватного перегляду, Safari не запитуватиме фавікони, тому теоретично сайт може блокувати кешування фавікону та зробити досить непоганим здогад про те, що функція приватного перегляду ввімкнена.

Навпаки, на iOS Safari взагалі не вимагає фавіконів. Але він навіть у режимі приватного перегляду вимагатиме будь-якого "яблучного дотику", якщо ви отримуєте доступ до панелі спільного доступу (піктограма яблучного дотику використовується як значок головного екрану, якщо згодом для цього "Додати на головний екран" URL-адреса).

Окрім favicon, чи існують інші відомі способи, за допомогою яких веб-сайт міг би визначити (або здогадатися з розумною точністю), що ви використовуєте режим приватного перегляду в настільному Safari?


Чи можете ви навести приклад веб-сайту?
sayzlim

наприклад, 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');
}

Змінено з https://stackoverflow.com/a/17741714/

В OS X насправді не є канонічним методом, але це має надати корисну інформацію:

Якщо ви шукаєте вказівки щодо впровадження, ви, ймовірно, замість цього спробуйте переповнювати стек


Дякую. Мене цікавить реалізація на сервері лише в тій мірі, в якій це допомагає мені в захисті від темних мистецтв;)
псевдоні

2
Однак остерігайтеся помилкових позитивів - наданий фрагмент JavaScript також показуватиме попередження в неприватному режимі, якщо локальний шаф для зберігання даних для цього джерела заповнений.
Матіас Байненс


4

Приватний перегляд Safari не працює так само, як інший приватний веб- переглядач .

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

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

Тож як веб-сайт дізнається, чи ви ввімкнули приватний перегляд? Тому що він перевіряє, чи може він записувати файли локально .


Хоча Safari забороняє використання файлів cookie протягом сеансу приватного перегляду, правда? Я можу ввійти на веб-сайти, перебуваючи в приватному перегляді, і робити все, що я зазвичай роблю, і жодних обмежень не виникало, за винятком рідкісних випадків, коли я отримую таке діалогове вікно.
псевдон

Так, трохи змінили мою відповідь. Я маю на увазі, що ваші файли cookie під час цього сеансу не зберігаються після вимкнення приватного перегляду.
sayzlim
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.