Что такое шрифтовый отпечаток: как сайты узнают окружение браузера по списку шрифтов
Сменили окружение, сменили прокси, а вёрстка всё равно играет мелкими отличиями: на одном и том же сайте текст кнопки в этом окружении на два пикселя шире, чем в том. Шрифты относятся к таким источникам отличий напрямую: какие шрифты установлены на машине, страница выуживает за несколько проверок, и список шрифтов становится одной из групп параметров отпечатка браузера. В этой статье три вопроса: как сайты тестируют шрифты, насколько можно доверять результату и какой из трёх режимов списка шрифтов (реальный, случайный, свой) для какой ситуации годится. Что до места шрифтов в общей картине отпечатка, MostMate в настройках отпечатков относит их к базовым параметрам, а целостная картина продукта в статье Что такое MostMate.
Что такое шрифтовый отпечаток: сайт угадывает, какие шрифты у вас установлены
Шрифтовый отпечаток не пересылает ваши файлы шрифтов на сервер; сайт серией тестов выясняет, способна ли машина показать тот или иной шрифт. Заводской набор операционной системы пополняют пользователь и программы: офисный пакет добавляет целую пачку, а Windows с китайской локализацией привозит ещё и SimSun с Microsoft YaHei. Наборы шрифтов двух машин почти наверняка различаются, и в этом различии уже содержится информация. Ещё в исследовании слежки 2010 года EFF включила шрифты в число идентифицирующих параметров, и с тех пор такие проверки живут на крупных сайтах.
С другими параметрами отпечатка его роднит скорость перемен: Canvas и WebGL заданы железом и движком рендеринга и обычно двигаются раз в несколько месяцев; список же шрифтов ходит следом за установками софта. Быстро меняющийся параметр и выдаёт себя так же быстро: одной установки программы хватает, чтобы список отошёл от прежнего вида.
Как сайты тестируют шрифты: три метода, и каждый отвечает только на вопрос «есть или нет»
Прочитать системный перечень шрифтов напрямую сайт не в состоянии, поэтому остаётся только косвенный вывод. Чаще всего встречаются три метода:
- Метод замера ширины. На страницу помещают фрагмент фиксированного текста, сначала измеряют его ширину с запасным шрифтом (например monospace), затем с целевым. Ширины совпали, значит целевого шрифта нет; разошлись, значит он есть. Прогнав таким образом сотни распространённых имён, скрипт собирает перечень «есть/нет».
- Сравнение рендеринга в Canvas. Одну и ту же надпись рисуют в Canvas разными шрифтами и сравнивают попиксельно; заодно наружу выходят и различия самого движка рендеринга.
- Font Loading API. Современные браузеры предоставляют интерфейс вида document.fonts.check('12px "Segoe UI"'), который напрямую отвечает, доступен ли шрифт. Проще, чем мерить ширину.

Все три метода отвечают на один вопрос: «работает ли это имя шрифта на данной машине», сам файл шрифта они не видят; на практике их комбинируют, замер ширины тянет основную нагрузку, Canvas подключают для перепроверки. Детали интерфейса смотрите в документации Document.fonts на MDN, полный перечень тестовых имён и логику вердикта можно изучить в исходном коде проверки шрифтов FingerprintJS.
Результат проверки изначально неполон: вы получаете не весь список
Этот раздел начинается с поправки на частое заблуждение. Сайт не видит всех установленных вами шрифтов, а только те, что есть в его собственном перечне, и результат на деле является пересечением «распространённые шрифты ∩ ваша машина».
Следствий два. Первое: две машины с разными наборами шрифтов могут получить одинаковый ответ. На первой стоят шрифты A и B, на второй A и C, проверяют лишь A и D, и обе получают «A есть, D нет» с совпадающим хешем. Совпадение шрифтового отпечатка не доказывает совпадения устройств, оно подтверждает согласованность лишь в пределах проверяемого перечня.
Второе: всё за пределами перечня остаётся полностью невидимым. Дизайнерская рабочая станция с тремя сотнями шрифтов и чистая базовая установка системы дадут одинаковый результат, если проверка покрывает 150 ходовых шрифтов: лишние 150 просто не попадут в поле зрения.
Для ведения множества аккаунтов неполнота результата работает в обе стороны. Одного шрифта мало, чтобы привязать личность, но риск-контроль сверяет шрифты с прочими сигналами, и стоит списку разойтись с операционной системой или языковыми настройками, как он превращается в заметную аномалию. Число шрифтов и хеш, которые показывают проверочные сервисы, читайте по правилу «в одном окружении стабильно, между окружениями различно», гнаться за конкретной цифрой незачем.
Что формирует ваш список шрифтов
Набор шрифтов складывается из четырёх слоёв, и каждый способен развести две «внешне одинаковые» машины:
- Операционная система и её версия. Заводские наборы Windows, macOS и Linux различаются; внутри одной Windows 10 и 11 тоже не совпадают. На этом держится взаимная сверка списка шрифтов с платформой, заявленной в User-Agent.
- Системный язык и регион. Windows с китайской локализацией несёт SimSun и Microsoft YaHei, на большинстве машин Европы и Америки их нет; с японскими и корейскими системами та же история. Список шрифтов зачастую первым выдаёт настоящий региональный фон окружения.
- Шрифты из прикладного софта. Office, Adobe и WPS привозят собственные наборы, поэтому у дизайнерской машины и машины, где живёт один браузер, коллекции шрифтов расходятся радикально.
- Правила подстановки браузерного движка. Одно и то же имя шрифта Chromium и Firefox заменяют разными запасными вариантами, и замеренная ширина выходит разной; сменилась версия ядра окружения, и детали результата могут сдвинуться.

