Фингерпринт шрифтов — техника отслеживания в браузере, которая незаметно считывает список шрифтов, установленных на вашем устройстве, с помощью JavaScript — без cookies, без хранения данных, без возможности удалить следы. Ваша комбинация установленных шрифтов удивительно уникальна, и сайты используют её для идентификации вас между сессиями и на разных сайтах. Посмотрите, какие сигналы раскрывает ваш браузер прямо сейчас на whatsmy.fyi.
TL;DR
Фингерпринт шрифтов работает путём измерения того, как ваш браузер рендерит текст в сотнях различных шрифтов. Если шрифт установлен, текст рендерится с определённой шириной; если нет — браузер возвращается к шрифту по умолчанию с другими размерами. Зондируя 300–700 названий шрифтов за миллисекунды, скрипт может составить детальную карту установленных шрифтов — комбинацию настолько характерную, что она может добавить 10–15 бит энтропии к отпечатку.
Что такое фингерпринт шрифтов?
Фингерпринт шрифтов эксплуатирует тот факт, что каждое устройство поставляется с разным набором шрифтов. Шрифты зависят от вашей ОС, установленных приложений, добавления пользовательских шрифтов и системного языка. Свежая установка macOS поставляется со встроенными гарнитурами Apple. На машине с Windows — свой набор. Пользователь Linux с дизайнерским пакетом может иметь сотни дополнительных шрифтов. Каждая комбинация фактически является отпечатком.
В отличие от cookies, фингерпринт шрифтов не оставляет ничего на устройстве. Он не пишет в локальное хранилище, не устанавливает трекер и не запрашивает разрешение. Он просто считывает данные, уже доступные через стандартные API рендеринга шрифтов браузера. Инструмент Cover Your Tracks от EFF стабильно определяет перечисление шрифтов как значимый вклад в энтропию общего отпечатка браузера.
Как работает фингерпринт шрифтов?
На практике используются два различных технических метода. Оба достигают одной цели — обнаружить, какие шрифты присутствуют — но через разные API браузера.
Метод 1 — Измерение текста CSS (measureText)
Наиболее распространённый подход использует метод measureText() Canvas API для измерения пиксельной ширины строки, отрендеренной в конкретном шрифте. Скрипт рендерит одну и ту же строку трижды: в известном резервном шрифте, в serif и в запрашиваемом шрифте. Если ширина запрошенного шрифта точно совпадает с резервным, шрифт не установлен. Если ширина отличается — шрифт присутствует.
Метод 2 — Пиксельный рендеринг Canvas
Более точный вариант рисует текст на скрытом элементе canvas в целевом шрифте, извлекает пиксельные данные с помощью canvas.toDataURL() и сравнивает пиксельный вывод с выводом известного резервного шрифта. Этот метод сложнее подделать, поскольку фиксирует тонкие различия рендеринга.
// Упрощённый фингерпринт шрифтов через measureText
function detectInstalledFonts(fontList) {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
const testString = 'mmmmmmmmmmlli';
const baseFonts = ['monospace', 'sans-serif', 'serif'];
const testSize = '72px';
const baseWidths = {};
for (const base of baseFonts) {
ctx.font = `${testSize} ${base}`;
baseWidths[base] = ctx.measureText(testString).width;
}
const detected = [];
for (const font of fontList) {
for (const base of baseFonts) {
ctx.font = `${testSize} '${font}', ${base}`;
const width = ctx.measureText(testString).width;
if (width !== baseWidths[base]) {
detected.push(font);
break;
}
}
}
return detected; // Массив установленных шрифтов
}Насколько уникален фингерпринт шрифтов?
| Находка | Значение | Источник |
|---|---|---|
| Энтропия только от списка шрифтов | 10–15 бит | Исследование EFF Panopticlick |
| Среднее количество установленных шрифтов на ПК | 50–200 | BrowserLeaks / полевые исследования |
| Шрифтов, проверяемых типичным скриптом fingerprinting | 300–700 | BrowserLeaks Font Test |
| Время полного сканирования шрифтов | < 100 мс | BrowserScan / полевые измерения |
| Сайты из топ-10 000, использующие обнаружение шрифтов | ~38% | Browser Fingerprinting Survey (arXiv) |
| Пользователи, уникально идентифицированные по шрифтам + 4 другим сигналам | > 99% | Коммерческие платформы fingerprinting |
Кто использует фингерпринт шрифтов в реальной жизни?
Рекламные сети и межсайтовое отслеживание
Платформы рекламных технологий встраивают скрипты обнаружения шрифтов в сторонние рекламные теги и пиксели отслеживания. По мере отказа от сторонних cookies в Chrome, Safari и Firefox фингерпринт шрифтов стал более важным стабильным идентификатором между сессиями.
Обнаружение мошенничества и оценка рисков
Платформы безопасности используют фингерпринты шрифтов для обнаружения захватов аккаунтов. Если список шрифтов возвращающегося пользователя резко отличается от сохранённого профиля — например, потому что злоумышленник использует свежую виртуальную машину с минимальным набором шрифтов — это поднимает сигнал риска.
Законно ли это?
По GDPR фингерпринт шрифтов является обработкой персональных данных. CNIL Франции явно классифицировал fingerprinting браузера — включая перечисление шрифтов — как требующий информированного согласия. По российскому Федеральному закону № 152-ФЗ подобные идентификаторы также могут требовать согласия.
Как защититься от фингерпринта шрифтов?
- Tor Browser (наиболее сильная защита): Tor ограничивает страницы фиксированным набором шрифтов, поставляемых с браузером. Каждый пользователь Tor представляет идентичный список шрифтов.
- Brave Browser (рекомендуется для ежедневного использования): Brave рандомизирует список шрифтов, возвращая перемешанное и обрезанное подмножество, которое меняется для каждого сайта и сессии.
- Firefox с
privacy.resistFingerprinting: Firefox ограничивает доступ к шрифтам стандартным набором ОС — пользовательские и установленные приложениями шрифты скрыты. - Избегайте установки необычных шрифтов: Каждый дополнительный нестандартный шрифт увеличивает уникальность вашего фингерпринта шрифтов. Дизайнеры и типографы особенно уязвимы.
- VPN — но понимайте его ограничения: VPN не влияет на список шрифтов браузера. Проверьте работу VPN на whatsmy.fyi.
Часто задаваемые вопросы
Работает ли фингерпринт шрифтов в режиме инкогнито?
Да. Режим инкогнито предотвращает сохранение истории, cookies и данных сессии — но не меняет установленные шрифты. Фингерпринт шрифтов идентичен в приватном окне и обычном.
Сколько шрифтов проверяет скрипт fingerprinting?
Типичные скрипты проверяют от 300 до 700 названий шрифтов. Список включает системные шрифты (Arial, Times New Roman), шрифты, специфичные для ОС (San Francisco в macOS, Segoe UI в Windows), шрифты от Adobe Creative Cloud, Microsoft Office, а также шрифты для русского, китайского, арабского и других языков. Яндекс Браузер, как и другие браузеры, может иметь специфические системные шрифты.
Удаляет ли очистка cookies мой фингерпринт шрифтов?
Нет. Фингерпринт шрифтов получается из реестра шрифтов ОС, а не из данных, хранимых в браузере. Очистка cookies, удаление локального хранилища или переустановка браузера не влияет на список шрифтов.
Связанные статьи
- Что такое отпечаток браузера? Как сайты отслеживают вас без cookies — полное руководство по всем сигналам отпечатков
- Что такое Canvas Fingerprinting? Как сайты отслеживают без cookies — как HTML5 Canvas API создаёт уникальный идентификатор
- Что такое аудио fingerprinting? Как AudioContext отслеживает браузер — как аудиостек вашего устройства создаёт стабильный идентификатор
- Язык браузера используется для слежки: как это работает — как
Accept-Languageиnavigator.languagesраскрывают вашу идентичность



