Глубина цвета и HDR: как дисплей используется для фингерпринта
Браузер и устройство

Глубина цвета и HDR: как дисплей используется для фингерпринта

Глубина цвета (screen.colorDepth) и HDR-дисплеи используются в браузерном фингерпринтинге для идентификации типа монитора без cookies.

7 мин чтения·

Фингерпринт по глубине цвета считывает screen.colorDepth и screen.pixelDepth — два свойства браузера, раскрывающих количество бит на пиксель, используемых дисплеем — и включает это значение в уникальный профиль браузера. Одна строка JavaScript, никаких разрешений, работает во всех браузерах с 2015 года. Посмотрите, что раскрывает ваш браузер прямо сейчас на whatsmy.fyi.

TL;DR

screen.colorDepth возвращает целое число — почти всегда 24 или 32 — описывающее, сколько бит дисплей использует для представления цвета каждого пикселя. Само по себе несёт скромную энтропию (~0,87 бит), но в сочетании с разрешением экрана, devicePixelRatio, аппаратным параллелизмом, часовым поясом и данными GPU вносит вклад в отпечаток с точностью идентификации индивидуальных устройств более 99%. В отличие от cookies, не может быть удалён, заблокирован баннерами или очищен с историей браузера.

Что такое фингерпринт по глубине цвета?

Фингерпринт по глубине цвета — одна из техник в более широкой практике fingerprinting браузера. Каждый браузер раскрывает два тесно связанных свойства в интерфейсе Screen:

  • screen.colorDepth — количество бит для представления одного значения цвета в буфере цвета устройства вывода (сам дисплейный модуль).
  • screen.pixelDepth — количество бит для представления одного пикселя в видеопамяти, включая биты прозрачности. На практике всегда равно colorDepth в современных браузерах.

Значения в реальном мире

Значение colorDepthЧто означаетКто возвращает
24Стандартный 8-битный цвет на канал (sRGB)Подавляющее большинство устройств
3224-битный цвет + 8-битный альфа-каналНекоторые конфигурации Windows; исторически IE/Edge
3010-битный цвет на канал (Wide Color / HDR)MacBook Pro с широким цветовым охватом; некоторые Windows HDR
4816-битный цвет на канал (профессиональная графика)Редко; рабочие станции с профессиональными дисплеями
16 или 8Устаревшее или удалённое рабочее местоВиртуальные машины, RDP-сессии, очень старые устройства

Почему нестандартные значения более узнаваемы

Примерно 95% браузеров сообщает colorDepth = 24. Это создаёт большой анонимный набор — но с отрицательным следствием: любой браузер, не сообщающий 24, немедленно является необычным.

Дисплей с wide color (30-бит) на MacBook Pro с Liquid Retina XDR — значительно менее распространённая конфигурация. Устройства с глубиной 30 встречаются реже, чем одно на тысячу браузеров, немедленно сужая пул идентификации.

HDR-дисплеи и fingerprinting

По мере распространения HDR-дисплеев браузеры начинают раскрывать дополнительные сигналы через CSS-медиазапросы. Комбинация screen.colorDepth = 30 с dynamic-range: high и конкретным devicePixelRatio может очень точно идентифицировать класс устройства.

Кто использует это в реальной жизни?

Коммерческие платформы fingerprinting

Fingerprint.com, ThreatMetrix и аналогичные платформы включают colorDepthкак один из десятков сигналов в своих моделях идентификации устройств.

Обнаружение виртуальных машин

Виртуальные машины и среды RDP часто сообщают нестандартные значения глубины цвета (16-бит или меньше), поскольку виртуализированные видеодрайверы не всегда правильно имитируют аппаратный дисплей.

Как защититься?

  • Tor Browser: Нормализует все значения экрана, включая глубину цвета, до стандартных значений.
  • Firefox с privacy.resistFingerprinting: Нормализуетscreen.colorDepth до стандартного значения.
  • Brave Browser: Применяет Farbling ко многим свойствам экрана.
  • VPN ограничения: VPN не влияет на свойства дисплея. Проверьте работу VPN на whatsmy.fyi.

Часто задаваемые вопросы

Что такое «глубина цвета»?

Глубина цвета — количество бит, используемых для представления цвета каждого пикселя на дисплее. 24-битный цвет означает 8 бит для красного, 8 для зелёного и 8 для синего (RGB 8-8-8), что даёт 16,7 миллиона возможных цветов.

Почему colorDepth важен для fingerprinting?

Сам по себе он редко бывает уникальным — большинство устройств имеет значение 24. Его ценность в том, что нестандартные значения (30, 32, 16) сигнализируют о специфической конфигурации аппаратного обеспечения, немедленно сужая пул идентификации.

Работает ли это в режиме инкогнито?

Да. Глубина цвета дисплея не меняется в режиме инкогнито — это аппаратное свойство.

Связанные статьи

Проверьте свой IP-адрес, местоположение и оценку конфиденциальности — мгновенно.

Без логов. Без слежки. Без внешних API.

Запустить проверку →

Похожие статьи

Глубина цвета и HDR: как дисплей используется для фингерпринта | whatsmy.fyi