Как работает цифровой отпечаток браузера через Canvas, WebGL и аудио, и как обнаружить и снизить отслеживание с помощью BrowserInsight.
Что такое цифровой отпечаток браузера?
Цифровой отпечаток браузера (browser fingerprinting) — это технология идентификации и отслеживания пользователей путём сбора характеристик их браузера и устройства, а не хранения идентификатора на самом устройстве. Официальное руководство W3C по фингерпринтингу проводит границу, которой пользуются организации по стандартизации, решая, что именно смягчать: пассивный фингерпринтинг считывает информацию, которую браузер раскрывает автоматически — заголовки, размер экрана; активный фингерпринтинг требует, чтобы скрипт сам обратился к API — Canvas, WebGL, AudioContext — и понаблюдал за откликом. (Короткое определение см. в глоссарии MDN.) Это разделение важно, потому что именно оно определяет, какие сигналы производители браузеров могут спрятать за запросом разрешения, а какие остаются частью поведения платформы по умолчанию. В отличие от традиционных cookie, цифровой отпечаток браузера не требует хранения каких-либо данных на устройстве пользователя, поэтому сайты способны узнавать одного и того же пользователя даже после очистки данных браузера — о том, почему очистка cookie, переход в приватный режим или смена VPN не сбрасывают ID, построенный таким образом, читайте в статье Visitor ID: как он переживает инкогнито, VPN и кеш.
Как работает цифровой отпечаток браузера
Когда вы посещаете сайт, ваш браузер автоматически отправляет на сервер большой объём информации, включая:
- User-Agent: тип и версия браузера, а также сведения об операционной системе
- Разрешение экрана: размер дисплея и глубина цвета
- Часовой пояс: настройки локального времени устройства
- Установленные шрифты: список доступных в системе шрифтов
- Canvas-отпечаток: едва заметные различия в графике, отрисованной через HTML5 Canvas на разных устройствах
- WebGL-отпечаток: информация о видеокарте и драйверах
- Аудиоотпечаток: характеристики аудиопроцессора
- Геометрия вёрстки: субпиксельные позиции элементов и текста, считываемые через обычные API вёрстки DOM — см. ClientRects-фингерпринтинг
- Медиаустройства: количество, ID и (после разрешения) модельные метки камер/микрофонов через
enumerateDevices()— см. фингерпринтинг медиаустройств - Установленные голоса: список голосов синтеза речи через
speechSynthesis.getVoices(), без запроса разрешения — см. фингерпринтинг синтеза речи - CSS-медиазапросы: настройки и характеристики железа вроде
prefers-color-scheme, а также установленные шрифты раскрываются вообще без JavaScript — см. CSS-фингерпринтинг - Состояния разрешений: какие имена распознаёт
navigator.permissions.query()иgranted/denied/promptдля каждого, без единого диалога — см. Фингерпринтинг Permissions API - Список плагинов:
navigator.pluginsтеперь жёстко зашит спецификацией в одно из двух фиксированных состояний, но расхождение сnavigator.pdfViewerEnabledили заявленной идентичностью браузера всё ещё выдаёт автоматизацию и подделку — см. Фингерпринтинг navigator.plugins - Сведения о сети: грубые параметры (
effectiveType,downlink,rtt) черезnavigator.connection, только в Chromium — см. Фингерпринтинг Network Information API - Раскладка клавиатуры: физическая раскладка ОС через
navigator.keyboard.getLayoutMap(), только в Chromium — см. Фингерпринтинг по раскладке клавиатуры - Статус батареи: заряд и время зарядки, некогда доступные без разрешения — Firefox и Safari отказались от этого после исследований о повторной идентификации; см. Battery Status API
- HTTP-заголовки:
Accept,Accept-Language,Accept-Encoding— считываются ещё до выполнения JavaScript — см. Фингерпринтинг без JavaScript
Исследования цифровых отпечатков браузеров показали, что при объединении достаточного количества таких сигналов подавляющее большинство браузеров становятся уникально идентифицируемыми. На практике отпечаток вашего браузера может быть почти столь же индивидуальным, как реальный отпечаток пальца.
Каждый сигнал по отдельности слаб — у множества людей совпадают разрешение экрана или часовой пояс. Фингерпринтинг работает потому, что эти значения по большей части независимы, так что их объединение многократно увеличивает различимость. На языке теории информации каждый атрибут добавляет несколько бит энтропии, и как только суммарная энтропия превышает примерно 33 бита, браузер становится фактически уникальным среди всех людей на Земле — этот порог впервые был продемонстрирован в масштабе исследованием Panopticlick от EFF (Eckersley, 2010) и подтверждён более поздними работами, такими как Laperdrix et al. Типичная комбинация из user-agent, списка шрифтов, canvas и WebGL зачастую преодолевает этот порог сама по себе. О том, как складываются эти биты и что на самом деле означает получившееся множество анонимности «1 из X», читайте в статье «Энтропия отпечатка браузера и множество анонимности».
WebRTC — связанный, но отдельный риск, причём сразу в двух формах. Самая известная проблема — это сетевая утечка, которая может раскрыть ваш реальный IP-адрес даже за VPN. О том, как проверить и закрыть эту утечку, читайте в статье Защита от утечек WebRTC. Отдельно от этого WebRTC раскрывает и небольшую поверхность для фингерпринтинга — через поддерживаемые кодеки и структуру SDP, никак не связанную с вашим IP. О том, как работает этот сигнал и почему устранение утечки его не убирает, читайте в статье Фингерпринтинг WebRTC.
Эти сигналы весят по-разному в зависимости от устройства. Массовое производство телефонов сглаживает энтропию canvas, WebGL и шрифтов по сравнению с огромным разнообразием конфигураций настольных ПК — зато геометрия экрана, точки касания и датчики движения добавляют сигналы, которых на десктопах почти нет. Подробнее о том, как именно отслеживают устройства на Android и iOS, читайте в статье Фингерпринтинг мобильного браузера.
Часовой пояс и язык заслуживают отдельного упоминания, потому что они одновременно служат и сигналами региона — сервис, которому нужно узнать, из какой страны вы на самом деле подключаетесь, может сравнить заявленные часовой пояс и язык с геолокацией по IP, а VPN, меняющий только IP, оставляет это противоречие на виду. О том, как именно устроена эта проверка, читайте в статье Как приложения определяют ваш реальный регион, несмотря на VPN.
Подробно о Canvas-отпечатке
Canvas-отпечаток рисует скрытый текст и фигуры на элементе <canvas>, считывает получившиеся пиксели и вычисляет их хеш — из-за различий в GPU, драйверах и движке рендеринга этот хеш отличается от устройства к устройству даже при абсолютно одинаковом коде отрисовки. Это по-прежнему один из самых распространённых сигналов фингерпринтинга: он не требует разрешения и выполняется за миллисекунды. Точные операции отрисовки, которые максимизируют энтропию, реальный код и способ прочитать собственный Canvas-хеш — см. в статье Обнаружение Canvas-отпечатка: как сайты идентифицируют ваше устройство.
WebGL-отпечаток
WebGL-отпечаток считывает с вашего GPU две разные вещи: десятки сообщаемых параметров — включая, через расширение WEBGL_debug_renderer_info, нескрытые строки производителя и рендерера — и хеш пикселей от отрисованной за пределами экрана тестовой сцены, который меняется вместе с различиями в вычислениях с плавающей запятой и сглаживании на уровне драйвера. Поскольку оба сигнала исходят от оборудования и драйверов, а не от переключаемых настроек, WebGL — один из самых стойких сигналов для защиты, а строка рендерера способна выдать даже операционную систему — например, токен бэкенда Direct3D может исходить только от Windows, — поэтому некоторые сочетания GPU и ОС не просто редки, а физически невозможны и мгновенно попадают под подозрение. Полный разбор API, код и способы защиты — в статье Подробный разбор WebGL-отпечатка.
Что изменилось на уровне платформы
Поверхность фингерпринтинга не зафиксирована раз и навсегда: производители браузеров годами её сокращают, но идут при этом двумя совершенно разными путями. От того, каким путём идёт ваш браузер, зависит, что скрипт всё ещё может с вас считать, — так что стоит понимать, на чьей вы стороне.
Chromium: урезать пассивную поверхность, остальное — по запросу
User-Agent Reduction сокращает строку User-Agent, которую браузер по умолчанию отправляет с каждым запросом, до малоинформативной заглушки: замораживает минорный номер версии и убирает детали ОС/устройства, которые раньше считывались вообще без единого скрипта. Какие именно поля заморожены — см. в официальной документации Chrome по User-Agent Reduction, а о последствиях для обнаружения подмены — в нашем разборе того, что изменилось и почему. Детали, раньше сидевшие в пассивной строке UA, никуда не исчезли — они переехали за User-Agent Client Hints, opt-in API, который сайт должен явно запросить, а не получить автоматически. Это и есть общее направление инициативы Chrome Privacy Sandbox: относиться к поверхности фингерпринтинга как к тому, что нужно активно подавлять или прятать за разрешением, а не пассивно транслировать всем подряд. И снова: это направление Chromium, а не всего веба.
Firefox и Safari: заблокировать скрипт, унифицировать ответ
Ни Firefox, ни Safari не реализуют User-Agent Client Hints, и ни один из них не считает решением подход «пусть сайт сам попросит». Путь Mozilla — блокировать сборщика, а не переделывать сигнал: Enhanced Tracking Protection в Firefox по умолчанию блокирует скрипты из списка известных фингерпринтеров, а privacy.resistFingerprinting остаётся для тех, кому нужен более жёсткий приём Tor Browser — возвращать стандартизированные значения. Apple излагает свою позицию прямо в Tracking Prevention Policy для WebKit: этот документ относит фингерпринтинг к «отслеживанию без состояния», обязывает WebKit противодействовать любому скрытому отслеживанию и добавляет, что если технику нельзя предотвратить полностью, WebKit ограничит её, «уменьшая доступное количество бит энтропии» — тот самый подсчёт бит из раздела выше, возведённый в ранг политики вендора.
Практическое следствие: у вопроса «насколько я узнаваем?» нет единственного ответа, потому что ответ принадлежит конкретному браузеру, а не вам. Именно поэтому его нужно измерять, а не угадывать.
Как прочитать собственный отпечаток
Лучший способ понять степень своей уязвимости — взглянуть на собственный отпечаток. Проверка отпечатка от BrowserInsight выполняется полностью в вашем браузере — никакие данные отпечатка никогда не отправляются на сервер (поиск по IP выполняется отдельным инструментом) — и показывает вам:
- Хеш-значения вашего Canvas и WebGL и то, выглядят ли они распространёнными или редкими
- Полную строку вашего рендерера WebGL и GPU, который она раскрывает
- Обнаруженные характеристики аудиоотпечатка
- Полный набор заголовков и доступных через JavaScript атрибутов, которые может прочитать трекер
- Оценку анонимности, которая прикидывает, насколько уникальна ваша текущая конфигурация, с конкретными рекомендациями
Запустите проверку один раз в своём обычном браузере, а затем ещё раз — в приватном браузере или с включённым расширением, и сравните оценки. Это сравнение «до и после» — самый быстрый способ увидеть, какие меры защиты действительно меняют ситуацию для вашего устройства, ведь ответ различается от машины к машине. Структурированный, пошаговый способ провести такое сравнение — статья Согласованность отпечатка браузера: чек-лист самопроверки.
Как защитить цифровой отпечаток браузера
Ни один отдельный переключатель не делает вас анонимным, а доступные меры защиты следуют двум противоположным философиям: выглядеть как все (единообразие) или выглядеть каждый раз по-разному (рандомизация). Понимание того, какую из них использует тот или иной инструмент, помогает избежать их сочетания такими способами, которые дают обратный эффект.
1. Используйте браузеры с упором на приватность
Tor Browser придерживается подхода единообразия: он стандартизирует размер экрана, шрифты, вывод canvas и WebGL, так что все пользователи Tor выглядят почти одинаково: вас помещают внутрь большой одинаковой толпы, вместо того чтобы оставить заметным на её фоне. Brave использует подход рандомизации — его «фарблинг» (farbling) вносит крошечный шум в показания canvas, WebGL и аудио, причём с зерном, индивидуальным для каждого сайта и каждой сессии, так что каждый сайт видит своё значение, а сами значения меняются от одной сессии к другой. Firefox предлагает privacy.resistFingerprinting (RFP), который заимствует приёмы единообразия у Tor и по умолчанию включён в самом Tor Browser. Они снижают возможность создания отпечатка разными способами, но их объединяет ключевая черта — изменение высокоэнтропийных сигналов отрисовки, а именно там это важнее всего.
2. Используйте расширения для браузера
Несколько браузерных расширений помогают защититься от отслеживания по отпечатку:
- CanvasBlocker: блокирует или подменяет Canvas-отпечатки
- Privacy Badger: автоматически блокирует трекеры
- uBlock Origin: блокирует рекламу и отслеживающие скрипты
Однако будьте избирательны: расширения работают с широким доступом к каждой странице, которую вы посещаете, и неосторожное или вредоносное расширение само может стать вектором отслеживания. Прежде чем устанавливать что-то новое, ознакомьтесь со статьёй Риски приватности браузерных расширений.
3. Отключите JavaScript
Отключение JavaScript разом убирает все активные сигналы — canvas, WebGL, аудио и перебор шрифтов работают только через скрипт — ценой того, что значительная часть веба перестаёт работать. Расширения вроде NoScript позволяют включать его обратно для отдельных сайтов. Но обратите внимание, чего это не покрывает: пассивный слой остаётся нетронутым. Ваши HTTP-заголовки считываются ещё до выполнения первой строки скрипта, а один только CSS по-прежнему выдаёт настройки, характеристики железа и установленные шрифты. Отключение JavaScript уменьшает ваш отпечаток, но не стирает его.
4. Используйте отдельные виртуальные машины
Виртуальная машина меняет тот самый слой, из которого берутся самые сильные сигналы: другая гостевая ОС, другой стек драйверов GPU, другой набор шрифтов и геометрия экрана дают по-настоящему другой хеш canvas и другую строку рендерера WebGL, так что связать активность из разных ВМ намного сложнее.
С браузерными контейнерами и отдельными профилями браузера здесь часто возникает путаница: они изолируют хранилище — cookie, localStorage, данные сайтов, — и это действительно защищает от отслеживания на основе cookie, но с отпечатком не делают ничего. Ваши GPU, шрифты, экран и часовой пояс одинаковы в каждом контейнере, поэтому скрипт фингерпринтинга видит во всех них одно и то же устройство. Контейнеры годятся, чтобы разделять учётные записи, а не личности.
Парадокс защиты от фингерпринтинга
Здесь есть тонкость, которую стоит понимать: редкая или агрессивно настроенная мера защиты может сделать вас более узнаваемым, а не менее. Если вы единственный посетитель, использующий определённое расширение для подмены характеристик с необычным user-agent, именно это сочетание само становится отличительным отпечатком — тот же компромисс демонстрирует инструмент Cover Your Tracks от EFF, когда приватное расширение делает оценку уникальности хуже, а не лучше; о том, почему так происходит и что на самом деле измеряет эта оценка, читайте в статье Cover Your Tracks: что не доказывает оценка уникальности. Вот почему инструменты единообразия, такие как Tor и Firefox RFP, стараются поместить вас в большую одинаковую толпу, а не сделать экзотичным, — и почему нагромождение множества индивидуальных настроек чаще вредит, чем помогает. Как правило, отдавайте предпочтение проторённой конфигурации по умолчанию приватного браузера, а не самостоятельно собранному набору расширений. Антидетект-браузеры — инструменты, полностью подменяющие профиль отпечатка, — доводят этот парадокс до предела: сам паттерн подмены становится сигнатурой, как объяснено в статье Как сайты обнаруживают антидетект-браузеры и подмену отпечатков. Разбор конкретных сигналов — TLS, шум canvas, шрифты, UA-CH и другие, — по которым системы обнаружения отличают подделанный профиль от настоящего устройства, читайте в статье Антидетект-браузер vs настоящий браузер: 12 сигналов.
Законные сферы применения цифрового отпечатка браузера
Хотя цифровой отпечаток браузера часто используется для рекламного отслеживания, у него есть и законные применения:
| Сценарий использования | Описание |
|---|---|
| Безопасность | Обнаружение аномальных входов в аккаунт и предотвращение мошенничества |
| Защита от ботов | Выявление и блокировка автоматизированных программ |
| Оптимизация UX | Оптимизация отображения сайта на основе характеристик устройства |
| Защита авторских прав | Отслеживание источников утечки контента |
Случай с защитой от ботов — технически самый сложный из перечисленных: о том, как сайты отделяют автоматизированный трафик от реальных посетителей, нередко используя те же самые сигналы фингерпринтинга, читайте в статье Методы обнаружения ботов.
Часто задаваемые вопросы
Отпечаток браузера — это то же самое, что cookie?
Нет. Cookie — это небольшие файлы, хранящиеся на вашем устройстве, которые можно просмотреть, заблокировать или удалить. Отпечаток же выводится из характеристик вашего браузера и устройства — на вашей стороне ничего не хранится, поэтому очистка cookie или переход к новому профилю браузера его не сбрасывает. Именно это и делает фингерпринтинг труднее обойти, чем отслеживание на основе cookie. Отдельная техника, bounce tracking, обходит блокировку cookie иначе — с помощью редиректа домен трекера на мгновение становится first-party — и вообще не затрагивает характеристики вашего устройства. Ещё один способ обойтись без cookie прячется в самом HTTP-кеше: смотрите ETag и кеш-суперкуки о том, как сервер превращает обычную ревалидацию кеша в идентификатор для слежки.
Может ли инкогнито или приватный режим предотвратить фингерпринтинг?
В основном нет. Приватный режим не даёт браузеру сохранять историю, cookie и данные сайтов локально, но не меняет характеристики, из которых строится отпечаток: размер экрана, шрифты, результат отрисовки canvas и GPU выглядят в приватном окне точно так же. Сайты зачастую по-прежнему могут узнавать вас между обычными и приватными сессиями. Некоторые сайты способны даже определить сам факт, что вы находитесь в приватном окне, — о трюках со Storage API, которые за этим стоят, читайте в статье «Как сайты обнаруживают режим инкогнито и приватный просмотр».
Какая часть отпечатка браузера наиболее идентифицирующая?
Это зависит от случая, но сигналы отрисовки — canvas и WebGL — обычно труднее всего изменить, поскольку они исходят из вашего GPU и драйверов, а не из настройки, которую можно переключить. Именно поэтому они становятся наиболее ценными целями для защиты: блокировка или рандомизация вывода canvas и WebGL устраняет больше уникальности, чем подмена user-agent или часового пояса. BrowserInsight показывает, какие сигналы вносят наибольший вклад именно для вашего браузера, так что вы знаете, на что лучше всего направить усилия.
Останавливает ли VPN фингерпринтинг браузера?
Нет. VPN меняет ваш IP-адрес и видимое местоположение, но отпечаток вычисляется из вашего браузера и устройства, а не из сети — с любого IP вы выглядите одинаково. VPN действительно помогает с отдельными проблемами отслеживания по IP и утечек WebRTC, но ничего не делает с самим отпечатком. Ещё одна связанная, но отдельная техника, о которой стоит знать, — TLS-фингерпринтинг: он идентифицирует ваш клиент по TLS-рукопожатию, а не по браузерным API, и точно так же работает сквозь VPN-туннель.
Заключение
Цифровой отпечаток браузера — это мощная и незаметная техника отслеживания, построенная на характеристиках вашего браузера и устройства, а не на чём-либо хранящемся на нём. Понимание того, как это работает — и какие сигналы действительно решают дело, — первый шаг к тому, чтобы контролировать свою узнаваемость. Полная анонимность в интернете труднодостижима, но описанные выше меры защиты продвигают вас далеко вперёд — а понять, какая из них сработала, можно только измерением. Начните с бесплатной проверки отпечатка: она выполняется целиком в вашем браузере, ничего не отправляет на сервер и занимает несколько секунд.
Рекомендуем прочитать:
- resistFingerprinting: защита Firefox и Tor от фингерпринтинга
- Согласованность отпечатка: несовпадения сигналов вас выдают
- Фингерпринтинг мобильного браузера: как отслеживают Android и iOS
- Защита от утечек WebRTC: обязательно к прочтению для пользователей VPN
- Фингерпринтинг WebRTC: как кодеки и SDP выдают ваш браузер
- Обнаружение Canvas-отпечатка: как сайты идентифицируют ваше устройство
- Аудио-фингерпринтинг: как AudioContext опознаёт устройство
- Bounce Tracking: как редиректы следят за вами без cookie
- Фингерпринтинг по шрифтам: как шрифты выдают вас
- Фингерпринтинг по раскладке клавиатуры: сигнал getLayoutMap
- ClientRects-фингерпринтинг: вёрстка как идентификатор
- Фингерпринтинг медиаустройств: что раскрывает enumerateDevices
- Фингерпринтинг синтеза речи: установленные голоса как сигнал
- CSS-фингерпринтинг: отслеживание без JavaScript
- Фингерпринтинг Permissions API: состояния разрешений как ID
- Фингерпринтинг Network Information API: что раскрывают downlink и RTT
- Battery Status API: предостерегающая история о приватности

