O que é WebGL Fingerprinting? Como Sua GPU Identifica Seu Navegador
Navegador & Dispositivo

O que é WebGL Fingerprinting? Como Sua GPU Identifica Seu Navegador

O WebGL fingerprinting extrai o nome do fornecedor da GPU, string do renderer e comportamento de shader do seu navegador para criar um identificador estável que persiste entre sessões e navegadores.

8 min de leitura·

O WebGL fingerprinting usa a API de gráficos 3D do seu navegador para ler o fornecedor, modelo e saída de renderização da sua GPU — produzindo um identificador de dispositivo que persiste em todos os navegadores na mesma máquina e não é afetado pela limpeza de cookies ou troca de redes. Você pode verificar o que seu navegador expõe agora mesmo no whatsmy.fyi.

Resumo

O WebGL fingerprinting explora a API WebGL — a mesma que renderiza jogos no navegador e mapas 3D — para extrair a string do fornecedor da GPU, o nome do modelo da GPU e a saída de renderização no nível de pixel. Cada modelo de GPU produz resultados sutilmente diferentes para comandos de renderização idênticos devido a diferenças no arredondamento de ponto flutuante, comportamento do driver e arquitetura de hardware. Combinado com outros sinais, os dados WebGL podem identificar exclusivamente 99,24% dos navegadores desktop. Nenhum armazenamento no seu dispositivo, nada para excluir, e uma VPN não consegue detê-lo.

O que é WebGL Fingerprinting?

O WebGL fingerprinting é uma técnica de rastreamento do navegador que abusa da API WebGL — uma interface JavaScript para renderizar gráficos 2D e 3D com aceleração de hardware — para ler características de GPU específicas do dispositivo. Ao contrário do rastreamento por cookies, não requer armazenamento e não é afetado pelo modo de navegação privada ou pela limpeza dos dados do navegador.

A técnica tem dois componentes complementares. O primeiro lê metadados de hardware estáticos diretamente das APIs do navegador: o nome do fornecedor da GPU, o modelo da GPU e a lista completa de extensões WebGL suportadas pelo seu driver. O segundo componente renderiza uma cena 3D oculta e lê de volta os dados de pixels — um processo que produz resultados sutilmente diferentes em cada combinação de hardware e driver.

O WebGL fingerprinting está intimamente relacionado ao canvas fingerprinting, mas visa uma camada diferente — e mais identificadora — do seu sistema. O canvas fingerprinting captura diferenças de renderização de fontes 2D; o WebGL fingerprinting alcança diretamente o hardware da GPU. Juntos, são dois dos sinais de maior entropia no kit de ferramentas de fingerprinting.

Como Funciona o WebGL Fingerprinting?

Uma impressão digital WebGL é montada em três estágios, cada um levando apenas alguns milissegundos e completamente invisível para o usuário.

Estágio 1 — Lendo Parâmetros de Hardware

O script chama gl.getParameter() com dezenas de constantes para extrair capacidades de hardware. A maioria dos valores é benigna por si só — tamanho máximo de textura, dimensões máximas de viewport, precisão de shader GLSL suportada. Mas uma extensão WebGL muda tudo.

A extensão WEBGL_debug_renderer_info expõe duas constantes projetadas para depuração: UNMASKED_VENDOR_WEBGL e UNMASKED_RENDERER_WEBGL. Quando consultadas, retornam a string exata do fornecedor da GPU sem máscara — por exemplo, "NVIDIA Corporation" — e a string completa do renderer da GPU — por exemplo, "NVIDIA GeForce RTX 4080/PCIe/SSE2". Essas strings sozinhas podem reduzir uma população de visitantes a menos de 100 indivíduos, de acordo com pesquisas da Inria e da KU Leuven.

Estágio 2 — Renderizando uma Cena 3D

O script cria um canvas WebGL oculto e renderiza uma cena complexa: gradientes, cálculos de iluminação e geometria transparente com coordenadas de textura específicas. Como a aritmética de ponto flutuante é tratada de forma diferente pelas unidades de shader de cada GPU — NVIDIA, AMD, Intel e Apple Silicon implementam comportamentos de arredondamento ligeiramente diferentes — os pixels resultantes diferem no nível binário entre hardwares, mesmo para código de shader GLSL idêntico.

Estágio 3 — Hash de Pixels via readPixels()

O script chama gl.readPixels() para extrair o buffer de pixels RGBA brutos da cena renderizada e faz hash dele — tipicamente com MurmurHash — em um valor de impressão digital compacto. Esse hash é estável entre sessões do navegador, modo incógnito e reinicializações. Só muda quando o driver da GPU é atualizado ou o hardware físico é substituído.

// Stage 1 — read unmasked GPU strings via the debug extension
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl');

const ext = gl.getExtension('WEBGL_debug_renderer_info');
if (ext) {
  const vendor   = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);
  const renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);
  // e.g. "NVIDIA Corporation", "NVIDIA GeForce RTX 4080/PCIe/SSE2"
}

// Stage 2 — collect hardware capability parameters
const params = {
  maxTextureSize:     gl.getParameter(gl.MAX_TEXTURE_SIZE),
  maxViewportDims:    gl.getParameter(gl.MAX_VIEWPORT_DIMS),
  supportedExts:      gl.getSupportedExtensions(),
  highFloatPrecision: gl.getShaderPrecisionFormat(
    gl.FRAGMENT_SHADER, gl.HIGH_FLOAT
  ).precision,
};

// Stage 3 — render a scene and extract pixels
// (abbreviated; real scripts render complex GLSL shaders)
const pixels = new Uint8Array(4 * canvas.width * canvas.height);
gl.readPixels(
  0, 0, canvas.width, canvas.height,
  gl.RGBA, gl.UNSIGNED_BYTE, pixels
);
// Hash 'pixels' → stable GPU fingerprint

