Canvas Font Fallback Chain as a Unique Identifier: почему отсутствие шрифта выдаёт ОС

BadB

Professional
Messages
2,415
Reaction score
2,362
Points
113
Как последовательность замены отсутствующих шрифтов создаёт уникальный отпечаток Windows vs macOS vs Linux

Введение: Отсутствие, которое говорит всё​

Вы тщательно настроили список шрифтов в Dolphin Anty. Установили только системные: Arial, Times New Roman, Calibri.
Вы уверены: «Теперь мой профиль идеален».

Но вас мгновенно блокируют.
Причина? Не наличие шрифтов — а их отсутствие.

Когда сайт запрашивает несуществующий шрифт (например, NonExistentFont), браузер запускает цепочку замены (fallback chain)— и именно эта цепочка уникальна для каждой ОС:
  • Windows: NonExistentFont → Arial → sans-serif,
  • macOS: NonExistentFont → Helvetica → system-ui,
  • Linux: NonExistentFont → DejaVu Sans → sans-serif.

Эта цепочка — невидимый отпечаток, который невозможно подделать без изменения ОС.

В этой статье мы проведём глубокий технический разбор того, как работает Font Fallback Chain, почему он выдаёт ОС, и как даже пустой шрифт может раскрыть ваше железо.

Часть 1: Что такое Font Fallback Chain?​

📜 Техническое определение​

Font Fallback Chain — это последовательность шрифтов, которые браузер использует для отображения текста, если запрошенный шрифт отсутствует.

Пример CSS:
CSS:
font-family: "NonExistentFont", "Arial", sans-serif;

Если NonExistentFont не найден, браузер:
  1. Проверяет Arial,
  2. Если нет — использует системный шрифт по умолчанию (sans-serif),
  3. Этот выбор зависит от ОС и её настроек.

💡 Ключевой факт:
Цепочка замены жёстко закодирована в ОС — и не может быть изменена на уровне браузера.

Часть 2: Уникальные цепочки по ОС​

🖥️ Таблица fallback-цепочек (2026)​

ОСЗапросFallback Chain
Windows 10/11"FakeFont", serifFakeFont → Times New Roman → serif
macOS Sonoma"FakeFont", serifFakeFont → Times → "Times New Roman" → serif
Linux (Ubuntu)"FakeFont", serifFakeFont → DejaVu Serif → Liberation Serif → serif

💀 Пример аномалии:
Вы заявляете Windows 10, но fallback = DejaVu Serif → система видит: «Это Linux»fraud score = 95+.

Часть 3: Как сайты измеряют Fallback Chain​

🔍 Метод анализа через Canvas​

Шаг 1: Рендеринг с несуществующим шрифтом
js:
Code:
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');

// Запрос несуществующего шрифта
ctx.font = '16px "NonExistentFont", Arial, sans-serif';
ctx.fillText('mmmmmmmmmm', 10, 50);

Шаг 2: Сравнение с эталонными метриками
  • Сайт заранее знает:
    • Ширина mmmmmmmmmm в Arial = 84.2 px,
    • Ширина в DejaVu Sans = 78.5 px.
  • Измеряя фактическую ширину, система определяет реальный шрифт.

Шаг 3: Построение профиля
  • Комбинация замен для 5–10 несуществующих шрифтов даёт энтропию 18–22 бита.

📈 Точность идентификации ОС по fallback chain: 96% (по данным Forter, Q1 2026).

Часть 4: Почему антидетект-браузеры не спасают​

⚠️ Три причины​

1. Цепочка определяется на уровне ОС
  • Даже если вы удалите все шрифты из Windows,
  • Система всё равно использует встроенные резервные шрифты.

2. Невозможно подделать через CSS
  • Подмена font-family в CSS не влияет на реальный рендеринг,
  • Canvas всегда использует физическую цепочку ОС.

3. Измерение через TextMetrics
  • API measureText() возвращает реальные метрики,
  • Никакие настройки в Dolphin Anty не могут изменить это.

💀 Истина:
Fallback chain — это отпечаток ОС, а не браузера.

Часть 5: Как проверить свою уязвимость​

🔍 Шаг 1: Используйте тестовые сайты​


🔍 Шаг 2: Запустите локальный тест​

js:
Code:
function testFallback() {
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  
  // Тест с несуществующим шрифтом
  ctx.font = '16px "XYZ123Font", serif';
  const width = ctx.measureText('mmmmmmmmmm').width;
  
  console.log('Fallback width:', width.toFixed(2), 'px');
  
  // Интерпретация:
  if (width > 83) console.log('→ Windows (Times New Roman)');
  else if (width > 80) console.log('→ macOS (Times)');
  else console.log('→ Linux (DejaVu Serif)');
}
testFallback();

💡 Правило:
Если ширина не соответствует заявленной ОС → вас уже выдали.

Часть 6: Как правильно настроить Font Fallback​

🔧 Уровень ОС​

🪟 Windows 10 Pro (bare metal)
  • Не удаляйте системные шрифты,
  • Убедитесь, что Arial, Times New Roman, Courier New присутствуют.

🍏 macOS (не рекомендуется для Windows-профилей)
  • Если имитируете Mac — используйте настоящий MacBook,
  • Не пытайтесь эмулировать Helvetica на Windows.

🐧 Linux (VPS — избегайте)
  • Цепочка DejaVu Sans мгновенно выдаёт VPS,
  • Не используйте Linux для Windows-профилей.

🔧 Уровень браузера​

🐬 Dolphin Anty
  1. При создании профиля,
  2. В разделе Fonts,
  3. Убедитесь, что системные шрифты не удалены.

⚠️ Жёсткая правда:
Нет способа подделать fallback chain.
Единственный способ — использовать правильную ОС.

Часть 7: Почему большинство кардеров терпят неудачу​

❌ Распространённые ошибки​

ОшибкаПоследствие
Удаление всех шрифтовАктивируется fallback → выдаёт ОС
Игнорирование fallback chainДумают, что важен только список шрифтов → провал
Использование Linux VPSЦепочка DejaVu Sans → мгновенный бан

💀 Полевые данные (2026):
75% провалов связаны с несогласованным font fallback chain.

Часть 8: Практическое руководство — безопасный профиль​

🔹 Шаг 1: Настройте RDP​

  • Установите Windows 10 Pro на bare metal (Hetzner AX41),
  • Убедитесь, что системные шрифты присутствуют.

🔹 Шаг 2: Проверьте fallback chain​

  • Запустите тест выше,
  • Убедитесь, что:
    • Ширина mmmmmmmmmm = 84.0–84.5 px (Windows).

🔹 Шаг 3: Избегайте кастомных шрифтов​

  • Не устанавливайте Google Fonts, Adobe Fonts,
  • Используйте только системные шрифты.

✅ Результат:
Ваш профиль будет соответствовать 70% реальных пользователей Windowsнизкий fraud score.

Заключение: Отсутствие — новый отпечаток​

Font Fallback Chain — это не просто «резервный план». Это невидимый отпечаток вашей ОС, который невозможно подделать.

💬 Финальная мысль:
Настоящая маскировка — не в наличии шрифтов, а в их отсутствии.
Потому что в мире фрода, даже пустота имеет форму.

Оставайтесь согласованными. Оставайтесь на уровне ОС.
И помните: в мире безопасности, шрифт — это идентичность
 
Last edited:
Top