Canvas Fingerprinting: как сайты отслеживают без cookies
Браузер и устройство

Canvas Fingerprinting: как сайты отслеживают без cookies

Canvas fingerprinting рисует скрытое изображение через HTML5 Canvas API и хеширует пиксели для идентификации устройства — без cookies, без хранения данных.

7 мин чтения·

Canvas fingerprinting — техника отслеживания в браузере, которая рисует невидимое изображение через HTML5 Canvas API и считывает пиксельные данные для создания уникального идентификатора устройства — без cookies, без хранения данных, без возможности удалить следы. Проверить, раскрывает ли ваш браузер canvas-отпечаток, можно прямо сейчас на whatsmy.fyi.

TL;DR

Canvas fingerprinting — метод слежки, при котором браузеру даётся команда нарисовать скрытое изображение, а затем считываются пиксельные данные для идентификации устройства. Работает это потому, что ваш GPU, операционная система и движок рендеринга шрифтов вносят крошечные, стабильные различия в способ отрисовки изображения — невидимые глазу, но уникальные для конкретного сочетания аппаратного и программного обеспечения.

Что такое Canvas Fingerprinting?

Canvas fingerprinting эксплуатирует HTML5 Canvas API— функцию, позволяющую браузерам рисовать графику прямо в окне браузера. Каждый современный браузер его поддерживает — что делает поверхность для отслеживания практически универсальной. Когда запускается скрипт снятия отпечатка, он создаёт элемент canvas за пределами экрана, полностью невидимый для вас, рисует на нём текст и фигуры, затем вызывает canvas.toDataURL(), чтобы считать пиксельные данные как строку Base64. Эта строка хешируется в компактный, стабильный отпечаток.

Мощь canvas fingerprinting в том, что пиксельный вывод непоследователен на разных устройствах. Одни и те же команды рисования дают незначительно разные результаты в зависимости от производителя GPU, версии графического драйвера, ОС, установленных шрифтов и настроек сглаживания. Два компьютера, которые выглядят одинаково — та же ОС, та же версия браузера — могут дать разный хеш canvas из-за различий в драйверах GPU. Инструмент Cover Your Tracks от Electronic Frontier Foundation стабильно ставит вывод canvas среди сигналов с наивысшей энтропией в инструментарии отпечатков браузера.

Canvas fingerprinting — один из компонентов более широкого семейства техник отпечатков браузера. В отличие от cookies, он не требует хранения данных на устройстве и абсолютно не зависит от очистки истории, включения режима инкогнито или смены сети.

Как работает Canvas Fingerprinting?

Процесс происходит в четыре шага, каждый занимает миллисекунды и полностью невидим для пользователя.

Шаг 1 — Рисование на Canvas

JavaScript-фрагмент создаёт внеэкранный элемент canvas и рисует сочетание текста, фигур и градиентов с использованием конкретных шрифтов, цветов и режимов наложения. Сложность рисунка важна: простые геометрические фигуры дают меньше вариаций; текст с тенями и градиентами — больше.

Шаг 2 — Рендеринг GPU и ОС

Браузер передаёт инструкции рисования в графический стек операционной системы. В Windows ClearType обрабатывает субпиксельный рендеринг шрифтов. В macOS Core Text применяет свой алгоритм хинтинга. В Linux FreeType рендерит по-другому. Ваш GPU обрабатывает сглаживание и интерполяцию цветов. Каждый уровень вносит стабильные, но устройство-специфичные вариации на уровне пикселей.

Шаг 3 — Извлечение пикселей

Скрипт вызывает canvas.toDataURL(), чтобы считать готовое изображение как PNG в кодировке Base64. Эта строка кодирует каждое значение пикселя — включая субпиксельные вариации, внесённые при рендеринге. Альтернативно скрипты могут использовать canvas.getImageData() для прямого доступа к буферу пикселей.

Шаг 4 — Хеширование

Строка Base64 или буфер пикселей хешируется — обычно с помощью MurmurHash или MD5 — для получения компактного, стабильного значения отпечатка. Этот хеш передаётся на сервер отслеживания и хранится как идентификатор устройства.

// Минимальный пример canvas fingerprinting
function getCanvasFingerprint() {
  const canvas = document.createElement('canvas');
  canvas.width = 280;
  canvas.height = 60;

  const ctx = canvas.getContext('2d');

  // Фон — смешивание цветов варьируется в зависимости от GPU
  ctx.fillStyle = 'rgb(255, 102, 0)';
  ctx.fillRect(10, 10, 100, 30);

  // Текст — рендеринг шрифтов варьируется в зависимости от ОС
  ctx.fillStyle = '#069';
  ctx.font = '18px Arial';
  ctx.fillText('Canvas fingerprint', 2, 45);

  // Тень — рендеринг теней варьируется в зависимости от драйвера
  ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
  ctx.shadowBlur = 6;
  ctx.shadowOffsetX = 2;
  ctx.shadowOffsetY = 3;

  // Возвращает строку Base64, слегка отличающуюся на разных устройствах
  return canvas.toDataURL();
}

Насколько уникален Canvas Fingerprint?

Canvas fingerprinting вносит значительную энтропию в общий отпечаток браузера. Результаты исследований варьируются в зависимости от набора данных и методологии, но направление последовательно: вывод canvas — высокоинформативный идентификатор, особенно в сочетании с другими атрибутами браузера.

НаходкаЗначениеИсточник
Энтропия canvas в изоляции8–10 битEFF Cover Your Tracks
Браузеры, уникально идентифицируемые только по canvas83,6%BrowserLeaks
Доля топ-20 000 сайтов, использующих canvas fingerprinting12,7%ACM Internet Measurement Conference, 2025
Реальная общая уникальность (8 млн отпечатков)33,6%Академическое полевое исследование, 2018
Уникальность canvas на мобильных устройствах62%ACM Internet Measurement Conference, 2025

