Що таке шрифтовий відбиток: як сайти розпізнають браузерне середовище за списком шрифтів
Змінили середовище, змінили проксі, а верстка все одно гуляє дрібними відмінностями: на тому самому сайті текст кнопки в цьому середовищі на два пікселі ширший, ніж у тому. Частина цих відмінностей лежить на шрифтах: що саме встановлено на машині, сторінка вивідує кількома перевірками, і список шрифтів стає однією з груп параметрів відбитка браузера. У цій статті три питання: як сайти тестують шрифти, наскільки можна вірити результату та який режим списку шрифтів (справжній, випадковий, власний) коли пасує. Щодо місця шрифтів у загальному відбитку: 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 безпечнішу, розумнішу та ефективнішу роботу з кількома обліковими записами.
- Незалежні профілі. Узгоджені ідентичності.
- ШІ-автоматизація · Стан облікових записів · Командні операції



