Назад до блогу

Перевірка витоку відбитка браузера: шість тестів узгодженості

Сторінки перевірки відбитка показують багато даних, які сайти й так можуть зчитувати. Ці шість перевірок допомагають знайти суперечності між браузером, системою, регіоном, мережею та рендерингом, адже неузгоджені сигнали часто помітніші за одне незвичне значення.

Відкрийте будь-яку сторінку перевірки відбитка браузера — і побачите довгий список полів: UA, екран, часовий пояс, шрифти, результати рендерингу Canvas і параметри обладнання. Багато хто спершу дивиться на «унікальність», хоча насправді це найменш важливий показник. Значно важливіше, чи узгоджуються всі ці дані між собою.

浏览器指纹暴露自查:六项核对与自洽判断的关键步骤与判断维度示意图

Що сайти й так можуть зчитувати

Відбиток не зберігається як cookie. Cookie можна видалити, заблокувати або обійти за допомогою приватного режиму; відбиток формується з конфігурації самого браузера та пристрою. UA містить тип і версію браузера, а також операційну систему та її версію. До цього додаються встановлені плагіни, роздільна здатність і глибина кольору екрана, список шрифтів, часовий пояс і бажана мова, тип CPU, модель GPU та обсяг пам’яті, IP-адреса, провайдер і тип з’єднання, а також результати рендерингу, які повертають HTML5-інтерфейси на кшталт Canvas і WebGL. Разом ці поля утворюють ідентифікатор, який зазвичай майже не змінюється після зміни IP, очищення cookie або ввімкнення приватного режиму. Платформи використовують той самий базовий принцип, коли оцінюють, чи можуть облікові записи бути пов’язані.

Спочатку звірте три пункти із системою

Найкраще почати з User Agent, адже саме так браузер описує себе. Скопіюйте UA зі сторінки перевірки, потім перевірте версію браузера в його налаштуваннях і версію операційної системи в системних налаштуваннях. Якщо система або версія ядра, заявлені в UA, не відповідають реальній машині чи помітно відстають від поширених актуальних версій, це одна з найпростіших для виявлення невідповідностей.

Часовий пояс має відповідати регіону мережевого виходу. Сторінки перевірки зазвичай показують поточний часовий пояс безпосередньо, а простий скрипт його зчитування поверне те саме значення. Додатково перевірте на будь-якій сторінці пошуку IP, до якого регіону віднесено вихідну IP-адресу. Якщо ці дані вказують на різні регіони, невідповідність варто виправити.

Мова та регіон окремо є слабкими сигналами, але корисні в поєднанні. Перегляньте список, який повертають navigator.language і navigator.languages, і порівняйте його з мовами, поширеними в регіоні виходу. Часовий пояс США, китайська мова та вихід у Європі разом помітніші, ніж будь-яка з цих ознак окремо.

Екран, мережевий вихід і характеристики рендерингу

Для параметрів екрана й обладнання перевірте дві речі: наскільки типовими є значення і чи відповідають вони типу пристрою, заявленому в UA. Роздільну здатність, співвідношення пікселів, доступну область екрана, кількість ядер CPU та пам’ять можна оцінювати разом. Роздільна здатність рівня смартфона в поєднанні з десктопним UA — типовий приклад суперечності.

WebRTC слід перевіряти окремо, оскільки він може розкривати реальні мережеві дані. На тестових сторінках для нього зазвичай є окремий пункт. Подивіться, чи не повертається локальна адреса пристрою, наприклад така, що починається з 192.168 або 10, або навіть справжня публічна вихідна адреса. Якщо проксі ввімкнено, але реальна адреса все одно відображається, цей трафік не проходить через проксі. Це пункт із найвищим пріоритетом.

Для Canvas і WebGL перевірте, чи стабільні результати та чи відповідають вони заявленій моделі GPU. Важлива деталь: якщо кілька серед, одночасно відкритих на одній машині, повертають абсолютно однакові значення рендерингу, пов’язати їх між собою легше, ніж коли в значеннях є певна варіативність або шум.

Суперечності помітніші за недостатню реалістичність

Платформи не вимагають, щоб кожен пристрій був повністю унікальним. Вони намагаються визначити, чи виглядає весь набір інформації так, ніби його надіслала звичайна машина. Одне не зовсім «реалістичне» значення, наприклад рідкісна роздільна здатність, зазвичай є лише слабким сигналом. Коли кілька полів суперечать одне одному, невідповідність стає набагато легше помітити. UA каже Windows, але список шрифтів схожий на macOS; часовий пояс — США, мова — китайська, а вихід — у Європі; роздільна здатність виглядає як у смартфона, але UA вказує настільний браузер. Будь-яка така комбінація може звести нанівець тонке налаштування інших параметрів. Тому під час самоперевірки спершу варто шукати явні суперечності, а вже потім уточнювати окремі параметри.

Якщо виправляти лише три речі

На першому місці витік WebRTC, бо він розкриває реальні мережеві дані. На другому — узгодженість часового поясу й мови з регіоном виходу, оскільки такі невідповідності легко накопичуються в нетиповий профіль. На третьому — робота з Canvas і WebGL, щоб одна й та сама машина не розкривала напряму стабільне унікальне значення рендерингу.

Є й практичне обмеження: вимкнення або суттєве обмеження JavaScript може заблокувати частину збору даних, але помітно погіршує зручність багатьох сайтів. Браузери, орієнтовані на приватність, мають вбудовані засоби захисту й часто достатні для щоденного використання, однак менш гнучкі, коли потрібно довго підтримувати кілька не пов’язаних між собою ідентичностей.

Як підтримувати кілька середовищ

Мета не в тому, щоб щоразу створювати повністю випадковий відбиток. Кожне середовище має залишатися стабільним усередині себе й водночас відрізнятися від інших. У PurpleMark створіть окреме браузерне середовище для кожного облікового запису, окремо опрацьовуйте такі параметри, як Canvas, а потім перевіряйте узгодженість кожного середовища на тестовій сторінці. Середовище, яке проходить таку перевірку, підходить для довготривалого використання.

Зрештою, перевірка відбитка має лише дві цілі: побачити, які дані ви розкриваєте, і переконатися, що вони узгоджені між собою. Унікальність — це те, про що варто хвилюватися найменше.