← Назад до блогу

Що таке шрифтовий відбиток: як сайти розпізнають браузерне середовище за списком шрифтів

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