Фингерпринт памяти устройства использует свойство JavaScript navigator.deviceMemoryдля считывания приблизительного объёма RAM устройства и включения этого значения в уникальный отпечаток браузера — без cookies, без разрешений, без предупреждения. Посмотрите, что раскрывает ваш браузер, прямо сейчас на whatsmy.fyi.
TL;DR
navigator.deviceMemory возвращает RAM вашего устройства в гигабайтах, округлённую до ближайшей степени двойки: 0,25, 0,5, 1, 2, 4 или 8 ГБ. Это грубое значение вносит около 2–3 бит энтропии в отпечаток браузера. Firefox и Safari намеренно отказались реализовывать этот API. Только браузеры на основе Chromium раскрывают его.
Что такое фингерпринт памяти устройства?
Фингерпринт памяти устройства — техника отслеживания, считывающая свойство Navigator.deviceMemory — атрибут только для чтения, введённый в Chrome 63 в декабре 2017 года. Значение намеренно неточно: устройство с 6 ГБ RAM сообщает 8, а устройство с 3 ГБ сообщает 4, поскольку спецификация требует округления до ближайшей степени двойки. Это квантование было разработано для ограничения риска fingerprinting, но создаёт стабильный, последовательный сигнал.
API является частью более широкого семейства свойств раскрытия аппаратного обеспечения в браузере, вместе с navigator.hardwareConcurrency и navigator.platform. Вместе они строят аппаратный профиль, который Руководство W3C по fingerprinting явно классифицирует как вектор fingerprinting.
Как работает navigator.deviceMemory?
Шаг 1 — Считывание физической памяти
Браузер считывает физическую RAM устройства в байтах из операционной системы, затем округляет до ближайшей степени двойки. Устройство с 6 144 МБ (6 ГБ) округляется до 8 192 МБ (8 ГБ).
Шаг 2 — Перевод в гигабайты и ограничение
Округлённое значение в мегабайтах делится на 1 024 для получения значения в гигабайтах. Любой результат выше 8 ограничивается значением 8,0. Более новые версии Chrome расширили верхний предел до 32 для рабочих станций.
Шаг 4 — Доступно скриптам без разрешения
Любой JavaScript на странице может считать navigator.deviceMemory без запроса пользователя, без разрешений и без уведомления браузера. Сторонние аналитические и рекламные скрипты считывают его молча при каждой загрузке страницы.
// Считывание navigator.deviceMemory
// Возвращает: 0.25 | 0.5 | 1 | 2 | 4 | 8 (или undefined в Firefox/Safari)
const ram = navigator.deviceMemory;
console.log(ram); // например, 8 (на MacBook Pro с 16 ГБ)
// Отсутствие значения само является сигналом fingerprinting:
// undefined → браузер Firefox, Safari или Tor Browser (не Chromium)
if (ram === undefined) {
console.log('Обнаружен не-Chromium браузер');
}
// Сервисы fingerprinting объединяют его с количеством ядер CPU
const hardwareProfile = {
deviceMemory: navigator.deviceMemory,
cpuCores: navigator.hardwareConcurrency,
platform: navigator.platform,
};Насколько фингерпринт памяти влияет на идентификацию?
| Сигнал | Значение / Находка | Источник |
|---|---|---|
| Энтропия Шеннона (в изоляции) | ~2–3 бит | Спецификация W3C Device Memory |
| Стандартных значений-бакетов | 6 (0,25, 0,5, 1, 2, 4, 8 ГБ) | Спецификация W3C Device Memory |
| Глобальная поддержка браузерами | 76,37% (все на базе Chromium) | Can I Use, 2025 |
| Поддержка Firefox / Safari | 0% — намеренно не реализовано | MDN Web Docs |
| Некорректные значения в 7-дневной выборке трафика | 16 000+ событий отмечены как подделка | Castle.io, 2025 |
Кто использует фингерпринт памяти в реальной жизни?
Коммерческие платформы fingerprinting
FingerprintJS явно перечисляет deviceMemory как именованный источник сигнала (getDeviceMemory) в слое сбора данных, вместе с hardwareConcurrency и platform.
Отсутствие как сигнал
Когда navigator.deviceMemory возвращает undefined, скрипт fingerprinting немедленно узнаёт, что браузер не является Chromium — подтверждая Firefox, Safari или Tor Browser. Это различие «присутствует/отсутствует» само по себе имеет идентифицирующую ценность.
Законно ли это?
По GDPR fingerprinting браузера создаёт постоянный уникальный идентификатор и представляет собой обработку персональных данных. CNIL Франции прямо указал, что отслеживание на основе fingerprinting требует того же информированного согласия, что и отслеживание на основе cookies. По российскому Федеральному закону № 152-ФЗ «О персональных данных» подобные идентификаторы также могут считаться персональными данными.
Как защититься?
- Tor Browser (наиболее сильная защита): Firefox-основа — API
navigator.deviceMemoryне реализован, возвращаетundefined. - Firefox (рекомендуется для ежедневного использования): Firefox не реализует
navigator.deviceMemory. Включениеprivacy.resistFingerprintingдополнительно нормализует размер экрана, часовой пояс и метрики шрифтов. - Brave Browser: Реализует API, но применяет рандомизацию Farbling — значение
deviceMemoryотличается между сайтами и сессиями. - Safari: Как и Firefox, отказался реализовывать API.
navigator.deviceMemoryвозвращаетundefined. - Ограничения VPN: VPN не влияет на
navigator.deviceMemory. Проверьте, правильно ли маскируется IP-адрес, на whatsmy.fyi.
Часто задаваемые вопросы
Работает ли navigator.deviceMemory в режиме инкогнито?
Да. Режим инкогнито не меняет RAM или то, как Chrome сообщает о ней. navigator.deviceMemory возвращает то же значение в окне инкогнито.
Почему Firefox и Safari отказались реализовывать navigator.deviceMemory?
Обе команды пришли к выводу, что затраты на fingerprinting перевешивают удобство для разработчиков. В итоге 76% глобального браузерного трафика раскрывает значение, тогда как пользователи Firefox и Safari (~24%) — нет.
Связанные статьи
- Что такое отпечаток браузера? Как сайты отслеживают вас без cookies — полное руководство по всем сигналам отпечатков
- Фингерпринт CPU: ядра процессора раскрывают ваше устройство — родственный API, раскрывающий количество ядер CPU
- Что такое WebGL fingerprinting? Как ваш GPU идентифицирует браузер — как 3D graphics API раскрывает производителя GPU и версию драйвера
- Что такое Canvas Fingerprinting? Как сайты отслеживают без cookies — как пиксельный рендеринг GPU создаёт уникальный идентификатор



