Энтропия устройства: дальше CreepJS

Отпечаток устройства силён ровно настолько, насколько велика энтропия за ним. Вот что реально отличает устройство живого человека от эмулятора — и почему одного сигнала всегда мало.

У фингерпринтинга репутация решённой задачи — снял canvas-хеш, готово. Это не так. Отпечаток полезен пропорционально своей энтропии: сколько бит реально отличают это устройство от следующего и насколько трудно эти биты подделать. Лёгкие боты научились подделывать отлично.

Что энтропия значит для фрода

Энтропия — это просто количество информации. Сигнал, одинаковый на миллионе устройств, не говорит ничего; редкий и стабильный — говорит много. Задача device-слоя не собрать сигналы, а собрать сигналы, несущие энтропию, которые эмулятор не воспроизведёт дёшево. Canvas и user-agent — это минимум; сами по себе подделываются на раз.

Дальше canvas: сигналы, которые важны

TLS/JA4: слой, о котором боты забывают

Над браузером — TLS-хендшейк, и его форма, снятая как JA4-отпечаток, выдаёт реальный сетевой стек под капотом. User-agent «Safari на iOS» поверх TLS-стека headless-Chrome — противоречие, которого JS-слой не видит, а хендшейк видит. Это один из самых трудных для подделки сигналов, потому что он задаётся до того, как отработает хоть строка твоего JS.

Слияние, а не один признак

Ни один сигнал не должен решать судьбу лида. Реальный детект — это слияние: каждая ось даёт взвешенный риск, а интересный фрод — это лид, который проходит одну проверку, но противоречит другой. Поэтому Маска читает куда больше энтропии устройства, чем даёт коробочная библиотека, и кросс-сверяет её с IP, телефоном, email и мессенджерами до вердикта. Фейк, убедительный на одной оси, редко переживает все пять.

Бот, который обошёл твой canvas-хеш, всё ещё должен объяснить свой TLS-хендшейк.