WebGL Vendor fingerprinting считывает производителя GPU и точное название модели из 3D graphics API браузера для создания постоянного идентификатора устройства — без хранения чего-либо на машине. Проверьте, что раскрывает ваш браузер, прямо сейчас на whatsmy.fyi.
TL;DR
WebGL vendor fingerprinting использует расширение браузера WEBGL_debug_renderer_info для считывания двух строк, раскрываемых драйвером GPU: название производителя (например, NVIDIA Corporation) и строку рендерера (например, ANGLE (NVIDIA GeForce RTX 3050 Direct3D11 vs_5_0 ps_5_0)). Эти строки достаточно специфичны для идентификации модели GPU, драйверного бэкенда — информация, которая редко меняется и не может быть удалена как cookie.
Что такое WebGL Vendor Fingerprinting?
WebGL vendor fingerprinting — техника отслеживания, эксплуатирующая расширение WEBGL_debug_renderer_info — функцию отладки, встроенную в спецификацию WebGL — для извлечения детальной информации о вашем графическом оборудовании. В отличие от canvas fingerprinting, который определяет различия GPU из вариаций рендеринга на уровне пикселей, WebGL vendor fingerprinting напрямую спрашивает драйвер: «Кто тебя сделал и как тебя называют?»
Результат — пара строк: UNMASKED_VENDOR_WEBGL и UNMASKED_RENDERER_WEBGL — идентифицирующих производителя GPU, название модели, графический бэкенд (Direct3D, Metal, Vulkan или OpenGL) и нередко версию драйвера. Вместе эти два значения несут 10–15 бит энтропии, делая их одними из наиболее информативных отдельных атрибутов в инструментарии отпечатков браузера.
Как работает WebGL Vendor Fingerprinting?
Шаг 1 — Запрос расширения отладки
Скрипт вызывает gl.getExtension("WEBGL_debug_renderer_info") на контексте WebGL. Большинство браузеров раскрывают это расширение по умолчанию; браузеры с усиленной защитой конфиденциальности могут вернуть null или общую строку.
Шаг 2 — Считывание строк производителя и рендерера
С доступным расширением скрипт дважды вызывает gl.getParameter() — для ext.UNMASKED_VENDOR_WEBGL (например, Google Inc. (NVIDIA)) и для ext.UNMASKED_RENDERER_WEBGL. Это сырые строки драйвера — не значения, которые браузер или ОС очищают перед возвратом.
// WebGL vendor fingerprinting — как скрипты извлекают идентичность GPU
function getWebGLVendorFingerprint() {
const canvas = document.createElement('canvas');
const gl =
canvas.getContext('webgl') ||
canvas.getContext('experimental-webgl');
if (!gl) return { vendor: 'unsupported', renderer: 'unsupported' };
const ext = gl.getExtension('WEBGL_debug_renderer_info');
if (!ext) {
// Браузер защищает вас (Brave / Firefox resistFingerprinting)
return { vendor: 'protected', renderer: 'protected' };
}
const vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
// Пример вывода:
// vendor: "Google Inc. (NVIDIA)"
// renderer: "ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU
// (0x000025A2) Direct3D11 vs_5_0 ps_5_0, D3D11)"
return { vendor, renderer };
}Как выглядят строки рендерера?
| Производитель GPU | Пример строки RENDERER |
|---|---|
| NVIDIA (Windows) | ANGLE (NVIDIA, NVIDIA GeForce RTX 3050 Laptop GPU (0x000025A2) Direct3D11 vs_5_0 ps_5_0, D3D11) |
| AMD (Windows) | ANGLE (AMD, AMD Radeon RX 6600 Direct3D11 vs_5_0 ps_5_0, D3D11) |
| Intel (Linux / Mesa) | ANGLE (Intel, Vulkan 1.3.267 (Intel(R) UHD Graphics (TGL GT2) (0x00009A78)), Intel open-source Mesa driver) |
| Apple Silicon | ANGLE (Apple, ANGLE Metal Renderer: Apple M2 Max, Unspecified Version) |
Насколько уникален WebGL Vendor Fingerprint?
| Находка | Значение | Источник |
|---|---|---|
| Вклад энтропии строки рендерера GPU | 10–15 бит | EFF Cover Your Tracks |
| Доля топ-10 000 сайтов, использующих WebGL fingerprinting | >8% | Princeton Web Transparency & Accountability Project, 2020 |
| Стабильность GPU fingerprinting между перезапусками браузера | Постоянна до смены оборудования | Исследование DrawNApart GPU (arXiv 2022) |
Как защититься от WebGL Vendor Fingerprinting?
- Brave Browser (рекомендуется для ежедневного использования): Система Farbling Brave рандомизирует строки рендерера и производителя WebGL для каждой сессии и сайта.
- Firefox с
privacy.resistFingerprinting: Заставляет Firefox возвращать общую, неидентифицирующую строку рендерера вместо реальных данных GPU. - Firefox
webgl.enable-debug-renderer-info: false: Более точная опция вabout:config, отключающая только расширение отладки. - Tor Browser (наиболее сильная защита): Tor нормализует весь вывод WebGL, так что каждый пользователь возвращает идентичные данные рендерера.
- VPN не помогает: VPN не влияет на WebGL fingerprinting. Строка рендерера GPU считывается из локальных API, а не из сетевого подключения. Проверьте IP-уровень на whatsmy.fyi.
Часто задаваемые вопросы
Скрывает ли режим инкогнито строку рендерера WebGL?
Нет. Режим инкогнито не меняет оборудование браузера. Строка рендерера GPU идентична в режиме инкогнито и в обычном окне.
Что возвращает headless браузер?
Headless браузеры, не имеющие реального GPU, обычно возвращают программный резервный рендерер: Google SwiftShader в Chromium или Mesa OffScreen в Firefox. Реальные пользовательские устройства почти никогда не возвращают эти значения при обычном просмотре. Антибот-системы считают их высоконадёжными индикаторами бота.
Связанные статьи
- Что такое WebGL fingerprinting? Как ваш GPU идентифицирует браузер — более широкое руководство по WebGL как поверхности fingerprinting
- Что такое Canvas Fingerprinting? Как сайты отслеживают без cookies — как различия 2D-рендеринга canvas дополняют данные WebGL vendor
- Что такое отпечаток браузера? Как сайты отслеживают вас без cookies — полное руководство по всем сигналам отпечатков



