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

Що таке WebGL-відбиток? Як інформація про відеокарту стає частиною відбитка браузера

Сайт зчитує відеокарту двома шляхами: один питає параметри, інший дивиться на зображення. Коли ви вперше відкриваєте сторінку перевірки відбитка й бачите у полі WebGL Renderer модель власної відеокарти, перша думка зрозуміла: звідки сторінка знає, яка в мене карта? Насправді зчитується не серійний номер заліза, а характеристики графічного середовища, які браузер віддає назовні. Одна половина цих характеристик це параметри, які інтерфейс повідомляє напряму; друга половина це результати, зчитані після того, як відеокарта намалювала зображення. Окреме значення не дає змоги ідентифікувати людину, але разом вони складають шматочок мозаїки з розрізнювальною силою.

WebGL це графічний інтерфейс, який надає браузер. Через нього сторінки малюють 3D-моделі, карти та візуалізації, залучаючи відеокарту. Той самий інтерфейс віддає й частину графічного середовища. MostMate це антидетект-браузер, який готує кожному акаунту окреме браузерне середовище. Відеокарта та графічні параметри належать до сигналів середовища, які він контролює.

Два типи інформації: параметри, які повідомляють, і зображення, які малюють

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

Схема двоканального збирання WebGL-відбитка

Спершу частина, яку запитують. Типові поля на сторінці перевірки:

ПолеВмістТипові значення
Vendorвиробник відеокартиGoogle Inc. (NVIDIA)
Rendererмодель рендерераANGLE (NVIDIA, GeForce RTX 3060)
WebGL Versionверсія інтерфейсуWebGL 2.0
Extensionsперелік підтримуваних розширеньнабір назв розширень

У списку є кілька деталей, які варто помітити. У полі Vendor багато браузерів однаково показують Google Inc., а справжній виробник ховається у дужках. Значення Renderer залежить від реалізації браузера: та сама карта NVIDIA у різних браузерах може приходити у різних форматах рядка. Різниця у списку розширень помітна ще більше. Те, які розширення підтримуються і в якому порядку, теж дає додаткову інформацію.

Точкою входу для читання цих параметрів є розширення WEBGL_debug_renderer_info. Воно віддає дві константи: немаскований рядок виробника і рядок рендерера. У документації MDN сказано, що розширення спочатку призначалося для налагодження і залежить від налаштувань приватності браузера. Firefox вимикає його напряму, коли увімкнено режим приватності resistFingerprinting. Інакше кажучи, та сама відеокарта у різних браузерах і конфігураціях приватності може звітувати різний вміст. Під час перевірки варто зважати на цю змінну.

Чому відеокарта стає характеристикою середовища

Розрізнювальна сила походить від поєднання, а не від окремого поля. Ринок відеокарт дуже сконцентрований. NVIDIA, AMD, Apple та Intel разом покривають переважну більшість пристроїв, тож саме поле Renderer нікого не вказує. Але коли воно поєднується з іншими сигналами, розрізнення може посилитися. Наприклад, коли пристрій з Windows працює у Chrome, графічне середовище, яке показує WebGL, зазвичай відповідає конфігурації відповідної системи та браузера; якщо інформація браузера вказує на Windows, а графічне середовище має риси, притаманні macOS, це привід придивитися уважніше. Якщо й інші параметри, скажімо часовий пояс, не збігаються з очікуваним середовищем, у конфігурації в цілому можуть з'явитися суперечливі сигнали.

Схема суперечливих і погоджених поєднань графічних параметрів

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

Тепер про намальовану частину. Ідея змусити відеокарту відрендерити фіксоване зображення й зчитати результат споріднена з Canvas-відбитком; у статті про Canvas-відбиток описано механізм відмінностей при 2D-малюванні. WebGL працює через 3D-конвеєр, і рендеринг проходить через драйвер відеокарти та низькорівневі графічні бібліотеки. Інший GPU, інша версія драйвера чи інша реалізація браузера можуть дати результат, що відрізняється на кілька пікселів. Таких відмінностей око не помічає, а скрипт зчитує їх точно.

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

Чим відрізняються WebGL, Canvas і WebGPU?

Три назви часто йдуть поруч, але мета кожної своя. У таблиці:

ПараметрОб'єкт спостереженняСпосіб збирання
Canvasрезультат 2D-малюваннямалювати і читати відмінності
WebGLграфічні параметри і 3D-зображенняпитати параметри і малювати
WebGPUсигнали нового графічного інтерфейсупитати параметри і тестувати обчислення
AudioContextрезультат обробки звукуалгоритмічна обробка і читання

Зв'язок між WebGPU і WebGL пояснюється одним реченням. WebGPU це графічний інтерфейс наступного покоління, який браузери зараз розгортають: він потужніший і має ширший набір параметрів; у статті про WebGPU-відбиток розказано, які ознаки пристрою він віддає. WebGL залишається чинним інтерфейсом із найширшим охопленням, його підтримують практично всі браузери. Обидва довго існуватимуть поруч, на сторінках перевірки з'являються водночас, і під час аналізу варто дивитися на обидва.

Як перевірити власний WebGL-відбиток?

