
Есть параметр, который сайт считывает за доли секунды и который уникален почти как отпечаток пальца, — список шрифтов, установленных в системе. Он складывается из шрифтов операционной системы, офисных пакетов, графических редакторов, языковых наборов и всего, что человек ставил годами. Двух одинаковых наборов у живых людей почти не бывает. Зато у фермы виртуалок, развёрнутых из одного образа, набор шрифтов совпадает бит в бит — и антифрод Яндекса склеивает такие профили в кластер быстрее, чем по любому Canvas.
Разберём, как именно браузер выдаёт список шрифтов без всяких разрешений, почему этот сигнал так информативен, как на нём горят фермы и что нужно сделать, чтобы набор шрифтов выглядел как у живой аудитории. Тема примыкает к материалам про Canvas и WebGL и аппаратный отпечаток.
Как сайт узнаёт ваши шрифты, ничего не спрашивая
Прямого метода «дай список шрифтов» в браузере нет — и это создаёт ложное чувство безопасности. На практике список восстанавливается косвенно, и делается это тривиально:
- Измерение размеров текста. Классика. На страницу выводится строка сначала базовым шрифтом (monospace, sans-serif, serif), затем проверяемым. Если ширина и высота изменились — шрифт в системе есть, браузер его применил. Если размеры не изменились — шрифта нет, сработал запасной. Прогоняется список из сотен названий, на выходе — точный перечень установленного.
- Canvas-измерение. То же самое, но через отрисовку в канвасе: точнее, быстрее и незаметнее для пользователя.
- API проверки доступности шрифтов. В современных браузерах есть механизмы, позволяющие проверить наличие конкретного начертания напрямую.
- Метрики рендеринга. Даже при одинаковом наборе шрифтов мельчайшие различия в их отрисовке (сглаживание, хинтинг, версия движка) дают дополнительный уникализирующий сигнал.
Шрифты — это биография пользователя. Офисный пакет, Photoshop, игровой лаунчер, азиатские языковые наборы — всё оставляет следы. У фермы из одного образа биографии нет: у всех одинаковое «детство».
Почему набор шрифтов так уникален
Информативность сигнала легко понять на структуре набора. Он складывается из нескольких слоёв, и каждый добавляет энтропии:
- Базовый набор ОС. Windows, macOS, Android и Linux ставят принципиально разные шрифты. Это отсекает платформу — и должно совпадать с user-agent.
- Версия и сборка системы. Разные версии Windows приносят разные шрифты, а региональные сборки — дополнительные языковые начертания.
- Установленный софт. Офисные пакеты добавляют десятки шрифтов, графические редакторы — свои наборы, мессенджеры и игры — фирменные начертания.
- Ручные установки. Дизайнеры и верстальщики ставят шрифты пачками, обычные пользователи — единично, под конкретную задачу.
- Языковые пакеты. Азиатские, арабские, кириллические расширенные наборы сильно меняют картину.
В сумме это даёт десятки бит энтропии — сопоставимо с Canvas, но добывается проще и подменяется реже. А редко подменяемый сигнал, как мы не раз повторяли в цикле, для антифрода ценнее массово закрываемого.
Таблица: слои набора шрифтов и что они выдают
| Слой | Что определяет | Риск при подмене |
|---|---|---|
| Базовый набор ОС | платформа: Windows / macOS / Android | рассинхрон с user-agent |
| Версия системы | поколение сборки, регион | шрифты из будущей версии ОС |
| Офисный софт | рабочий компьютер или домашний | офисные шрифты на «телефоне» |
| Графические редакторы | профессия владельца | неправдоподобный портрет аудитории |
| Языковые пакеты | регион и язык интерфейса | конфликт с гео и локалью |
| Ручные установки | индивидуальность профиля | одинаковый набор у всей фермы |
Как на шрифтах горит ферма
Одинаковый набор у всех профилей
Самый частый сценарий. Сервер развёрнут из одного образа, антидетект шрифты не трогает — и сотня «разных людей» приходит с идентичным перечнем начертаний. Для алгоритма это статистически невозможная картина: в живой популяции полное совпадение наборов встречается редко, а массово — не встречается вовсе.
Слишком бедный набор
Чистая серверная ОС несёт минимум шрифтов — только системные. У живого пользователя их заметно больше: офис, редакторы, игры, языковые пакеты. Профиль с «голым» набором выглядит как свежеустановленная система без единой программы, что для обычного посетителя коммерческого сайта неестественно.
Рассинхрон с платформой
Профиль заявляет мобильный Android, а в наборе — типично десктопные офисные шрифты, которых на телефоне не бывает. Или наоборот: user-agent говорит Windows, а набор соответствует Linux-серверу. Это тот же класс ошибок, что мы разбирали в статье про рассинхрон таймзоны и языка, только по другому параметру.
Случайный набор
Попытка «нарандомить» шрифты приводит к комбинациям, которые не встречаются в реальности: редкие профессиональные начертания без базовых системных, шрифты разных платформ одновременно, наборы без логики установки.
Таблица: живой пользователь против фермы
| Признак | Живая аудитория | Небрежная ферма |
|---|---|---|
| Совпадение наборов | редкое, случайное | полное у всех профилей |
| Объём набора | от десятков до сотен | минимальный системный |
| Соответствие платформе | полное | рассинхрон с user-agent |
| Логика состава | следы реального софта | случайный или пустой |
| Языковые наборы | соответствуют региону | дефолт или конфликт с гео |
| Стабильность во времени | меняется медленно | скачет или статична у всех |
Как правильно маскировать список шрифтов
Эталонные наборы, а не рандом
Работать нужно готовыми профилями: набор шрифтов типичного домашнего компьютера на Windows, набор рабочей машины с офисным пакетом, набор ноутбука на macOS, набор конкретной модели Android. Эти перечни берутся из реальных срезов, а не генерируются случайно. Тогда состав выглядит логично: базовые системные плюс то, что реально приходит с популярным софтом.
Строгая согласованность с платформой
Набор обязан соответствовать заявленной ОС и её версии. Мобильный профиль не может иметь десктопных офисных шрифтов, а система одного поколения — начертаний, появившихся в следующем. Это первое, что проверяет любая серьёзная антибот-система.
Естественный разброс по ферме
Профили должны отличаться друг от друга так же, как отличаются реальные люди: у кого-то богатый набор дизайнера, у кого-то скромный домашний, у большинства — средний с офисным пакетом. Распределение повторяет живую популяцию, а не «всем поровну».
Стабильность в рамках профиля
Один профиль — один набор на весь жизненный цикл. Шрифты у реального человека меняются редко и только в плюс: поставил программу — добавились начертания. Если набор скачет между визитами, это признак генерации на лету — та же логика, что с изоляцией профилей.
Языковые наборы под гео
Профиль, работающий по российскому региону, должен иметь кириллические начертания и не иметь экзотических языковых пакетов без причины. Набор шрифтов — ещё один слой географической согласованности.
Как проверить свои профили
- Прогоните два-три профиля через открытый фингерпринт-тест, показывающий список определённых шрифтов. Наборы обязаны различаться.
- Оцените объём: «голый» системный набор — тревожный признак.
- Сверьте состав с заявленной ОС: нет ли десктопных шрифтов на мобильном профиле.
- Проверьте наличие кириллицы для профилей, работающих по рунету.
- Повторите через сутки: набор не должен меняться.
- Сравните несколько профилей между собой: полное совпадение — маскировки нет.
Разбор кейса: сто человек с одинаковым Photoshop
Агентство вело проект на качественных мобильных прокси и свежем антидетекте. Отпечатки Canvas и WebGL были уникальны, поведение реалистичное, гео согласовано. Но конверсия трафика в рост позиций была ниже ожидаемой, а часть сессий явно не засчитывалась.
Аудит профилей показал неожиданное: антидетект подменял графические отпечатки, но список шрифтов отдавал реальный — от хост-системы, на которой всё крутилось. Машина принадлежала дизайнеру, и в наборе присутствовали профессиональные начертания из графических пакетов. В результате сто «разных пользователей» из разных городов приходили с идентичным набором шрифтов, включая редкие дизайнерские, — комбинация, вероятность которой в живой популяции практически нулевая.
После перевода профилей на эталонные наборы с естественным распределением (большинство — типовые домашние и офисные конфигурации, единицы — расширенные) отсев прекратился. Урок простой: уникальность по трём популярным параметрам не спасает, если четвёртый выдаёт всю ферму разом.
Частые ошибки
- Не трогать шрифты вообще. Самая частая ошибка: закрыли Canvas, а список шрифтов отдаётся реальный, одинаковый у всей фермы.
- Рандомизировать состав. Даёт неправдоподобные комбинации без логики установки софта.
- Урезать набор до минимума. «Голая» система — редкость среди живых посетителей.
- Игнорировать платформу. Десктопные шрифты на мобильном профиле — мгновенный рассинхрон.
- Менять набор между визитами. Выдаёт генерацию отпечатка на лету.
Частые вопросы
Разве браузер не блокирует определение шрифтов? Прямого API со списком нет, но косвенное определение через измерение размеров текста работает во всех браузерах и не требует разрешений. Считать, что шрифты «не видны», — опасное заблуждение.
Насколько это важнее Canvas? По информативности сопоставимо, а по практической опасности сегодня выше — просто потому, что Canvas закрывают почти все, а шрифты почти никто. Ценность сигнала для антифрода определяется тем, насколько редко его маскируют.
Можно ли ограничиться установкой разных шрифтов в систему? Для нескольких профилей на разных машинах — да. Для фермы на одном сервере это нереально: нужна подмена на уровне браузерного профиля, иначе все экземпляры видят одну систему.
Помогают ли реальные устройства? Да, как и с другими отпечатками: у разных физических телефонов наборы шрифтов естественно различаются. Это ещё один довод в пользу гибридной схемы с ядром на реальных устройствах.
Вывод
Список установленных шрифтов — это биография пользователя, которую браузер отдаёт любому сайту без разрешений, через простое измерение размеров текста. Набор складывается из слоёв: базовые шрифты ОС, версия системы, установленный софт, языковые пакеты, ручные установки — и в сумме даёт энтропию, сопоставимую с Canvas. Проблема в том, что Canvas маскируют почти все, а шрифты почти никто, из-за чего ферма, безупречная по популярным параметрам, склеивается в кластер по этому. Правильная работа — эталонные наборы реальных конфигураций вместо рандома, строгая согласованность с заявленной платформой и гео, естественное распределение по ферме и стабильность в рамках профиля. Проверить это можно за десять минут, а цена вопроса — эффективность всей накрутки.
Больше о поведенческом продвижении и других услугах — на главной странице ProfSEO24.
Закажите накрутку ПФ в ProfSEO24
Выводим сайты в ТОП-1 Яндекса за счёт поведенческих факторов на базе ИИ — без риска фильтров. Более 300 сайтов в ТОП-1, первые сдвиги по позициям за 3 дня. Рассчитаем стоимость под вашу нишу и регион.
Заказать накрутку ПФ Написать в TelegramКомментарии
Виктор Зенин
Прогнал три профиля через тест — списки шрифтов идентичны до последнего названия. Антидетект платный, Canvas и WebGL уникальные. Сижу в осадке.
Admin
Классика. Большинство антидетектов по умолчанию закрывают графику и не трогают шрифты — считается «второстепенным» параметром. Ищите в настройках профиля отдельный раздел с масками шрифтов, он обычно выключен.
Марина Столярова
А сколько шрифтов должно быть у «нормального» пользователя? Чтобы понимать, на какой объём ориентироваться.
Admin
Точной цифры нет и гнаться за ней не надо. Ориентир: домашний компьютер с офисным пакетом — это заметно больше, чем голая система, но далеко не сотни. Важнее не количество, а логика: базовые системные плюс шрифты, которые реально приходят с популярным софтом.
tech_lead_88
Проверил измерение через canvas — действительно, ширина строки меняется в зависимости от шрифта. Никаких разрешений браузер не спрашивает вообще.
Олег Тарасов
Кейс с дизайнером прямо про нас. Крутили на рабочей машине, там куча профессиональных шрифтов. Теперь понятно, почему трафик частично не засчитывался.
Светлана Гурова
Вопрос по мобильным профилям. Если эмулирую Android, какие шрифты там вообще должны быть? Боюсь, что подставлю десктопный набор и спалюсь.
Admin
На мобильных наборы принципиально другие и заметно скромнее — офисных и графических шрифтов там нет вовсе. Не составляйте вручную: берите готовый эталонный профиль конкретной модели устройства, иначе почти наверняка добавите лишнее.
Дмитрий Кравец
Получается, для мелких проектов проще реальные устройства взять, чем это всё настраивать?
Анна Белоус
Спасибо за таблицу со слоями. Раньше воспринимала шрифты как один параметр, а тут наглядно видно, из чего складывается уникальность.
seo_praktik
А если вообще отключить определение шрифтов, вернуть пустой список? Логично же — нечего показывать.
Admin
Хуже, чем ничего не делать. Пустой или почти пустой список — сам по себе редчайший сигнал, такого у живых пользователей практически не бывает. Вы не прячетесь, а надеваете светящуюся табличку. Правило то же, что с Canvas: подменять на правдоподобное, а не обнулять.
Роман Шевцов
По кириллице момент важный. У меня часть профилей была на англоязычной сборке без расширенных кириллических начертаний, а гео российское. Поправил.
Наталья Прошина
Как часто нужно пересматривать наборы? Или один раз настроил и забыл?
Admin
В рамках одного профиля — не меняйте вообще, это принципиально. Пересматривать имеет смысл на уровне пула: когда выходит новая версия ОС и в реальной популяции появляются новые шрифты, эталоны стоит обновить для новых профилей. Старые оставляйте как есть.
Игорь Малахов
Проверил у себя распределение по ферме — у всех ровно один и тот же «средний» набор. То есть даже когда подменил, сделал это одинаково. Исправляю.
Юлия Карпенко
Чек-лист удобный, прошла по пунктам за вечер. Два профиля из пяти пришлось пересобрать.
Артём Лозовой
Интересно, что шрифты сейчас опаснее Canvas именно из-за того, что их никто не закрывает. Получается, безопасность параметра обратно пропорциональна его популярности.
Константин Ряхин
Заказывали у вас продвижение с накруткой, вопросов по технической части не возникало ни разу — видно, что такие вещи учтены на уровне процесса, а не по факту проблем.