Відбиток пристрою: 5 сигналів, яким можна вірити
Команда боротьби з шахрайством просить одне: скажи, чи це та сама людина, яка платила минулого тижня. Відбиток пристрою відповідає балом, і різниця між корисною відповіддю та шкідливою в тому, які сигнали входять в ідентичність, а які лишаються у звіті.
Код: Fingerprint-JS, ліцензія MIT.
@globus.studio/fingerprintjs працює в браузері, збирає сигнали й відділяє стійкий ідентифікатор від доказів навколо нього.
Набір 1: стійке ядро
Сигнали середовища, локалі, екрана й заліза: родина браузера, client hints, мова, часовий пояс, метрики екрана, кількість потоків, підтримка дотику, архітектура.
Вони змінюються рідко й повільно. З них складається visitorId, і стабільність це причина їхнього вибору: ідентифікатор, який переїжджає щотижня, безкорисний для постійного клієнта.
Набір 2: докази поза хешем
Сліди ботів, імовірність приватного режиму, сліди підміни API, тип мережі, можливості сховища, доступність платежів, перевірка блокувальників. Кожен повертається з вердиктом, балом і причинами.
Жоден із них типово не входить у visitorId, і hashComponents() тримається того самого правила. Сигнал бота, який змінював би ідентифікатор, давав би одній людині дві особистості в момент, коли браузер оновив спосіб виявлення.
Набір 3: узгодженість заяв
Сліди підміни порівнюють, що браузер заявляє і що робить: пропатчений нативний API, платформа, яка розходиться з client hints, нульові розміри екрана, порожня глобальна змінна Chromium.
Це звіт, а не блокування. Рішення, пропатчений canvas.toDataURL це розширення приватності чи скрапер, ухвалює сервер, у якого є контекст, недоступний сторінці.
Набір 4: погляд сервера
@globus.studio/fingerprintjs/server перераховує хеш, перевіряє токен повтору й додає мережевий ризик зі свого боку. Браузер не бачить репутацію свого IP, а клієнт, який бреше про сигнали, не може збрехати про адресу, з якої з’єднується.
Це розділення і є найсильніша частина конструкції. Сигнали клієнта це докази, серверні перевірки це обмеження.
Набір 5: упевненість як число
Упевненість збору показує, яка частина дозволених збирачів спрацювала, а впевненість ідентичності поправляє на стабільність платформи. Результат із половиною заблокованих збирачів це результат із низьким балом, а не результат із хибним ідентифікатором.
Показувати впевненість незвично, і це чесний вибір. Відбиток, знятий у браузері з жорсткою приватністю, слабший, і сторона, що викликає, має це знати до того, як діяти.
Що лишається за межами
Відбиток не може бути єдиним фактором автентифікації або блокування. Мобільні мережі змінюють адреси, VPN це норма, а оновлення браузера може зсунути сигнал за одну ніч.
README серверної бібліотеки каже те саме своїми словами, і два твердження збігаються. Це ознака того, що обмеження розуміють автори, а не дописав юрист.
Що команда питає першим
Чи впізнають того самого клієнта через місяць? Чесна відповідь «найімовірніше, якщо пристрій і браузер не змінювалися», і бал упевненості каже, скільки ваги цій відповіді надавати.
Друге питання це що буде з ідентифікатором після оновлення браузера. Він зсунеться, тому застосунку потрібен рівень збігу з допуском, а не перевірка на рівність.
Третє питання про мобільні мережі: людина, яка їде з дому в офіс, дає дві адреси й два відбитки, і правило «новий пристрій, отже другий фактор» спрацьовує на ній щодня.
Скільки це коштує
Браузерний бандл менше 65 КБ, без залежностей у рантаймі, без мережевих викликів типово, з тестами в Chromium, Firefox і WebKit і покриттям 100 %.
Для продукту ціна це перевірка приватності: відбиток це псевдонімізовані персональні дані, і вибір профілю належить цьому документу. Профіль strict із ясною політикою зберігання це захищувана позиція, максимальний збір без запису ні.
Поруч: серверний фінгерпринтинг про серверну половину і розробка на PHP про те, як рахується інтеграція.