Наложение четырёх слоёв объясняет частую картину: окружение с выверенными IP, часовым поясом и языком всё равно носит в списке шрифтов «родные» следы. Заявлены английский язык и США, а в шрифтах покоится Microsoft YaHei. При перекрёстной проверке такой разнобой говорит больше, чем аномалия любого отдельного параметра.
Как оценить согласованность: три критерия и самопроверка в три шага
В управлении окружениями шрифтовый параметр должен пройти три проверки:
- Стабильность внутри окружения. При повторных проверках одного окружения число шрифтов и хеш не меняются; пока окружением пользуетесь, не ставьте софт и не удаляйте шрифты между делом.
- Различия между окружениями. Окружения, заявленные из разных регионов, должны показывать заметно разные списки; если «американец» и «немец» выдают идентичный шрифтовый хеш, это подозрительный сигнал.
- Сходство с заявленными данными. Шрифты от macOS в окружении Windows или целый ряд китайских шрифтов в англоязычном окружении бросаются в глаза. Риски рандомизации параметров отдельно разобраны в статье Почему рандомизация отпечатка наоборот опасна; шрифты здесь самый наглядный случай, потому что случайно собранная комбинация шрифтов в реальном мире почти не встречается.
Самопроверка в три шага: откройте страницу результатов в BrowserScan или Iphey, найдите пункт Fonts и запишите значение; обновите страницу в том же окружении два-три раза и убедитесь, что числа не прыгают; запустите второе окружение с той же проверкой и сравните, соответствуют ли различия заявленным ролям каждого.

Как выбрать один из трёх режимов списка шрифтов MostMate
В настройках отпечатка MostMate список шрифтов даётся в трёх режимах: реальный, случайный и свой, под три состояния работы:
- Реальный: окружение берёт текущий список шрифтов хост-машины, и результат проверки совпадает с обычным запуском браузера. Подходит, когда хост-машина чистая, а роль совпадает с регионом её системы, скажем английская Windows и американское окружение.
- Случайный: окружение собирает комбинацию шрифтов само; важно, чтобы алгоритм набирал её в пределах операционной системы и языка, а набор оставался правдоподобным для данной роли. Вариант для массового создания окружений, когда детали шрифтов сверять поштучно незачем.
- Свой: список шрифтов отмечается вручную. Выбор для окружений под строгим риск-контролем платформ или с большой дистанцией между ролью и хост-машиной: достройте набор под заявленную систему и при настройке пройдитесь по трём критериям из предыдущего раздела.
Все три режима находятся в разделе настроек отпечатка в форме создания окружения; после настройки проверьте текущее значение в поле «Список шрифтов» панели предпросмотра отпечатка и прогоните контрольную проверку ещё раз. Полный порядок настройки в статье Как начать работать с MostMate.
Заключение
Суть шрифтового отпечатка в том, что сайт по ограниченному проверочному перечню выводит набор шрифтов машины: полный список недостижим, зато при перекрёстной сверке его хватает, чтобы вскрыть несостыковки. В управлении держите в фокусе три вещи: стабильность внутри окружения, разведение окружений между собой и соответствие списка шрифтов заявленной системе и региону. Хотите пройти весь путь с нуля, начните с того, чтобы скачать MostMate; логику согласованности остальных параметров отпечатка по большей части можно найти в статье Четыре принципа проектирования MostMate.
FAQ
Может ли шрифтовый отпечаток сам по себе опознать устройство?
Нет. Результат ограничен проверочным перечнем, и две машины с разными шрифтами могут показать одно и то же. Риск-контроль обычно сверяет шрифты вместе с User-Agent, Canvas, языком и прочими параметрами; сами по себе шрифты основанием для идентификации не служат.
Одинаков ли шрифтовый отпечаток в разных браузерах?
При одинаковом наборе шрифтов картина в целом совпадает, но у разных движков свои правила подстановки и детали рендеринга, поэтому численные значения ширины расходятся. Chrome и Firefox на одной машине нередко дают отличия в мелочах; это разница движков.
Чем больше шрифтов установлено, тем легче опознать машину?
Дополнительные шрифты видны, только если попали в проверочный перечень. Само по себе количество влияет слабо; исключение составляют редкие шрифты: нишевый дизайнерский шрифт, попав в проверку, делает такой список статистически необычным.
Помогает ли очистка Cookie убрать шрифтовый отпечаток?
Нет. Список шрифтов берётся из установок на самой машине и к хранилищу сайта отношения не имеет, поэтому чистка Cookie и кеша на него не влияет; чтобы его изменить, нужно менять шрифтовую конфигурацию на уровне окружения.
MOSTMATE
Безопасное управление аккаунтами — это просто
Начните с первого аккаунта и выстройте с MostMate более безопасную, умную и эффективную работу с несколькими аккаунтами.
- Независимые профили. Согласованные цифровые идентичности.
- ИИ-автоматизация · Состояние аккаунтов · Командная работа



