В этом блоге показано, как определить режим инкогнито в браузерах на основе хрома.

Что такое Chromium?

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

Существует несколько браузеров на основе хрома, таких как Chrome, Edge, Brave, Opera и многие другие.

Что такое режим инкогнито?

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

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

Обнаружение окна инкогнито до Chrome 74:

До Chrome 74 была ошибка, которую использовали многие веб-сайты, чтобы определить, посещает ли пользователь веб-сайт в режиме инкогнито или в обычном режиме. Веб-сайтам просто пришлось попытаться использовать FileSystem API, который используется для хранения временных или постоянных файлов. Этот API был отключен в режиме инкогнито, но присутствовал в режиме без инкогнито.

Простой поиск в Google для обнаружения окна инкогнито приводит к множеству результатов, одним из которых является вопрос Stackoverflow с принятым ответом.

Позже webkitStorageInfo и webkitRequestFileSystem были отключены.

Обнаружение окна инкогнито в Chrome 74

Недавно я играл с Quota_Management_AP I и обнаружил метод обнаружения режима инкогнито. Этот API управляет квотой, выделенной для ВРЕМЕННОГО и ПОСТОЯННОГО хранилища, доступного приложениям и веб-сайтам в браузере. Квоту для ВРЕМЕННОГО хранилища можно запросить с помощью следующего фрагмента кода, взятого из статьи Джеффа Посника:

Веб-сайтам / приложениям доступны два типа хранилища: ВРЕМЕННОЕ и ПОСТОЯННОЕ, поскольку ВРЕМЕННОЕ хранилище, как следует из названия, является временным, оно может использоваться без запроса квоты и используется всеми веб-сайтами, работающими в браузере.

Несколько интересных моментов о ВРЕМЕННОМ хранилище и его квоте.

  • Как упоминалось здесь, в режиме без инкогнито квота указывается в гигабайтах. Но в инкогнито ограничение квоты не превышает 120 МБ.
  • ВРЕМЕННОЕ хранилище имеет квоту по умолчанию в 50% доступного диска в качестве общего пула для всех приложений / веб-сайтов.
  • Приложения / веб-сайты могут запрашивать свою квоту, вызывая метод queryUsageAndQuota () Quota API без каких-либо разрешений.
  • Квота для окна в режиме инкогнито составляет часть (10%) памяти устройства с верхним пределом 120 МБ.
  • Квота для окна без режима инкогнито - это часть памяти устройства.

В следующей таблице приведена минимальная ВРЕМЕННАЯ квота хранилища, доступная для устройств с различными размерами дисков, которая рассчитывается на основе объема пространства, которое браузер пытается постоянно оставлять свободным на устройстве.

Из приведенной выше таблицы видно, что для того, чтобы квота временного хранилища была меньше 120 МБ в случае режима без инкогнито, объем памяти устройства должен быть меньше 2,4 ГБ.

Используя эту информацию, я придумал простое правило для обнаружения режима инкогнито, т.е. если квота временного хранилища ‹= 120 МБ, то можно с уверенностью сказать, что это окно в режиме инкогнито.

В прошлом году Google представил метод navigator.storage.persist (), который позволяет вашему веб-приложению запрашивать освобождение своего хранилища от автоматической очистки.

Теперь к нему присоединяется метод navigator.storage.estimate (). Обещание, которое оценка () разрешается с помощью объекта, содержащего два свойства: использование, представляющее количество используемых в настоящее время байтов, и квоту, представляющее максимальное количество байтов, которое может сохранить текущий источник.

Насколько точна оценка?

Трудно упустить тот факт, что данные, которые вы получаете от функции, являются всего лишь оценкой пространства, которое используется источником. Это прямо в названии функции! Ни использование, ни квота значения не должны быть стабильными, поэтому рекомендуется принять во внимание следующее:

  • Использование отражает, сколько байтов данное происхождение эффективно использует для данных того же происхождения.
  • Квота отражает объем пространства, зарезервированного в настоящее время для источника. Значение зависит от некоторых постоянных факторов, таких как общий размер хранилища, но также от ряда потенциально изменчивых факторов, включая объем пространства хранения, которое в настоящее время не используется.

Заключение

Этот блог поможет вам понять хранилище браузеров на основе хрома и обнаружить окно инкогнито.