← Назад в блог

Что такое шрифтовый отпечаток: как сайты узнают окружение браузера по списку шрифтов

Сменили окружение, сменили прокси, а вёрстка всё равно играет мелкими отличиями: на одном и том же сайте текст кнопки в этом окружении на два пикселя шире, чем в том. Шрифты относятся к таким источникам отличий напрямую: какие шрифты установлены на машине, страница выуживает за несколько проверок, и список шрифтов становится одной из групп параметров отпечатка браузера. В этой статье три вопроса: как сайты тестируют шрифты, насколько можно доверять результату и какой из трёх режимов списка шрифтов (реальный, случайный, свой) для какой ситуации годится. Что до места шрифтов в общей картине отпечатка, MostMate в настройках отпечатков относит их к базовым параметрам, а целостная картина продукта в статье Что такое MostMate.

Что такое шрифтовый отпечаток: сайт угадывает, какие шрифты у вас установлены

Шрифтовый отпечаток не пересылает ваши файлы шрифтов на сервер; сайт серией тестов выясняет, способна ли машина показать тот или иной шрифт. Заводской набор операционной системы пополняют пользователь и программы: офисный пакет добавляет целую пачку, а Windows с китайской локализацией привозит ещё и SimSun с Microsoft YaHei. Наборы шрифтов двух машин почти наверняка различаются, и в этом различии уже содержится информация. Ещё в исследовании слежки 2010 года EFF включила шрифты в число идентифицирующих параметров, и с тех пор такие проверки живут на крупных сайтах.

С другими параметрами отпечатка его роднит скорость перемен: Canvas и WebGL заданы железом и движком рендеринга и обычно двигаются раз в несколько месяцев; список же шрифтов ходит следом за установками софта. Быстро меняющийся параметр и выдаёт себя так же быстро: одной установки программы хватает, чтобы список отошёл от прежнего вида.

Как сайты тестируют шрифты: три метода, и каждый отвечает только на вопрос «есть или нет»

Прочитать системный перечень шрифтов напрямую сайт не в состоянии, поэтому остаётся только косвенный вывод. Чаще всего встречаются три метода:

  1. Метод замера ширины. На страницу помещают фрагмент фиксированного текста, сначала измеряют его ширину с запасным шрифтом (например monospace), затем с целевым. Ширины совпали, значит целевого шрифта нет; разошлись, значит он есть. Прогнав таким образом сотни распространённых имён, скрипт собирает перечень «есть/нет».
  2. Сравнение рендеринга в Canvas. Одну и ту же надпись рисуют в Canvas разными шрифтами и сравнивают попиксельно; заодно наружу выходят и различия самого движка рендеринга.
  3. 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. При перекрёстной проверке такой разнобой говорит больше, чем аномалия любого отдельного параметра.

Как оценить согласованность: три критерия и самопроверка в три шага

В управлении окружениями шрифтовый параметр должен пройти три проверки:

  1. Стабильность внутри окружения. При повторных проверках одного окружения число шрифтов и хеш не меняются; пока окружением пользуетесь, не ставьте софт и не удаляйте шрифты между делом.
  2. Различия между окружениями. Окружения, заявленные из разных регионов, должны показывать заметно разные списки; если «американец» и «немец» выдают идентичный шрифтовый хеш, это подозрительный сигнал.
  3. Сходство с заявленными данными. Шрифты от macOS в окружении Windows или целый ряд китайских шрифтов в англоязычном окружении бросаются в глаза. Риски рандомизации параметров отдельно разобраны в статье Почему рандомизация отпечатка наоборот опасна; шрифты здесь самый наглядный случай, потому что случайно собранная комбинация шрифтов в реальном мире почти не встречается.

Самопроверка в три шага: откройте страницу результатов в BrowserScan или Iphey, найдите пункт Fonts и запишите значение; обновите страницу в том же окружении два-три раза и убедитесь, что числа не прыгают; запустите второе окружение с той же проверкой и сравните, соответствуют ли различия заявленным ролям каждого.

Шрифты на странице результатов BrowserScan

Как выбрать один из трёх режимов списка шрифтов MostMate

В настройках отпечатка MostMate список шрифтов даётся в трёх режимах: реальный, случайный и свой, под три состояния работы:

  • Реальный: окружение берёт текущий список шрифтов хост-машины, и результат проверки совпадает с обычным запуском браузера. Подходит, когда хост-машина чистая, а роль совпадает с регионом её системы, скажем английская Windows и американское окружение.
  • Случайный: окружение собирает комбинацию шрифтов само; важно, чтобы алгоритм набирал её в пределах операционной системы и языка, а набор оставался правдоподобным для данной роли. Вариант для массового создания окружений, когда детали шрифтов сверять поштучно незачем.
  • Свой: список шрифтов отмечается вручную. Выбор для окружений под строгим риск-контролем платформ или с большой дистанцией между ролью и хост-машиной: достройте набор под заявленную систему и при настройке пройдитесь по трём критериям из предыдущего раздела.

Все три режима находятся в разделе настроек отпечатка в форме создания окружения; после настройки проверьте текущее значение в поле «Список шрифтов» панели предпросмотра отпечатка и прогоните контрольную проверку ещё раз. Полный порядок настройки в статье Как начать работать с MostMate.

Заключение

Суть шрифтового отпечатка в том, что сайт по ограниченному проверочному перечню выводит набор шрифтов машины: полный список недостижим, зато при перекрёстной сверке его хватает, чтобы вскрыть несостыковки. В управлении держите в фокусе три вещи: стабильность внутри окружения, разведение окружений между собой и соответствие списка шрифтов заявленной системе и региону. Хотите пройти весь путь с нуля, начните с того, чтобы скачать MostMate; логику согласованности остальных параметров отпечатка по большей части можно найти в статье Четыре принципа проектирования MostMate.

FAQ

Может ли шрифтовый отпечаток сам по себе опознать устройство?

Нет. Результат ограничен проверочным перечнем, и две машины с разными шрифтами могут показать одно и то же. Риск-контроль обычно сверяет шрифты вместе с User-Agent, Canvas, языком и прочими параметрами; сами по себе шрифты основанием для идентификации не служат.

Одинаков ли шрифтовый отпечаток в разных браузерах?

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

Чем больше шрифтов установлено, тем легче опознать машину?

Дополнительные шрифты видны, только если попали в проверочный перечень. Само по себе количество влияет слабо; исключение составляют редкие шрифты: нишевый дизайнерский шрифт, попав в проверку, делает такой список статистически необычным.

Помогает ли очистка Cookie убрать шрифтовый отпечаток?

Нет. Список шрифтов берётся из установок на самой машине и к хранилищу сайта отношения не имеет, поэтому чистка Cookie и кеша на него не влияет; чтобы его изменить, нужно менять шрифтовую конфигурацию на уровне окружения.

MOSTMATE

Безопасное управление аккаунтами — это просто

Начните с первого аккаунта и выстройте с MostMate более безопасную, умную и эффективную работу с несколькими аккаунтами.

  • Независимые профили. Согласованные цифровые идентичности.
  • ИИ-автоматизация · Состояние аккаунтов · Командная работа
Скачать MostMate