Разрыв между лабораторными результатами (80–90% уникальности) и реальными данными (33,6%) объясняется тем, что многие популярные конфигурации дают идентичный вывод canvas. Например, все MacBook Pro с одной и той же версией macOS и Safari имеют одинаковый хеш canvas. Уникальность наибольшая на устройствах с необычными сочетаниями GPU и драйверов. На мобильных устройствах показатель выше из-за большей фрагментации аппаратного обеспечения.

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

Рекламные сети

Компании в сфере рекламных технологий используют canvas fingerprinting для отслеживания пользователей на разных сайтах — для поведенческого таргетинга и ограничения частоты показа. Метод стал особенно ценным после отказа от сторонних cookies в крупных браузерах — canvas fingerprinting выполняет ту же функцию идентификации без каких-либо cookies и без согласия пользователя в большинстве текущих реализаций.

Платформы обнаружения мошенничества

Компании по безопасности, такие как Fingerprint (ранее FingerprintJS), используют canvas fingerprinting для обнаружения захвата аккаунтов, подбора паролей и активности ботов. Если canvas fingerprint устройства не совпадает с записанным для аккаунта, это запускает сигнал риска для проверки.

Ограничения доступа к платному контенту

Новостные издания и сервисы подписки используют canvas fingerprinting для применения лимитов на статьи у пользователей, которые очищают cookies для сброса счётчика доступа. Поскольку отпечаток получается из аппаратного обеспечения, а не из хранимых данных, он сохраняется при удалении cookies и в режиме инкогнито.

Законно ли Canvas Fingerprinting?

По GDPR в Европе canvas fingerprinting представляет собой обработку персональных данных, если полученный хеш можно разумно связать с физическим лицом. Французский регулятор в области защиты данных (CNIL) явно назвал отпечатки браузера требующими информированного согласия, если только не применяется узкое исключение на основе законного интереса. По российскому Федеральному закону № 152-ФЗ «О персональных данных» подобные идентификаторы устройств также могут считаться персональными данными. По CCPA и CPRA США данные отпечатков считаются личной информацией, подлежащей праву отказа.

Как защититься от Canvas Fingerprinting?

Полная защита затруднена — эффективные методы защиты предполагают компромиссы в совместимости с сайтами. Варианты ранжированы от наиболее сильных до наиболее практичных для ежедневного использования:

  • Tor Browser (наиболее сильная защита): Tor нормализует вывод canvas так, что каждый пользователь Tor возвращает идентичный хеш canvas, делая индивидуальную идентификацию невозможной.
  • Brave Browser (рекомендуется для ежедневного использования): Brave использует технику Farbling — вводит небольшое рандомизированное значение шума в пиксельный вывод canvas за каждую сессию. Ваш отпечаток меняется при каждой сессии и для каждого сайта.
  • Firefox с privacy.resistFingerprinting: Установка этого флага в true в about:config заставляет Firefox возвращать единообразный вывод canvas, аналогичный Tor Browser.
  • Расширение CanvasBlocker (Firefox и Chrome): Перехватывает вызовы canvas.toDataURL() и getImageData(), блокируя их или возвращая рандомизированные данные.
  • Используйте VPN, но понимайте его ограничения: VPN маскирует IP-адрес, но не влияет на вывод canvas. Проверьте работу VPN на whatsmy.fyi.

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

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

Да. Режим инкогнито предотвращает сохранение истории, cookies и данных форм на диске — но не меняет ваш GPU, графический драйвер или движок рендеринга шрифтов ОС. Ваш canvas fingerprint идентичен в режиме инкогнито и в обычном окне. Только браузеры с активной рандомизацией отпечатков, такие как Brave или Tor Browser, ведут себя иначе.

Может ли VPN предотвратить canvas fingerprinting?

Нет. VPN меняет ваш видимый IP-адрес и направляет трафик через зашифрованный туннель, но не затрагивает стек рендеринга браузера. Canvas fingerprinting считывает данные рендеринга на уровне GPU и ОС, на которые никак не влияет то, через какой сервер проходит ваш трафик. Для защиты от canvas fingerprinting используйте Brave, Firefox с privacy.resistFingerprinting или Tor Browser.

Является ли canvas fingerprinting тем же, что и отслеживание через cookies?

Нет. Отслеживание через cookies хранит файл идентификатора на вашем устройстве, который можно просмотреть, удалить или заблокировать. Canvas fingerprinting ничего не хранит — он восстанавливает идентификатор из аппаратных и программных характеристик вашего устройства при каждом посещении.

Остановит ли отключение JavaScript canvas fingerprinting?

Да — canvas fingerprinting требует JavaScript для работы. Если вы полностью отключите JavaScript, скрипт отпечатка не выполнится. Однако отключение JavaScript ломает большинство современных сайтов. Более практичный подход — использование Farbling в Brave или расширения CanvasBlocker.

Чем canvas fingerprinting отличается от WebGL fingerprinting?

Оба эксплуатируют графический конвейер рендеринга браузера, но нацелены на разные API. Canvas fingerprinting использует 2D Canvas API и чувствителен к рендерингу шрифтов и субпиксельным различиям текста. WebGL fingerprinting использует 3D графический API и напрямую раскрывает производителя GPU, модель и версию драйвера. Подробнее в руководстве по WebGL fingerprinting.

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

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

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

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

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

Canvas Fingerprinting: как сайты отслеживают без cookies | whatsmy.fyi