Quão Única é uma Impressão Digital WebGL?

O WebGL é um dos sinais individuais de maior entropia no browser fingerprinting. A camada de parâmetros da GPU sozinha gera 10–15 bits de entropia — suficiente para identificar a marca e o modelo do seu hardware dentro de um pequeno grupo. O hash de renderização adiciona maior discriminação entre dispositivos com modelos de GPU idênticos, mas versões de driver diferentes.

DescobertaValorFonte
Entropia das strings de fornecedor + renderer da GPU10–15 bitsCao et al., NDSS 2017
Entropia da saída de renderização WebGL sozinha~5,7 bitsPesquisa Fingerprint.com
Usuários desktop identificados unicamente (sinais combinados)99,24%Pesquisa Fingerprint.com
Usuários mobile identificados unicamente (sinais combinados)94,5%Pesquisa Fingerprint.com
População reduzida pela string renderer da GPU sozinha< 0,01% dos visitantesPesquisa Inria / KU Leuven
Suporte de navegador WebGL 2.0 (Chrome, Edge, Safari)95–99%BrowserLeaks WebGL Test

Quem Usa WebGL Fingerprinting no Mundo Real?

Redes de Publicidade

Empresas de ad-tech usam o WebGL fingerprinting para rastrear usuários entre sites para direcionamento comportamental e controle de frequência — o mesmo objetivo anteriormente servido pelos cookies de terceiros. À medida que o Safari bloqueou cookies de terceiros por padrão e o Chrome avançou para a descontinuação, o fingerprinting no nível de hardware tornou-se uma atraente substituição de cookies porque não requer armazenamento nem interação do usuário.

Detecção de Fraudes e Mitigação de Bots

Plataformas de segurança usam dados WebGL como sinal de detecção de bots. Navegadores automatizados rodando Chrome headless ou Puppeteer frequentemente relatam strings de renderer GPU inconsistentes com seu user-agent declarado — por exemplo, um user-agent de "Chrome no Windows" combinado com uma string de renderer Mesa somente software. Empresas como Fingerprint.com e Castle.io implantam o WebGL fingerprinting como parte de sua pilha de inteligência de dispositivo.

Rastreamento Entre Navegadores

Como a string do renderer WebGL e o hash de pixels são derivados do hardware físico em vez do estado do navegador, eles permanecem consistentes entre diferentes navegadores instalados na mesma máquina. Um usuário que alterna entre Chrome, Firefox e Edge para evitar o rastreamento produzirá a mesma string de renderer GPU em cada navegador — permitindo vinculação entre navegadores que sistemas baseados em cookies não conseguem alcançar.

Como se Proteger do WebGL Fingerprinting

  • Tor Browser (proteção mais forte): O Tor Browser desativa a função gl.readPixels() completamente e restringe o WebGL a um modo de capacidade mínima, tornando o fingerprinting baseado em renderização impossível.
  • Brave Browser (recomendado para uso diário): O Brave aplica sua técnica Farbling ao WebGL: ruído aleatório por sessão e por site é injetado na saída de pixels do canvas e WebGL, tornando o hash de renderização diferente em cada visita ao site.
  • Firefox com privacy.resistFingerprinting: Essa flag desabilita completamente a extensão WEBGL_debug_renderer_info, retornando valores genéricos em vez das suas strings reais de GPU.
  • Safari em dispositivos Apple: O Safari reporta uma string genérica "Apple GPU" em vez de modelos de chip específicos e aleatoriza a saída do canvas.
  • uBlock Origin (usuários avançados): Em modo médio ou difícil, bloqueia a maioria dos scripts de fingerprinting de terceiros antes que possam ser executados.
  • O que uma VPN não consegue fazer: Uma VPN roteia seu tráfego por um túnel criptografado e oculta seu endereço IP, mas não tem efeito na saída WebGL. Verifique se sua VPN está funcionando (no nível de IP) no whatsmy.fyi, mas saiba que não aborda o fingerprinting.

Perguntas Frequentes

O que o WebGL fingerprinting revela sobre meu hardware?

No mínimo: o fabricante da sua GPU (NVIDIA, AMD, Intel, Apple, Qualcomm), o nome do modelo da GPU e às vezes a versão do driver — tudo exposto como texto simples via a extensão WEBGL_debug_renderer_info.

O WebGL fingerprinting funciona no modo incógnito ou privado?

Sim. A navegação privada impede que o navegador salve cookies, histórico e dados de formulário no disco — mas não altera o hardware da GPU ou o driver.

O WebGL fingerprinting é mais poderoso que o canvas fingerprinting?

Eles visam dimensões complementares da unicidade do dispositivo. O canvas fingerprinting captura diferenças de renderização de fontes 2D. O WebGL fingerprinting expõe diretamente os metadados de fornecedor e modelo da GPU, e captura diferenças de ponto flutuante no nível de shader 3D. A maioria das plataformas comerciais de fingerprinting implanta ambos simultaneamente. Veja o guia de canvas fingerprinting para uma comparação lado a lado.

O WebGL fingerprinting pode me rastrear em diferentes navegadores no mesmo computador?

Sim — essa é uma de suas capacidades mais significativas. Como as strings de fornecedor e renderer da GPU são derivadas do hardware, elas são idênticas quer você use Chrome, Firefox, Edge ou qualquer outro navegador na mesma máquina.

Artigos Relacionados

Verifique seu endereço IP, localização e pontuação de privacidade — instantaneamente.

Zero logs. Zero rastreamento. Zero APIs externas.

Executar a verificação agora →

Artigos relacionados

O que é WebGL Fingerprinting? Como Sua GPU Identifica Seu Navegador | whatsmy.fyi