O WebGL vendor fingerprinting (impressão digital por fornecedor WebGL) lê o fabricante e o nome exato do modelo da sua GPU a partir da API de gráficos 3D do navegador para construir um identificador persistente de dispositivo — sem armazenar nada na sua máquina. Você pode verificar o que seu navegador expõe agora mesmo no whatsmy.fyi.
Resumo
O WebGL vendor fingerprinting usa uma extensão do navegador chamada WEBGL_debug_renderer_info para ler duas strings que o driver da sua GPU expõe: o nome do fornecedor (por exemplo, NVIDIA Corporation) e a string do renderer (por exemplo, ANGLE (NVIDIA GeForce RTX 3050 Direct3D11 vs_5_0 ps_5_0)). Essas strings são específicas o suficiente para identificar seu modelo de GPU, backend de driver e às vezes até a versão do driver — informações que raramente mudam e não podem ser limpas como um cookie.
O que é WebGL Vendor Fingerprinting?
O WebGL vendor fingerprinting é uma técnica de rastreamento do navegador que explora a extensão WEBGL_debug_renderer_info — um recurso de depuração integrado na especificação WebGL — para extrair informações detalhadas sobre seu hardware gráfico. Ao contrário do canvas fingerprinting, que infere diferenças de GPU a partir de variações de renderização no nível de pixel, o WebGL vendor fingerprinting pergunta diretamente ao driver: "Quem te fabricou e como você se chama?"
O resultado é um par de strings — UNMASKED_VENDOR_WEBGL e UNMASKED_RENDERER_WEBGL — que identificam o fabricante da sua GPU, nome do modelo, backend gráfico (Direct3D, Metal, Vulkan ou OpenGL) e frequentemente a versão do driver. Juntos, esses dois valores carregam 10–15 bits de entropia, tornando-os um dos atributos individuais de maior sinal no conjunto de ferramentas de browser fingerprinting.
A técnica foi originalmente destinada a desenvolvedores depurando problemas de desempenho gráfico. Nunca foi projetada como uma superfície de rastreamento — mas como expõe identificadores no nível de hardware que são estáveis entre sessões do navegador, janelas privadas e até reinstalações do SO, tornou-se um dos sinais de fingerprinting mais amplamente implantados na web.
Como Funciona o WebGL Vendor Fingerprinting?
O processo de extração requer apenas algumas linhas de JavaScript e é concluído em menos de um milissegundo.
Etapa 1 — Solicitar a Extensão de Depuração
O script chama gl.getExtension("WEBGL_debug_renderer_info") em um contexto WebGL. A maioria dos navegadores expõe essa extensão por padrão; navegadores com proteções de privacidade podem retornar null ou uma string genérica.
Etapa 2 — Ler as Strings de Fornecedor e Renderer
Com a extensão disponível, o script chama gl.getParameter() duas vezes — uma para ext.UNMASKED_VENDOR_WEBGL (por exemplo, Google Inc. (NVIDIA)) e uma para ext.UNMASKED_RENDERER_WEBGL. Essas são strings brutas do driver — não valores que o navegador ou SO sanitiza antes de retornar.
Etapa 3 — Combinar com Outros Sinais
A string do renderer é hasheada e combinada com extensões WebGL suportadas, tamanho máximo de textura, precisão do shader e outros parâmetros WebGL para produzir uma impressão digital composta de GPU.
// WebGL vendor fingerprinting — how tracking scripts extract GPU identity
function getWebGLVendorFingerprint() {
const canvas = document.createElement('canvas');
const gl =
canvas.getContext('webgl') ||
canvas.getContext('experimental-webgl');
if (!gl) return { vendor: 'unsupported', renderer: 'unsupported' };
// Request the debug extension that exposes unmasked driver strings
const ext = gl.getExtension('WEBGL_debug_renderer_info');
if (!ext) {
// Browser is protecting you (Brave / Firefox resistFingerprinting)
return { vendor: 'protected', renderer: 'protected' };
}
// These strings directly identify your GPU brand and model
const vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);
const renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
// Example output:
// 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 };
}Como São as Strings de Renderer no Mundo Real?
| Fornecedor GPU | Exemplo de String 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) |
Quão Única é uma Impressão Digital de Fornecedor WebGL?
| Descoberta | Valor | Fonte |
|---|---|---|
| Contribuição de entropia da string do renderer de GPU | 10–15 bits | EFF Cover Your Tracks |
| Participação dos 10.000 principais sites usando WebGL fingerprinting | >8% | Princeton Web Transparency & Accountability Project, 2020 |
| Estabilidade do GPU fingerprinting entre reinicializações do navegador | Permanente até mudança de hardware | Estudo DrawNApart GPU fingerprinting (arXiv 2022) |
| Sinais rastreados por fornecedores modernos de anti-fraude | 100+ | Fingerprint.com |
Quem Usa WebGL Vendor Fingerprinting no Mundo Real?
Plataformas de Detecção de Fraudes
Empresas de segurança como a Fingerprint (anteriormente FingerprintJS) usam a string do renderer WebGL como sinal central de identidade do dispositivo. Quando uma tentativa de login chega de um dispositivo cuja impressão digital de GPU não corresponde a nenhuma sessão anterior dessa conta, ela aciona uma escalada de risco.
Ad-Tech e Rastreamento Entre Sites
Redes de publicidade combinam a string do renderer WebGL com saída do canvas, impressão digital de áudio, dimensões de tela e timezone para construir um identificador de dispositivo entre sites que sobrevive à exclusão de cookies.
Detecção de Bots e Automação
Bots automatizados rodando em ambientes headless ou containerizados retornam valores de renderer anômalos — frequentemente Google SwiftShader (renderer de software fallback do Chrome) ou Mesa OffScreen. Um dispositivo humano real quase nunca retorna esses valores na navegação normal.
Aplicação de Paywall
Editoras que medem o acesso a artigos usam a string do renderer de GPU junto com impressões digitais de canvas e áudio para identificar visitantes que retornam limpando cookies para redefinir seu contador de artigos.
O WebGL Vendor Fingerprinting é Legal?
Sob o GDPR, qualquer identificador persistente que possa razoavelmente ser vinculado a um indivíduo — incluindo uma string de renderer de GPU usada para re-identificação — constitui processamento de dados pessoais. A CNIL francesa listou explicitamente o browser fingerprinting como uma técnica que requer consentimento informado. Sob CCPA e CPRA dos EUA, dados de fingerprinting são classificados como informações pessoais sujeitas a direitos de exclusão.
Como se Proteger do WebGL Vendor Fingerprinting
- Brave Browser (recomendado para uso diário): O sistema Farbling integrado do Brave randomiza as strings do renderer e do fornecedor WebGL por sessão e por site. Cada site recebe uma descrição de GPU ligeiramente diferente, tornando o rastreamento entre sites por string de renderer não confiável. Nenhuma configuração é necessária.
- Firefox com
privacy.resistFingerprinting: Definir esta flag comotruenoabout:configfaz o Firefox retornar uma string de renderer genérica e não identificadora em vez dos dados reais da GPU. O Tor Browser a ativa por padrão. - Firefox
webgl.enable-debug-renderer-info: false: Uma opção mais direcionada noabout:configque desabilita apenas a extensão de depuração — o restante do WebGL continua funcionando normalmente. - Extensão WebGL Fingerprint Defender: Disponível para Chrome e Firefox, intercepta chamadas da extensão
WEBGL_debug_renderer_infoe retorna uma string de renderer randomizada ou falsificada. - Tor Browser (proteção mais forte): O Tor normaliza toda a saída WebGL para que cada usuário retorne dados de renderer idênticos, eliminando completamente a identificação baseada em GPU.
Observe que uma VPN não tem nenhum efeito no WebGL fingerprinting. A string do renderer de GPU é lida das APIs locais do navegador, não da sua conexão de rede. Verifique se sua VPN está realmente ocultando seu endereço IP no whatsmy.fyi.
Perguntas Frequentes
Qual é a diferença entre vendor e renderer no WebGL fingerprinting?
Eles são dois aspectos da mesma técnica. A string de fornecedor (UNMASKED_VENDOR_WEBGL) identifica o fabricante da GPU — tipicamente NVIDIA, AMD, Intel, Apple ou uma camada de tradução como Google (ANGLE). A string de renderer (UNMASKED_RENDERER_WEBGL) identifica o modelo específico da GPU, o backend gráfico e frequentemente a versão do driver. Ambas são lidas na mesma chamada de API.
O modo de navegação privada oculta minha string de renderer WebGL?
Não. O modo incógnito e privado impede que seu navegador salve histórico e cookies, mas não muda o hardware em que seu navegador é executado. A string de renderer da sua GPU é idêntica no modo privado e em uma janela normal.
Como o WebGL vendor fingerprinting difere do canvas fingerprinting?
O canvas fingerprinting infere diferenças de GPU indiretamente — desenha uma imagem e analisa variações de renderização no nível de pixel causadas pelo seu hardware. O WebGL vendor fingerprinting consulta o driver da GPU diretamente, lendo strings explícitas de fabricante e modelo. Eles são tipicamente implantados juntos porque capturam dimensões complementares da unicidade do dispositivo. Veja o guia de canvas fingerprinting para uma comparação detalhada.
Artigos Relacionados
- O que é WebGL Fingerprinting? Como Sua GPU Identifica Seu Navegador — o guia mais amplo sobre WebGL como superfície de fingerprinting, incluindo técnicas de hash de pixel
- O que é Canvas Fingerprinting? Como Sites Rastreiam Você Sem Cookies — como diferenças de renderização 2D do canvas complementam os dados do fornecedor WebGL
- O que é Browser Fingerprinting? Como Sites Rastreiam Você Sem Cookies — o guia completo de todos os sinais de fingerprinting combinados
- O que é Áudio Fingerprinting? Como o AudioContext Rastreia Seu Navegador — como a pilha de áudio do seu dispositivo produz um identificador persistente junto com o WebGL



