WebGL Vendor: производитель GPU используется для слежки
Браузер и устройство

WebGL Vendor: производитель GPU используется для слежки

WebGL Vendor Renderer — строки производителя и модели GPU — позволяют сайтам идентифицировать видеокарту и водитель без cookies или разрешений.

8 мин чтения·

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 SiliconANGLE (Apple, ANGLE Metal Renderer: Apple M2 Max, Unspecified Version)

Насколько уникален WebGL Vendor Fingerprint?

НаходкаЗначениеИсточник
Вклад энтропии строки рендерера GPU10–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. Реальные пользовательские устройства почти никогда не возвращают эти значения при обычном просмотре. Антибот-системы считают их высоконадёжными индикаторами бота.

Связанные статьи

Проверьте свой IP-адрес, местоположение и оценку конфиденциальности — мгновенно.

Без логов. Без слежки. Без внешних API.

Запустить проверку →

Похожие статьи

WebGL Vendor: производитель GPU используется для слежки | whatsmy.fyi