April 14

Новая Fingerprint-система ExitAnty

Привет, это команда ExitAnty.

Мы хотим представить обновлённую Fingerprint систему в нашем приложении. В этой версии мы переработали прежние подходы, повысили стабильность подмен и устранили ключевые рассинхроны, из-за которых чекеры вроде CreepJS могли помечать профиль как подозрительный. Основные проблемы, над которыми мы работали в первую очередь, были связаны с Canvas и Workers.


Canvas

Canvas — это браузерная технология для отрисовки графики, текста, теней, линий и других визуальных элементов через JavaScript.

Для антифрод-систем Canvas важен не как инструмент отображения, а как источник отпечатка устройства. Разные операционные системы, графические чипы, драйверы, шрифты и особенности рендеринга могут давать немного разный результат даже при одинаковом коде. На основе этого результата формируется canvas fingerprint.

Именно поэтому любые нестабильности в Canvas быстро становятся заметны. Если результат отрисовки отличается между средами или ведёт себя непредсказуемо, чекер воспринимает это как след подмены.


Workers

Workers — это фоновые контексты браузера, в которых JavaScript выполняется отдельно от основной страницы. Они нужны для параллельной работы без нагрузки на интерфейс, но с точки зрения антифрод-проверок это ещё и отдельная зона сбора fingerprint.

Современные чекеры сравнивают значения, полученные в основном окне (window), Dedicated Worker и Shared Worker. Если между этими средами расходятся Canvas, GPU, язык, таймзона или другие параметры, это выглядит как неестественное поведение браузера и повышает риск детекта.


Почему у нас недоступны Service Workers

Отдельно стоит прокомментировать Service Workers.

Мы не стали включать их только ради формального совпадения по чекерам. На практике их активация может приводить к нестабильной работе браузера, склеиванию сессий и дополнительным точкам детекта. По нашим наблюдениям, именно в таких местах у некоторых решений и возникают проблемы, к которым мы ещё вернёмся ниже.

Для нас приоритетом является не «красивая галочка» в тесте, а реальная стабильность и изоляция сессии.


Изначально мы не хотели переводить этот вопрос в публичную плоскость. Однако в поддержку и в чат регулярно поступали вопросы о продукте-копии, представители которого при этом позволяли себе некорректные комментарии в наш адрес. Поэтому мы решили показать сравнение на практике.

Поведение ExitAnty на CreepJs

Для проверки мы использовали сессию запущенную на iPhone 15 pro iOS 26.2 с такими настройками:

UA iOS 26.0
Screen Resolution: 390×844
Canvas: Noise
WebGL: Real

Результаты теста ExitAnty

Поведение аналогичного решения на creepJs

Результаты тестирования решения-аналога на видео. Сессия была запущена на iPhone 15 Pro iOS 26.2 с аналогичными настройками:

UA iOS 26.2

Screen Resolution: 390×844

Canvas: Noise

WebGL: Real

На первый взгляд результаты ExitAnty и другого решения могут казаться похожими. Однако уже в базовых тестах видно, что при включённом Canvas Noise у альтернативного решения Canvas получает статус lied, а Service Workers при этом доступны. Это указывает на некачественное зашумление Canvas у решения-аналога.

Более того, в ходе тестов мы увидели признаки доменно-зависимого поведения: на определённых адресах — таких как abrahamjuliot.github.io (creepjs) — значения в Workers внезапно становятся «идеальными», тогда как если развернуть тот же самый чекер на собственном домене картина уже отличается. На видео отчетливо видно что язык отпечатка отличается на одном и том же чекере развернутом на разных доменах.
Видео с iPhone →


Поведение аналогичного решения на CreepJs на другом домене

Чтобы удостовериться в доменной зависимости аналогичного решения были проведены тесты на MacBook. Другое устройство сразу вскрыло не только имитацию языковых параметров отпечатка, но и целый набор остальных. Смотреть видео →

Именно после этого различия стали заметны гораздо яснее. Тестирование указывает на то, что решение-аналог подставляет определенный набор параметров по домену, но в реальности чекер (как и настоящие антифрод-системы) детектит несовпадения в отпечатке. Трудно назвать это иначе как обманом пользователей — но судить вам.

Инструкция по развертыванию СreepJs на собственном домене ниже.


Вывод

Новая Fingerprint система ExitAnty строится не вокруг показательных результатов на одном публичном чекере, а вокруг согласованности всей среды: window, Canvas, Workers, WebGL и других критичных параметров.

Наша задача — не просто пройти тест, а обеспечить стабильную и предсказуемую защиту в реальных условиях использования.

В честь обновления дарим промокод на скидку 50% на все планы до конца месяца: BIRD50