O canvas fingerprinting (impressão digital por canvas) é uma técnica de rastreamento do navegador que desenha uma imagem invisível usando a API HTML5 Canvas e lê os dados de pixels resultantes para criar um identificador único do seu dispositivo — sem cookies, sem armazenamento, nada para excluir. Você pode testar se o seu navegador expõe uma impressão digital de canvas agora mesmo no whatsmy.fyi.
Resumo
O canvas fingerprinting é um método de rastreamento que instrui seu navegador a desenhar uma imagem oculta e depois lê os dados de pixels para identificar seu dispositivo. Funciona porque sua GPU, sistema operacional e renderizador de fontes introduzem individualmente diferenças minúsculas e consistentes na forma como essa imagem é desenhada — invisíveis a olho nu, mas únicas para a sua combinação de hardware e software.
O que é Canvas Fingerprinting?
O canvas fingerprinting explora a API Canvas do HTML5, um recurso projetado para permitir que navegadores desenhem gráficos diretamente na janela do navegador. Todo navegador moderno oferece suporte a ela — o que significa que a superfície de rastreamento é praticamente universal. Quando um script de fingerprinting é executado, ele cria um elemento canvas fora da tela, completamente invisível para você, desenha texto e formas nele e depois chama canvas.toDataURL() para ler os dados de pixels como uma string Base64. Essa string é então transformada em uma impressão digital compacta e estável.
O que torna o canvas fingerprinting poderoso é que a saída de pixels não é perfeitamente consistente entre dispositivos. Os mesmos comandos de desenho produzem resultados sutilmente diferentes dependendo do fabricante da GPU, da versão do driver gráfico, do sistema operacional, das fontes instaladas e das configurações de anti-aliasing. Duas máquinas que parecem idênticas no papel — mesmo SO, mesma versão do navegador — ainda podem produzir um hash de canvas diferente porque seus drivers de GPU diferem. A ferramenta Cover Your Tracks da Electronic Frontier Foundation classifica consistentemente a saída do canvas entre os sinais de maior entropia no kit de ferramentas de browser fingerprinting.
O canvas fingerprinting é um componente da família mais ampla de técnicas de browser fingerprinting. Ao contrário dos cookies, não requer armazenamento no seu dispositivo e não é afetado por limpar seu histórico de navegação, ativar o modo privado ou trocar de rede.
Como Funciona o Canvas Fingerprinting?
O processo ocorre em quatro etapas, cada uma levando apenas milissegundos e completamente invisível para o usuário.
Etapa 1 — Desenhando o Canvas
Um trecho de JavaScript cria um elemento canvas fora da tela e desenha uma combinação de texto, formas e gradientes usando fontes, cores e modos de mesclagem específicos. A complexidade do desenho importa: formas geométricas simples produzem menos variação; texto rico em fontes com sombras e gradientes produz mais.
Etapa 2 — Renderização pela GPU e SO
O navegador passa as instruções de desenho para a pilha gráfica do sistema operacional. No Windows, o ClearType cuida da renderização de fontes com sub-pixels. No macOS, o Core Text aplica seu próprio algoritmo de hinting. No Linux, o FreeType renderiza de forma diferente. Sua GPU lida com o anti-aliasing e a interpolação de cores. Cada camada introduz variações consistentes mas específicas do dispositivo no nível de pixel.
Etapa 3 — Extração de Pixels
O script chama canvas.toDataURL() para ler a imagem completa como um PNG codificado em Base64. Essa string codifica cada valor de pixel — incluindo as variações de sub-pixels introduzidas durante a renderização. Como alternativa, os scripts podem usar canvas.getImageData() para acessar o buffer de pixels brutos diretamente.
Etapa 4 — Hashing
A string Base64 ou o buffer de pixels brutos é submetido a hash — comumente usando MurmurHash ou MD5 — para produzir um valor de impressão digital compacto e estável. Esse hash é transmitido ao servidor de rastreamento e armazenado como identificador do dispositivo.
// Exemplo mínimo de canvas fingerprinting
function getCanvasFingerprint() {
const canvas = document.createElement('canvas');
canvas.width = 280;
canvas.height = 60;
const ctx = canvas.getContext('2d');
// Background — color blending varies by GPU
ctx.fillStyle = 'rgb(255, 102, 0)';
ctx.fillRect(10, 10, 100, 30);
// Text — font rendering varies by OS (ClearType / Core Text / FreeType)
ctx.fillStyle = '#069';
ctx.font = '18px Arial';
ctx.fillText('Canvas fingerprint', 2, 45);
// Shadow — shadow rendering varies by graphics driver
ctx.shadowColor = 'rgba(0, 0, 0, 0.5)';
ctx.shadowBlur = 6;
ctx.shadowOffsetX = 2;
ctx.shadowOffsetY = 3;
// Returns a Base64 string that differs subtly across devices
// even with identical browser and OS versions
return canvas.toDataURL();
}Quão Única é uma Impressão Digital de Canvas?
O canvas fingerprinting contribui com uma entropia significativa para a impressão digital geral do navegador. Os resultados de pesquisas variam conforme o conjunto de dados e a metodologia, mas a direção é consistente: a saída do canvas é um identificador de alto sinal, especialmente quando combinada com outros atributos do navegador.
| Descoberta | Valor | Fonte |
|---|---|---|
| Entropia do canvas em isolamento | 8–10 bits | EFF Cover Your Tracks |
| Navegadores identificáveis unicamente via canvas | 83,6% | BrowserLeaks |
| Parcela dos 20.000 principais sites usando canvas fingerprinting | 12,7% | ACM Internet Measurement Conference, 2025 |
| Unicidade geral no mundo real (8 milhões de impressões digitais) | 33,6% | Estudo de campo acadêmico, 2018 |
| Unicidade do canvas em dispositivos móveis | 62% | ACM Internet Measurement Conference, 2025 |
A diferença entre resultados laboratoriais (80–90% de unicidade) e dados do mundo real (33,6%) existe porque muitas configurações populares produzem saídas de canvas idênticas. Todos os MacBook Pros rodando o mesmo macOS e versão do Safari, por exemplo, compartilham um hash de canvas. A unicidade é mais alta em dispositivos com combinações incomuns de GPU e driver. Dispositivos móveis pontuam mais alto porque a fragmentação de hardware é maior.
Quem Usa Canvas Fingerprinting no Mundo Real?
Redes de Publicidade
Empresas de ad-tech usam o canvas fingerprinting para rastrear usuários entre sites para direcionamento comportamental e controle de frequência. Tornou-se especialmente valioso com a descontinuação dos cookies de terceiros nos principais navegadores — o canvas fingerprinting cumpre o mesmo papel de identificação sem precisar de cookies ou consentimento do usuário na maioria das implementações atuais.
Plataformas de Detecção de Fraudes
Empresas de segurança como Fingerprint (anteriormente FingerprintJS) e Castle.io usam canvas fingerprinting para detectar invasões de contas, preenchimento de credenciais e atividade de bots. Se a impressão digital de canvas de um dispositivo não corresponde à registrada para uma conta, ela aciona um sinal de risco para revisão. Esse caso de uso geralmente se qualifica sob a base de interesse legítimo do GDPR sem exigir consentimento explícito.
Aplicação de Paywall e Acesso Medido
Editoras de notícias e serviços de assinatura usam o canvas fingerprinting para aplicar limites de artigos em usuários que limpam cookies para redefinir seu contador de acesso medido. Como a impressão digital é derivada do hardware em vez de dados armazenados, ela persiste mesmo após a exclusão de cookies e a navegação privada.
O Canvas Fingerprinting é Legal?
Sob o GDPR na Europa, o canvas fingerprinting constitui processamento de dados pessoais quando o hash resultante pode ser razoavelmente vinculado a um indivíduo. A autoridade francesa de proteção de dados (CNIL) nomeou explicitamente o browser fingerprinting como exigindo consentimento informado, a menos que uma exceção restrita de interesse legítimo se aplique. No âmbito da CCPA e CPRA dos EUA, os dados de fingerprinting são tratados como informações pessoais sujeitas a direitos de exclusão, e várias ações coletivas foram movidas contra empresas de ad-tech que usam fingerprinting sem divulgação. No Brasil, a LGPD (Lei Geral de Proteção de Dados) também exige base legal adequada para o processamento de dados pessoais, incluindo identificadores derivados de fingerprinting.
A Orientação de Fingerprinting do W3C reconhece o canvas como um "vetor de fingerprinting de alta fidelidade" e aconselha os autores de especificações web a considerar o risco de fingerprinting ao projetar novas APIs do navegador. A aplicação das leis varia entre jurisdições.
Como se Proteger do Canvas Fingerprinting
A prevenção completa é difícil — as defesas eficazes envolvem trade-offs de compatibilidade web. Estas opções são classificadas da mais forte à mais prática para uso diário:
- Navegador Tor (proteção mais forte): O Tor normaliza a saída do canvas para que todo usuário do Tor retorne um hash de canvas idêntico, tornando a identificação individual impossível. O trade-off é a navegação mais lenta devido à rede Tor.
- Navegador Brave (recomendado para uso diário): O Brave usa uma técnica chamada Farbling — injeta um pequeno valor de ruído aleatório por sessão na saída de pixels do canvas. Sua impressão digital muda a cada sessão e por site, tornando o rastreamento entre sites não confiável, mas permanecendo visualmente indistinguível para você.
- Firefox com
privacy.resistFingerprinting: Definir essa flag comotrueemabout:configfaz o Firefox retornar saída de canvas uniforme, semelhante ao Tor Browser. Está desativado por padrão; alguns sites que dependem de gráficos baseados em canvas podem se comportar de forma inesperada. - Extensão CanvasBlocker (Firefox e Chrome): Esta extensão intercepta chamadas
canvas.toDataURL()egetImageData()e as bloqueia completamente ou retorna dados aleatorizados. Útil para usuários que precisam de proteção de impressão digital sem trocar de navegador. - Evite fontes raras e drivers de GPU incomuns: Manter os drivers atualizados e usar hardware padrão reduz a unicidade da sua saída de canvas.
- Use uma VPN — mas entenda seus limites: Uma VPN mascara seu endereço IP, mas não tem nenhum efeito na saída do canvas. Verifique se sua VPN está funcionando no whatsmy.fyi.
Perguntas Frequentes
O canvas fingerprinting funciona no modo privado/incógnito?
Sim. O modo de navegação privada impede que seu navegador salve histórico, cookies e dados de formulário no disco — mas não altera sua GPU, driver gráfico ou renderizador de fontes do SO. Sua impressão digital de canvas é idêntica no modo incógnito e em uma janela normal. Apenas navegadores com aleatorização ativa de impressão digital, como o Brave ou o Tor Browser, se comportam de forma diferente.
Uma VPN pode impedir o canvas fingerprinting?
Não. Uma VPN muda seu endereço IP visível e roteia o tráfego por um túnel criptografado, mas não toca na pilha de renderização do navegador. O canvas fingerprinting lê dados de renderização no nível da GPU e do SO, completamente não afetados por qual servidor seu tráfego passa. Para se proteger do canvas fingerprinting, use o Brave Browser, Firefox com privacy.resistFingerprinting, ou Tor Browser.
O canvas fingerprinting é o mesmo que o rastreamento por cookies?
Não. O rastreamento por cookies armazena um arquivo identificador no seu dispositivo, que você pode visualizar, excluir ou bloquear. O canvas fingerprinting não armazena nada — reconstrói um identificador a partir das características de hardware e software do seu dispositivo em cada visita. Limpar cookies, excluir o armazenamento local ou bloquear cookies de terceiros não tem efeito no canvas fingerprinting.
Desativar o JavaScript interrompe o canvas fingerprinting?
Sim — o canvas fingerprinting requer JavaScript para ser executado. No entanto, desativar o JavaScript quebra a maioria dos sites modernos. Uma abordagem mais prática é usar o Farbling do Brave ou a extensão CanvasBlocker, que interceptam chamadas da API Canvas especificamente sem desativar a funcionalidade geral do JavaScript.
Como o canvas fingerprinting difere do WebGL fingerprinting?
Ambos exploram o pipeline de renderização gráfica do navegador, mas visam APIs diferentes. O canvas fingerprinting usa a API Canvas 2D e é sensível às diferenças de renderização de fontes e texto com sub-pixels. O WebGL fingerprinting usa a API de gráficos 3D e expõe diretamente o nome do fornecedor da GPU, o modelo da GPU e a versão do driver. Eles são frequentemente implantados juntos porque capturam dimensões complementares da unicidade do dispositivo. Veja o guia de WebGL fingerprinting para mais detalhes.
O canvas fingerprinting é preciso o suficiente para substituir cookies completamente?
Por conta própria, o canvas fingerprinting é insuficiente — a unicidade no mundo real em grandes conjuntos de dados é de cerca de 33,6%. Mas quando combinado com dados do renderer WebGL, audio fingerprinting, dimensões de tela, fuso horário e concorrência de hardware, a impressão digital combinada se aproxima da precisão no nível de cookie. Plataformas comerciais de fingerprinting geralmente combinam 30 ou mais sinais, com o canvas como um dos componentes individuais de maior contribuição.
Artigos Relacionados
- O que é Browser Fingerprinting? Como Sites Rastreiam Você Sem Cookies — o guia completo de todos os sinais de fingerprinting combinados
- O que é WebGL Fingerprinting? Como Sua GPU Identifica Seu Navegador — como a API de gráficos 3D expõe o fornecedor e a versão do driver da GPU
- O que é Áudio Fingerprinting? Como o AudioContext Rastreia Seu Navegador — como a pilha de áudio do seu dispositivo produz um identificador único
- O que é Font Fingerprinting? Como Fontes Instaladas Rastreiam Você — como suas fontes instaladas contribuem para sua impressão digital do navegador



