Страницы проверки отпечатка показывают множество данных, которые сайты и так могут считывать. Эти шесть проверок помогают находить противоречия между браузером, системой, регионом, сетью и рендерингом, потому что несогласованные сигналы обычно заметнее одного необычного значения.
Откройте любую страницу проверки отпечатка браузера, и вы увидите длинный список полей: UA, экран, часовой пояс, шрифты, результаты рендеринга Canvas и параметры оборудования. Многие в первую очередь смотрят на «уникальность», хотя на деле это наименее важный показатель. Гораздо важнее, насколько все эти данные согласуются друг с другом.

Что сайты и так могут считывать
Отпечаток не хранится как cookie. Cookie можно удалить, заблокировать или обойти с помощью приватного режима; отпечаток формируется из конфигурации самого браузера и устройства. UA содержит тип и версию браузера, а также операционную систему и ее версию. К этому добавляются установленные плагины, разрешение экрана и глубина цвета, список шрифтов, часовой пояс и предпочтительный язык, тип CPU, модель GPU и объем памяти, IP-адрес, провайдер и тип соединения, а также результаты рендеринга, которые возвращают HTML5-интерфейсы вроде Canvas и WebGL. В совокупности эти поля образуют идентификатор, который обычно почти не меняется при смене IP, очистке cookies или включении приватного режима. Платформы используют тот же общий принцип, когда оценивают возможную связь между аккаунтами.
Сначала сверьте три пункта с системой
Начать лучше с User Agent, потому что с его помощью браузер описывает сам себя. Скопируйте UA со страницы проверки, затем проверьте версию браузера в его настройках и версию операционной системы в системных настройках. Если система или версия ядра, указанные в UA, не совпадают с реальной машиной либо явно отстают от широко используемых актуальных версий, это одна из самых простых для обнаружения несогласованностей.
Часовой пояс должен соответствовать региону сетевого выхода. Страницы проверки обычно показывают текущий часовой пояс напрямую, а простой скрипт его получения вернет то же значение. Дополнительно проверьте на любом сервисе IP-поиска, к какому региону относится выходной IP. Если эти данные указывают на разные регионы, расхождение стоит устранить.
Язык и регион по отдельности являются слабыми сигналами, но полезны в сочетании. Посмотрите список, который возвращают navigator.language и navigator.languages, и сравните его с языками, распространенными в регионе выхода. Часовой пояс США, китайский язык и выход в Европе вместе выглядят заметнее, чем любой из этих признаков по отдельности.
Экран, сетевой выход и характеристики рендеринга
Для параметров экрана и оборудования проверьте две вещи: насколько типичны значения и соответствуют ли они типу устройства, заявленному в UA. Разрешение, коэффициент пикселей, доступную область экрана, число ядер CPU и объем памяти можно оценивать вместе. Разрешение уровня смартфона в сочетании с десктопным UA — типичное противоречие.
WebRTC нужно проверять отдельно, потому что он может раскрывать реальные сетевые данные. На страницах тестирования для него обычно есть отдельный пункт. Посмотрите, не возвращается ли локальный адрес устройства, например начинающийся с 192.168 или 10, либо вообще реальный публичный выходной адрес. Если прокси включен, но реальный адрес все равно виден, такой трафик через прокси не идет. Это самый приоритетный пункт.
Для Canvas и WebGL проверьте стабильность результатов и их соответствие заявленной модели GPU. Есть важная деталь: если несколько сред на одной и той же машине одновременно возвращают полностью одинаковые значения рендеринга, связать их между собой проще, чем если в значениях есть небольшая вариативность или шум.
Противоречия заметнее, чем недостаточно реалистичное значение
Платформы не требуют, чтобы каждое устройство было абсолютно уникальным. Они пытаются понять, выглядит ли весь набор данных так, словно он получен с обычной машины. Одно не вполне «реалистичное» значение, например редкое разрешение, обычно лишь слабый сигнал. Но когда несколько полей противоречат друг другу, несогласованность становится намного проще заметить. UA говорит Windows, а список шрифтов похож на macOS; часовой пояс — США, язык — китайский, а выход находится в Европе; разрешение похоже на смартфон, но UA указывает десктопный браузер. Любая такая комбинация может свести на нет тонкую настройку других параметров. Поэтому при самопроверке сначала стоит искать явные противоречия и только потом заниматься точностью отдельных значений.
Если исправить только три вещи
На первом месте утечка WebRTC, поскольку она раскрывает реальные сетевые данные. На втором — согласованность часового пояса и языка с регионом выхода, потому что такие расхождения легко накапливаются в необычный профиль. На третьем — работа с Canvas и WebGL, чтобы одна и та же машина не раскрывала напрямую стабильное уникальное значение рендеринга.
Есть и практическое ограничение: отключение или жесткое ограничение JavaScript может заблокировать часть сбора данных, но заметно ухудшает удобство многих сайтов. Браузеры, ориентированные на приватность, содержат встроенные механизмы защиты и часто подходят для повседневного использования, но становятся менее гибкими, если нужно долго поддерживать несколько не связанных между собой идентичностей.
Как поддерживать несколько сред
Смысл не в том, чтобы каждый раз создавать полностью случайный отпечаток. Каждая среда должна оставаться стабильной внутри себя и отличаться от остальных. В PurpleMark можно создать отдельную браузерную среду для каждого аккаунта, отдельно настроить такие параметры, как Canvas, а затем проверить согласованность каждой среды на тестовой странице. Среда, которая проходит такую проверку, подходит для долгосрочного использования.
В конечном счете у проверки отпечатка всего две задачи: показать, какие данные вы раскрываете, и подтвердить, что они согласуются между собой. Уникальность — это то, о чем стоит беспокоиться меньше всего.


