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 |
| Браузеры, уникально идентифицируемые только по canvas | 83,6% | BrowserLeaks |
| Доля топ-20 000 сайтов, использующих canvas fingerprinting | 12,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.
Связанные статьи
- Что такое отпечаток браузера? Как сайты отслеживают вас без cookies — полное руководство по всем сигналам отпечатков в совокупности
- Что такое WebGL fingerprinting? Как ваш GPU идентифицирует браузер — как 3D graphics API раскрывает производителя GPU и версию драйвера
- Что такое аудио fingerprinting? Как AudioContext отслеживает браузер — как аудиостек вашего устройства создаёт уникальный идентификатор
- Что такое фингерпринт шрифтов? Как установленные шрифты отслеживают вас — как установленные шрифты вносят вклад в отпечаток браузера



