Перейти до вмісту

Відбиток пристрою: 5 сигналів, яким можна вірити

Відбиток пристрою: 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 про те, як рахується інтеграція.