Отпечаток устройства силён ровно настолько, насколько велика энтропия за ним. Вот что реально отличает устройство живого человека от эмулятора — и почему одного сигнала всегда мало.
У фингерпринтинга репутация решённой задачи — снял canvas-хеш, готово. Это не так. Отпечаток полезен пропорционально своей энтропии: сколько бит реально отличают это устройство от следующего и насколько трудно эти биты подделать. Лёгкие боты научились подделывать отлично.
Энтропия — это просто количество информации. Сигнал, одинаковый на миллионе устройств, не говорит ничего; редкий и стабильный — говорит много. Задача device-слоя не собрать сигналы, а собрать сигналы, несущие энтропию, которые эмулятор не воспроизведёт дёшево. Canvas и user-agent — это минимум; сами по себе подделываются на раз.
Над браузером — TLS-хендшейк, и его форма, снятая как JA4-отпечаток, выдаёт реальный сетевой стек под капотом. User-agent «Safari на iOS» поверх TLS-стека headless-Chrome — противоречие, которого JS-слой не видит, а хендшейк видит. Это один из самых трудных для подделки сигналов, потому что он задаётся до того, как отработает хоть строка твоего JS.
Ни один сигнал не должен решать судьбу лида. Реальный детект — это слияние: каждая ось даёт взвешенный риск, а интересный фрод — это лид, который проходит одну проверку, но противоречит другой. Поэтому Маска читает куда больше энтропии устройства, чем даёт коробочная библиотека, и кросс-сверяет её с IP, телефоном, email и мессенджерами до вердикта. Фейк, убедительный на одной оси, редко переживает все пять.
Бот, который обошёл твой canvas-хеш, всё ещё должен объяснить свой TLS-хендшейк.