Шрифтовой фингерпринтинг ломает маскировку чаще, чем Canvas и WebGL вместе
Разберем энтропию данного параметра: браузер отдает список доступных шрифтов не только через JS-API, но и через косвенные метрики — ширину текста, рендеринг fallback-цепочек, метрики glyph advance. Антифрод сверяет не «наличие Arial», а согласованность между OS, language pack, графическим стеком и тем, как браузер рисует один и тот же набор символов в разных условиях.
Типовые точки детекта:
• измерение размеров скрытых элементов с разными font-family;
• сравнение метрик в Canvas/DOM и в оффскрин-рендере;
• проверка редких гарнитур через fallback-поведение;
• корреляция шрифтов с платформой, locale и DPI.
Полная подмена списка шрифтов — слабая идея: API можно подрисовать, но таблицы кернинга, hinting и межсимвольные интервалы выдают несостыковки. Под капотом Chromium API шрифты уходят в несколько слоев, и если подменить только JS-уровень, детект на уровне сетевого стека и рендер-пайплайна все равно соберет профиль с аномалиями. Спуфинг через инъекцию JS-кода работает только против примитивных проверок.
Рабочая модель — не «показывать все», а держать консистентный набор: ограниченный, стабильный, соответствующий заявленной ОС и языковой среде. Если нужен рандом, меняйте его пакетно: шрифты, locale, screen metrics, canvas noise и media queries должны быть связаны одной моделью отпечатка. Иначе энтропия растет, а не падает.
Вывод простой: шрифты надо не прятать, а делать правдоподобными. Проверяйте профиль как систему, а не как отдельный параметр, иначе один запрос сломает всю маскировку.
Антидетект: эксперт
@antidetect_expert_arb
Шрифтовой фингерпринтинг ломает маскировку чаще, чем Canvas и WebGL вместе
Этот пост опубликован в Telegram-канале Антидетект: эксперт. Подписаться можно по ссылке: @antidetect_expert_arb.