Шрифты в браузере: как их детектируют и где ломается рандомизация отпечатка
Шрифтовой фингерпринтинг строится не на «списке шрифтов», а на измерении метрик рендера: widths, kerning, fallback-цепочек, line-height и subpixel-округления. Браузер не сообщает font inventory напрямую, поэтому детекторы сравнивают фактические размеры текста в десятках семейств и ищут расхождения с эталонной моделью платформы.
Разберем энтропию данного параметра: основная ошибка — подмена только имени шрифта в JS-перехвате. Если не совпадает каскад CSS, набор metric-compatible fallback и логика выбора системного шрифта, CreepJS и BrowserLeaks увидят рассинхрон. Под капотом Chromium API важно сохранить согласованность между Canvas, DOM-измерениями и поведением document.fonts.
Рабочая рандомизация обычно строится так:
— ограничить видимый набор до реалистичного профиля ОС;
— не менять шрифты по одному, а эмулировать целую семейную конфигурацию;
— синхронизировать Canvas-рендер с фактической заменой glyphs;
— не трогать CSS-метрики, если нет полного слоя инъекции JS-кода.
Отдельный риск — детект на уровне сетевого стека не нужен: достаточно локального сравнения текста в hidden iframe и на основном document. Если профиль шрифтов «плавает» между вкладками или сессиями без причины, отпечаток становится уникальнее, а не менее заметным.
Практика простая: рандомизируйте не шрифты, а целостный rendering profile; иначе антифрод увидит не шум, а артефакт.
Антидетект: эксперт
@antidetect_expert_arb
Шрифты в браузере: как их детектируют и где ломается рандомизация отпечатка
Этот пост опубликован в Telegram-канале Антидетект: эксперт. Подписаться можно по ссылке: @antidetect_expert_arb.