Hardware Concurrency: как один API выдаёт класс устройства и ломает маскировку
Браузерное окружение передает больше данных, чем кажется. navigator.hardwareConcurrency часто воспринимают как «сколько потоков видит JavaScript», но на практике это устойчивый маркер архитектуры и класса устройства. Для мобильных браузеров значение редко живёт в вакууме: оно коррелирует с SoC, энергопрофилем, throttling и даже с тем, как система распределяет фоновые задачи.
Анализируем энтропию параметров. Если цепочка fingerprint-полей уже близка к мобильному профилю, а hardwareConcurrency внезапно даёт 12 или 16, это не просто шум — это конфликт слоёв. Для детекта важны не сами цифры, а согласованность с touch events, screen metrics, GPU-следом, памятью, таймингами и сетевой моделью. Один выбивающийся параметр дешевле всего объяснить именно как подмену окружения.
Что проверять:
— совпадает ли значение с типичным диапазоном для мобильного класса;
— не «прыгает» ли оно между сессиями без смены устройства;
— согласуется ли оно с throttling, battery hints и поведением рендеринга;
— не ломает ли оно распределение соседних признаков.
Попытка «сделать как у десктопа» обычно только увеличивает расстояние до реального профиля. Скрытность — это не отсутствие следов, это шум, сливающийся с фоном. Если маскируете окружение, подгоняйте не один API, а весь вектор признаков, иначе деанонимизация происходит на уровне несостыковок.
Fingerprint-кузница
@fingerprint_forge_ubt
Hardware Concurrency: как один API выдаёт класс устройства и ломает маскировку
Этот пост опубликован в Telegram-канале Fingerprint-кузница. Подписаться можно по ссылке: @fingerprint_forge_ubt.