Записати і порівняти: саме в цьому суть перевірки. Три кроки:

  1. Відкрийте з середовища сторінку перевірки IP або інструмент на кшталт BrowserLeaks і знайдіть блок WebGL. Запишіть чотири речі: Vendor, Renderer, WebGL Version і кількість розширень.
  2. Через деякий час повторіть перевірку того самого середовища і порівняйте результати. Якщо параметр змінився з реальної відеокарти на програмний рендеринг типу SwiftShader або кількість розширень помітно змінилася, у середовищі щось сталося.
  3. Вкладіть результат WebGL у всю конфігурацію середовища. Якщо WebGL звітує Windows і NVIDIA, то UA з операційною системою теж мають бути Windows, а часовий пояс, мова і регіон виходу мають узгоджуватися між собою. Середовище, де кожен елемент окремо в порядку, а поєднання суперечить одне одному, і так впадає в око.

Один тип підказок заслуговує на окрему згадку. Якщо сторінка перевірки показує програмний рендеринг, як-от SwiftShader чи ANGLE (Google), можливо, у середовища взагалі немає відеокарти. А можливо, браузер перейшов на програмний рендеринг. На справжніх пристроях такі значення трапляються рідко, тож у середовищі з довгим терміном роботи це сигнал, який потребує реакції.

Як користуватися параметром WebGL image у MostMate?

У налаштуваннях відбитка MostMate параметр WebGL image можна налаштувати окремо. На сторінці налаштувань він стоїть поруч із графічними параметрами, як-от Canvas. Створюючи чи редагуючи середовище, бачите у WebGL image два положення: Real і Noise. Положення Real залишає справжнє значення; перемкнете на Noise, і вихід працює у режимі шуму.

Після перемикання подивіться на відповідний рядок у панелі попереднього перегляду відбитка праворуч: значення набуде вигляду з шестизначним кодом. Цей код не збігається з іншими параметрами. Він позначає конфігурацію шуму; а який хеш насправді віддається, видно на сторінці перевірки, відкритій із середовища.

Параметр WebGL image у налаштуваннях відбитка MostMate

Яке положення обрати, залежить від того, ким має бути середовище. Для середовищ, що працюють довго, радимо Real: параметри справжньої відеокарти та поведінку драйвера найважче підробити, а стабільному середовищу змінювати їх не потрібно. Коли потрібні кілька середовищ для однотипних завдань, Noise дає різні результати малювання, тож кілька середовищ не звітують однакове обличчя у графічному вимірі. Вибір Noise не означає перебудову з нуля: у панелі попереднього перегляду значення кожного пункту лежать на видноті, і конфігурацію видно з одного погляду.

Межі теж варто назвати прямо. Керування параметрами знижує ризик плутанини та суперечностей між середовищами. Поза WebGL сигнали, як-от роздільна здатність екрана чи шрифти, живуть окремо; чеклист покрокового узгодження є у статті про узгодженість проти пов'язування. Що б ви не налаштували, як платформа ухвалює рішення, вирішує платформа; ця стаття не дає жодних обіцянок у дусі «налаштував, значить не знайдуть».

Часті запитання про WebGL-відбиток

Чи може сайт побачити справжню модель моєї відеокарти?

Рядок моделі у полі Renderer видимий, якщо браузер не обмежує розширення WEBGL_debug_renderer_info. Але це графічний опис, який віддає браузер, а не зчитування ідентичності заліза. У браузерах на кшталт Firefox після ввімкнення захисту приватності така інформація ховається чи узагальнюється.

Чи врятує вимкнений WebGL від відбитка?

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

WebGL-відбиток і Canvas-відбиток це одне й те саме?

Ні. Обидва використовують відмінності рендерингу, але Canvas малює у 2D, а WebGL працює через 3D-конвеєр і має ще шар параметрів можливостей. На сторінці перевірки це два окремі блоки, і значення одного нічого не каже про інший.

Чи може антидетект-браузер перетворити WebGL на будь-яку відеокарту?

Це залежить від реалізації продукту. MostMate обрав шлях із двома положеннями, Real і Noise, де режим Noise дає різні результати малювання. Головне завжди в тому, щоб параметри всього середовища погоджувалися між собою, а не в тому, щоб виставити одне поле на якусь конкретну величину.

Підсумок

Суть WebGL-відбитка в тому, що браузер віддає сайтам параметри та поведінку рендерингу графічного середовища: параметри відповідають на питання «яка в тебе карта», а зображення на питання «як виглядає те, що ти малюєш». Для роботи з багатьма акаунтами питання ніколи не полягало в тому, щоб ховати відеокарту. Головне, щоб графічні параметри кожного середовища розповідали ту саму історію, що UA, часовий пояс і регіон виходу.

MostMate додає параметри типу WebGL image до конфігурації середовища й керує ними в одному місці; перевіряти та узгоджувати стає простіше. Створення середовища лише початок; звичка регулярно перевіряти і є довгостроковою змінною. Про роботу з іншими графічними параметрами повний вхід на головному сайті; а щоб зібрати для кількох акаунтів середовище з чіткими межами, можна завантажити MostMate і почати з першого середовища.

MOSTMATE

Безпечне керування кількома обліковими записами — це просто

Почніть із першого облікового запису й побудуйте з MostMate безпечнішу, розумнішу та ефективнішу роботу з кількома обліковими записами.

  • Незалежні профілі. Узгоджені ідентичності.
  • ШІ-автоматизація · Стан облікових записів · Командні операції
Завантажити MostMate