Como a Impressão Digital do Navegador Funciona: um Desmembramento Completo dos Parâmetros
17/10/2025

Impressão digital do navegador é um método de identificar um usuário pela combinação de características e parâmetros do navegador e do dispositivo sem usar cookies ou outros dados armazenados. Quando você visita um site, um script especial coleta informações sobre seu ambiente (sistema operacional, versão do navegador, configurações de idioma, fuso horário, resolução de tela, lista de fontes, etc.) e cria um identificador único, a impressão digital do navegador. Este identificador persiste por mais tempo que cookies ordinários e ajuda os sites a reconhecerem seu navegador em visitas repetidas, mesmo que o usuário limpe os cookies ou abra o site no modo de navegação anônima. Devido a isso, os sites podem rastrear as ações de um usuário em diferentes sessões e recursos, ligando-as a um perfil único.
Uma impressão digital do navegador é semelhante a uma impressão digital humana, mas a unicidade aqui não é exatamente 100% e é aproximadamente 85–90%, o que é suficiente para os sites identificarem um perfil. É importante entender que uma impressão digital é um conjunto de parâmetros. Alterar um ou dois deles não resulta em um efeito de falsificação significativo: a unicidade cai apenas em frações de um por cento, por isso é importante trabalhar na impressão digital de forma abrangente.

Vamos analisar quais parâmetros compõem uma impressão digital do navegador, como cada parâmetro é coletado e quanto ele afeta a unicidade.
Impressão digital do navegador é um método de identificar um usuário pela combinação de características e parâmetros do navegador e do dispositivo sem usar cookies ou outros dados armazenados. Quando você visita um site, um script especial coleta informações sobre seu ambiente (sistema operacional, versão do navegador, configurações de idioma, fuso horário, resolução de tela, lista de fontes, etc.) e cria um identificador único, a impressão digital do navegador. Este identificador persiste por mais tempo que cookies ordinários e ajuda os sites a reconhecerem seu navegador em visitas repetidas, mesmo que o usuário limpe os cookies ou abra o site no modo de navegação anônima. Devido a isso, os sites podem rastrear as ações de um usuário em diferentes sessões e recursos, ligando-as a um perfil único.
Uma impressão digital do navegador é semelhante a uma impressão digital humana, mas a unicidade aqui não é exatamente 100% e é aproximadamente 85–90%, o que é suficiente para os sites identificarem um perfil. É importante entender que uma impressão digital é um conjunto de parâmetros. Alterar um ou dois deles não resulta em um efeito de falsificação significativo: a unicidade cai apenas em frações de um por cento, por isso é importante trabalhar na impressão digital de forma abrangente.

Vamos analisar quais parâmetros compõem uma impressão digital do navegador, como cada parâmetro é coletado e quanto ele afeta a unicidade.
Impressão Digital vs. outros métodos de rastreamento
A tecnologia de impressão digital do navegador surgiu como uma resposta às limitações dos métodos clássicos de rastreamento de usuários.
Cookies HTTP
A maneira mais conhecida de reconhecer usuários é armazenar um identificador único no navegador (em um arquivo de cookie) e lê-lo em cada visita. A desvantagem é que o usuário pode limpar os cookies, e o site perde o ID emitido anteriormente. Além disso, no modo de navegação anônima ou quando cookies de terceiros são bloqueados pelo navegador, esse método não funciona. Navegadores e extensões modernas oferecem mais ferramentas para bloquear ou autoexcluir cookies, reduzindo a eficácia dessa abordagem. A impressão digital, por outro lado, não requer armazenamento de dados no lado do cliente, então funciona mesmo com cookies desativados e no modo de navegação anônima; basta que o navegador forneça as informações de sistema necessárias.

LocalStorage, SessionStorage e outros armazenamentos web
Assim como cookies, essas tecnologias armazenam dados localmente no navegador. Scripts podem lê-los em visitas repetidas. No entanto, o usuário pode limpá-los manualmente, e o armazenamento é isolado por domínio; além disso, o SessionStorage está disponível apenas para uma aba/sessão.
Há também o Evercookie, uma técnica que tenta criar cookies “indelezíveis” duplicando o identificador em todos os armazenamentos disponíveis (cookie HTTP, Flash LSO, Silverlight Isolated Storage, IndexedDB, etc.), e usando cache e outras artimanhas. Mas nem mesmo o Evercookie é onipotente: por exemplo, é inútil no modo de navegação anônima, onde os dados não são salvos no disco rígido. A impressão digital não salva nada no dispositivo; coleta informações novamente em cada visita, portanto, é mais difícil de bloquear com métodos padrão de limpeza.

Rastreamento ETag
Não é o mais comum, mas um método de trabalho de uso de cache HTTP para identificação de usuários. Na primeira solicitação, o servidor retorna um recurso (por exemplo, um único pixel) com um cabeçalho ETag
único. O navegador o armazena no cache. Em uma solicitação repetida para o mesmo URL, o navegador automaticamente envia If-None-Match
com o ETag previamente recebido. Assim, o servidor pode detectar o mesmo visitante combinando o ETag mesmo que os cookies tenham sido excluídos. Este é um método de rastreamento passivo que não requer JavaScript — o identificador é armazenado no mecanismo de cache. O rastreamento ETag é difícil de detectar, sobrevive à limpeza de cookies (seria necessário limpar o cache) e funciona mesmo sem JS. No entanto, também pode ser contrarrestado se necessário (desativar o cache, usar proxies intermediários que limpam cabeçalhos ETag).

Camuflagem de CNAME
Uma técnica que disfarça um rastreador de terceiros como um domínio de primeira parte usando um registro DNS CNAME. Por exemplo, em vez de carregar do tracker.thirdparty.com
, o script carrega de um subdomínio como tracker.mysite.com
, que aponta para o servidor do rastreador a nível de DNS via CNAME. O navegador trata tal solicitação como proveniente do recurso principal, então bloqueadores de anúncios/rastros não detectam o domínio de terceiros — os cookies do rastreador são considerados de mesmo site. A camuflagem de CNAME pode até superar proteções de navegador como a Prevenção Inteligente de Rastreamento do Safari e similares. No contexto de impressão digital, este método é importante porque permite que um script de terceiros colete uma impressão digital e defina cookies como se fosse o próprio site. Essencialmente, a camuflagem de CNAME esconde o terceiro, enquanto a impressão digital funciona sem armazenar identificadores. Juntos, podem fortalecer o rastreamento (o rastreador se faz passar pelo site e coleta o máximo de dados do usuário, incluindo a impressão digital, sem ser bloqueado).
Impressão Digital
A impressão digital do navegador não substitui os métodos descritos acima; muitas vezes é usada junto com eles. Por exemplo, na primeira visita um script pode coletar a impressão digital e tentar definir cookies. Se os cookies forem apagados mais tarde, um reconhecimento repetido é possível combinando a impressão digital. Além disso, a impressão digital pode complementar outros métodos: por exemplo, supercookies armazenados através do cache de favicon podem manter um ID único, e o rastreador pode comparar os parâmetros do navegador para confirmação. Juntas, essas técnicas criam um sistema multilayer para rastreamento de usuários.
Parâmetros que compõem a impressão digital do navegador
Uma impressão digital é formada a partir de dezenas de pequenos atributos que juntos produzem uma combinação única. Alguns deles são enviados automaticamente com cada solicitação HTTP (sinais passivos), enquanto outros são coletados no lado do cliente via JavaScript e APIs Web (sinais ativos).
Parâmetros passivos (cabeçalhos HTTP e conexão)
Endereço de IP
O endereço do seu dispositivo na rede, determinado a partir de cada solicitação recebida. Pode indicar geolocalização (país/cidade por WHOIS ou GeoIP) e afiliação a uma organização/ISP. Embora um endereço de IP frequentemente não seja único (muitos usuários podem estar atrás de um único endereço público de um ISP) e possa mudar dinamicamente, é incluído na impressão digital como um identificador de rede básico. Além disso, se WebRTC estiver disponível, um script pode realizar uma solicitação STUN e obter seu endereço real de IP. Um endereço de IP por si só não é permanente, mas combinado com outros sinais, aumenta a probabilidade de exclusividade.

Agente de Usuário
A string de agente do usuário enviada no cabeçalho User-Agent
por cada navegador. Contém informações sobre o navegador, sua versão, engine, versão do SO, arquitetura, e às vezes modelo de dispositivo, e.g. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
. Analisar o agente do usuário permite distinguir, mais ou menos, o Chrome no Windows do Safari no iOS, etc. — em outras palavras, restringir a identificação para o navegador e plataforma.
Exclusividade do agente de usuário: embora o agente de usuário seja formado a partir de um conjunto limitado de versões, a combinação de SO e navegador é muitas vezes rara. Por exemplo, uma versão de navegador mais antiga em um SO específico apresentará um agente de usuário único. Cabeçalhos não padrão adicionados por extensões também podem aparecer na impressão digital; a partir deles, sites podem inferir plugins ou frameworks instalados. No entanto, em geral, o agente de usuário é fácil de falsificar, e portanto, não deve ser a única fonte de identificação; é apenas um aspecto da impressão digital.

Headers de aceitação e outras características de protocolo
Com cada solicitação o navegador envia um conjunto de cabeçalhos: formatos suportados (Accept
, Accept-Language
, Accept-Encoding
), referenciador, flags de cache, etc. A combinação desses cabeçalhos também é bastante informativa. Por exemplo, a ordem e o conteúdo dos campos Accept-Language e Accept-Charset podem variar entre locais de SO. A presença de Accept-Encoding: br
indica suporte a Brotli e indiretamente um navegador relativamente moderno. A ordem específica em que um navegador enumera os cabeçalhos pode servir como assinatura do engine do navegador.
Sinais ao nível do HTTP são considerados passivos, pois são fornecidos automaticamente pelo navegador. Sem JS, o servidor pode aprender o tipo de dispositivo (via User-Agent), idiomas preferidos (Accept-Language
), os tipos de conteúdo que o cliente suporta (e.g., suporte ao WebP em Accept
revela um engine Blink), e assim por diante. Todos esses pequenos detalhes alimentam o modelo de impressão digital.

Fuso horário
Aunque el fuso horário do usuário pode ser determinado ativamente (via JS), também pode ser aproximado a partir dos cabeçalhos. Por exemplo, o cabeçalho Date
em HTTP ou o tempo nos registros do servidor podem ser comparados com o tempo da solicitação no lado do cliente (por exemplo, se If-Modified-Since
estiver visível). Mais comumente o Timezone
é obtido no lado do cliente. No entanto, o deslocamento temporal (GMT ± X) faz parte da impressão digital porque difere entre regiões e permanece estável para um usuário ao longo do tempo (a menos que o usuário viaje ou altere a configuração manualmente).

Tecnologias Suportadas
Alguns cabeçalhos ou características de conexão podem indicar capacidades do navegador. Por exemplo, DNT (Do-Not-Track)
está presente se o usuário habilitou “Não Rastrear”; DNT: 1
então se torna parte da impressão digital (paradoxalmente, este flag pode fazer com que você se destaque porque poucas pessoas o habilitam). Outro exemplo: Upgrade-Insecure-Requests: 1
é enviado pela maioria dos navegadores modernos na primeira transição para HTTPS; sua ausência pode identificar um cliente incomum. Essas nuances sutis raramente aparecem como campos de impressão digital separados, mas podem ser consideradas coletivamente.
Parâmetros ativos (JavaScript e API da Web)
Resolução de tela e profundidade de cor
Disponível através de objetos window.screen
. Propriedades screen.width/height
retornam a resolução de tela atual (às vezes levando em conta o escalonamento de exibição), e screen.colorDepth
retorna a profundidade de cor (geralmente 24 ou 32 bits). Esses parâmetros são frequentemente incluídos na impressão digital porque variam amplamente: o tamanho da tela de cada um é diferente. Em desktops, a janela do navegador raramente se iguala à resolução máxima, mas uma impressão digital geralmente toma a resolução máxima disponível do usuário, que reflete o tamanho da sua exibição. Por exemplo, 1920×1080×24 (Full HD, cor de 24 bits) é uma configuração, 1366×768×24 é outra, etc. Cada resolução combinada com profundidade de cor pode restringir ainda mais o grupo de dispositivos. Se o usuário alterar a resolução do monitor ou conectar um novo monitor, a impressão digital mudará.

Configurações de idioma
Um navegador expõe várias configurações relacionadas: idioma da interface/SO, idioma(s) preferido(s) da página e formatos locais para datas/números. JS pode obter navigator.language
(ou navigator.languages
para uma lista) — valores como “ru-RU” ou “en-US.” Isso geralmente coincide com o que o servidor recebe em Accept-Language
. O local afeta funções de formatação como Date.toString()
(nomes de meses em russo ou inglês, etc.), que também pode ser usado para impressão digital.
Efeito na exclusividade: combinações de idiomas e regiões são bastante variáveis. Por exemplo, um usuário de língua russa pode ter o local ru-RU
, ou uk-UA
(se o SO for ucraniano), ou até mesmo en-US
(se a interface for em inglês). Essas nuances adicionam alguns bits de entropia. O número de permutações de combinações de idiomas únicas cresce a cada ano, mas sozinho o idioma não é extra exclusivo: muitas pessoas usam locais populares. No entanto, combinado com outros parâmetros, o idioma ajuda a distinguir, por exemplo, Chrome/Windows em russo do Chrome/Windows em alemão, criando dois perfis diferentes.

Fuso Horário (via JS)
Uma maneira mais precisa de determinar o fuso horário é chamar um novo Date().getTimezoneOffset()
usando JS. Isso retorna o deslocamento de tempo local do UTC em minutos. Por exemplo, GMT+3 resulta em 180 minutos. Você também pode obter o nome do fuso horário usando Intl API
. Este parâmetro quase sempre é incluído na impressão digital porque é estável para um dispositivo e varia geograficamente. Dois usuários com parâmetros idênticos, mas fusos horários diferentes, já produzem impressões digitais diferentes.
Nota: alguns impressore digitais avançados rastream fuso horários alterados: isso pode indicar que o mesmo navegador mudou de contexto (por exemplo, se o usuário viajou ou alterou configurações de relógio). No entanto, o valor atual do deslocamento é normalmente usado para uma impressão digital simples.

Informações sobre a plataforma e CPU
O objeto navigator
fornece várias propriedades relacionadas à plataforma do dispositivo:
navigator.platform
— uma string indicando o SO/arquitetura, por exemplo, Win32, Linux x86_64, iPhone, etc. Isso costumava ser um parâmetro bastante relevante (distinguindo, por exemplo, Windows de 32 bits do de 64 bits), mas navegadores modernos podem retornar valores truncados ou unificados por razões de privacidade. Se o parâmetro estiver disponível, é incluído na impressão digital.navigator.hardwareConcurrency
— o número de threads lógicos de CPU (cores) do dispositivo. Por exemplo, 8 (que pode corresponder a 4 cores físicos com Hyper-Threading). Isso adiciona variabilidade extra: dispositivos móveis frequentemente têm 4 ou 8, desktops — 4, 8, 12, 16 e mais cores. Nem todo navegador relata um valor exato, mas sob condições normais este parâmetro é coletado. Um número incomum de threads (e.g., 6 ou 10) pode imediatamente singularizar um dispositivo.navigator.deviceMemory
— tamanho aproximado de RAM em gigabytes (inteiro). O Chrome arredonda para 0,25 (um quarto) incrementos. Por exemplo, 8 GB dádeviceMemory = 8
. Este sinal não é suportado em todos os navegadores. Onde presente, é incluído: o tamanho da RAM raramente é um número redondo, então a variabilidade reduz sobreposições.navigator.oscpu
— uma string com o sistema operacional (API apenas do Firefox). No Firefox moderno no Windows retorna algo como Windows NT 10.0; Win64; x64. Este parâmetro raramente é usado porque duplica informações do User-Agent.navigator.webdriver
— um booleano indicando se o navegador está sendo guiado por automação (WebDriver). Setrue
, o site sabe que está lidando com um bot e pode alterar o comportamento ou considerar isso na impressão digital. Para impressão digital, isso é menos um parâmetro de “exclusividade” e mais uma forma de detectar automação. No entanto,navigator.webdriver=true
claramente singulariza o cliente (usuários regulares têm false), então indiretamente faz parte da impressão digital.

Estado habilitado de Cookies/Storage
Scripts podem verificar se cookies estão habilitados no navegador (navigator.cookieEnabled
). Se o usuário os tiver desativado, isso os distingue da maioria dos outros usuários (quase todos mantêm cookies habilitados) e adiciona exclusividade.
Lista de plugins do navegador
navigator.plugins
pode retornar uma lista de plugins NPAPI instalados: Acrobat Reader, Flash, Silverlight, etc., incluindo suas versões (navigator.plugins[i].name/version
), embora plugins NPAPI tenham desaparecido em grande parte (Flash e Java estão desativados ou removidos dos navegadores modernos). No Chrome, navigator.plugins
agora contém apenas o visualizador de PDF embutido; no Firefox, da mesma forma, não há nada extra. Ainda assim, a API existe e alguns navegadores ainda podem retornar algo. A impressão digital pode incluir nomes de plugins e sua contagem. Uma lista vazia também é um sinal (por exemplo, o Firefox em modo Tor tem ela vazia, enquanto um Firefox regular pode incluir um plugin OpenH264 embutido). No geral, o papel dos plugins como um fator está diminuindo; extensões estão ganhando importância em vez disso.

Extensões instaladas
Idealmente, websites não deveriam saber quais extensões um usuário tem, mas na prática algumas extensões podem ser detectadas indiretamente. AdBlock ou Adblock Plus podem ser detectados por solicitações bloqueadas ou elementos DOM específicos que introduzem. Um site pode tentar carregar uma URL conhecida filtrada pelo AdBlock — se não carregar, um bloqueador provavelmente está presente.
Outro exemplo: extensões podem adicionar objetos especiais ao window
(e.g., ferramentas de desenvolvimento React adicionam __REACT_DEVTOOLS_GLOBAL_HOOK__
), e um script encontrando tal objeto reconhece a extensão. Dezenas de pequenas verificações podem construir um “instantâneo” do ambiente do navegador. Às vezes, o número aproximado de extensões pode ser inferido a partir do tempo de resposta da página. Cada extensão instalada pode desacelerar o processamento da página. De qualquer forma, a presença de bloqueadores, gerenciadores de senha ou extensões de nicho populares é parcialmente detectável e aumenta a exclusividade do perfil.
Lista de fontes instaladas
Um dos parâmetros mais variáveis. O conjunto de fontes de sistema depende do SO, aplicativos instalados (Microsoft Office adiciona fontes, a Adobe adiciona as suas próprias, etc.), e do idioma do sistema (fontes chinesas geralmente não estão presentes para usuários europeus). Como uma página web pode detectar quais fontes você tem? Historicamente, o Flash (EnumerateFonts) era usado, mas sem ele, existem métodos puramente do lado do navegador:
Via CSS+JS: um elemento oculto é criado com uma lista de fallback de font-family. Se a primeira fonte não estiver instalada, o texto é renderizado na próxima fonte e a largura/altura do elemento muda. JS pode medir as dimensões do elemento para inferir qual fonte foi aplicada. Iterando centenas de fontes populares revela quais estão presentes. Este método é demorado, então o seguinte método é frequentemente usado.
Via Canvas: desenhando texto em uma fonte específica em um canvas e comparando o raster de pixels permite determinar se a fonte está instalada. Isso é essencialmente um caso de impressão digital Canvas (veja abaixo).

O número de possíveis combinações de conjuntos de fontes é enorme, pois poucas pessoas têm listas de fontes idênticas, especialmente entre diferentes versões do SO. Uma fonte rara (e.g., fontes específicas de design) imediatamente torna a impressão digital única, tornando os dados de fonte incrivelmente úteis para impressão digital. A coleta de fontes não é instantânea, então alguns scripts armazenam em cache o resultado da impressão digital.
Impressão Digital de Canvas
Este é um método bem conhecido de impressão digital usando o elemento HTML5 <canvas>
para obter características de renderização únicas. O navegador desenha o conteúdo (geralmente texto com uma fonte e cores específicas, às vezes formas geométricas) em um canvas virtual, depois o script chama canvas.toDataURL()
, obtendo um bitmap do conteúdo renderizado. A imagem é representada como uma string base64, que é hashada para produzir uma impressão digital Canvas.
Por que é único? Pequenas diferenças no sistema — algoritmos de suavização de fontes, versões de driver de GPU, plataforma (Linux vs Windows) — produzem variações sutis na imagem final. Normalmente, desenha-se texto com caracteres diversos (letras de formas diferentes, símbolos especiais) para maximizar efeitos de suavização. Scripts também podem desenhar retângulos coloridos, aplicar transformações ou sombras para exercitar funções gráficas. Diferentes dispositivos produzem diferentes imagens a partir do mesmo código de desenho. Uma impressão digital Canvas pode mudar após atualizações de driver de GPU ou mudança de gráficos integrados para discretos. Combinada com WebGL, no entanto, se torna extremamente valiosa.

Impressão Digital de WebGL
WebGL é uma API para renderização de gráficos 3D no navegador (essencialmente fornecendo acesso a capacidades OpenGL/ES). Ele fornece dois tipos principais de dados para impressão digital:
Identificadores diretos de GPU
A extensão WEBGL_debug_renderer_info
permite que um script recupere as strings UNMASKED_VENDOR_WEBGL
e UNMASKED_RENDERER_WEBGL
do contexto WebGL - estes geralmente listam o fabricante e modelo da GPU (e.g., Intel Inc., Intel Iris Plus Graphics 640, ou NVIDIA Corporation, GeForce GTX 1070). Esses valores efetivamente revelam o modelo da placa de vídeo do usuário. A maioria dos navegadores permite isso no modo padrão (exceto Tor). O modelo de GPU adiciona um entropia significativa: mesmo que dois usuários tenham o mesmo sistema operacional e navegador, um com Intel HD Graphics e outro com uma RTX 3080 terão impressões digitais distintas.
Constantes e capacidades de WebGL
Mesmo sem o nome direto da GPU, o contexto WebGL mantém muitos parâmetros que dependem do driver e hardware: unidades de textura máximas, limites de tamanho de geometria, suporte a sombra e anti-aliasing, e outras constantes numéricas. Um script pode chamar sequencialmente gl.getParameter(...)
para várias constantes e coletar os resultados. Por exemplo, MAX_VERTEX_UNIFORM_VECTORS
pode ser 4.096 em um cartão e 1.024 em outro, etc. O resultado é um longo vetor de números, um tipo de perfil do subsistema gráfico. Tal perfil é frequentemente único para um dispositivo e pode ser diferente até mesmo entre modelos de GPU semelhantes.

Além disso, o WebGL pode ser usado como o Canvas: ou seja, renderizando uma cena 3D complexa e obtendo sua imagem rasterizada. Esta abordagem pode revelar diferenças ainda mais sutis (por exemplo, em implementações de shader). Na prática, bibliotecas como FingerprintJS geralmente se limitam a ler UNMASKED_RENDERER
(uma vez que é mais simples e confiável), mas alguns scripts também hash um formato 3D renderizado para uma maior estabilidade. Os dados de WebGL aumentam muito a exclusividade da impressão digital, especialmente em dispositivos móveis: por exemplo, costumava ser difícil de distinguir entre iPhones (todos tinham saídas Canvas idênticas devido a GPUs idênticas), mas agora a versão da GPU pode revelar o modelo de iPhone se o WebGL estiver habilitado. Combinado com Canvas, WebGL fornece uma poderosa fonte de entropia. É por isso que navegadores em modos orientados à privacidade tentam ocultar ou falsificar esses dados.
Impressão Digital de AudioContext
Outro método sofisticado de impressão digital usa a API de Áudio Web para derivar uma impressão digital áudio única do dispositivo. É baseado no fato de que a geração e o processamento de áudio variam ligeiramente entre os sistemas (devido às implementações de bibliotecas, uso de instruções SIMD, imprecisões de ponto flutuante, etc.). Na prática, valores de impressão digital de AudioContext diferem notavelmente entre navegadores; cada combinação de “navegador + SO + hardware” produz seu próprio resultado determinístico (desde que o navegador ou SO não sejam significativamente alterados). Adicionar uma impressão digital de áudio fortalece ainda mais a identificação: mesmo que saídas Canvas e WebGL coincidam por coincidência, a impressão digital de áudio ainda pode distinguir os dispositivos.
Dispositivos de Mídia e Sensores
Durante a impressão digital, um script também pode coletar informações sobre hardware periférico:
Via
navigator.mediaDevices.enumerateDevices()
, pode-se obter uma lista de dispositivos de mídia do usuário (câmeras, microfones). O navegador normalmente retorna dados limitados, por exemplo, “duas câmeras e um microfone” sem nomes ou IDs, a menos que a permissão seja concedida. Ainda assim, o número de dispositivos sozinho pode servir como um fator distintivoAPIs como Status de Bateria (nível de carga da bateria) estavam disponíveis uma vez e também eram usadas para impressão digital. Nível de bateria e tempo restante produziam combinações únicas. Porque essas APIs poderiam gerar identificadores excessivamente precisos (um problema de privacidade), agora são restritas ou baseadas em permissões.
Sensores (Orientação, Movimento): a presença de certos sensores e o formato da saída deles pode variar entre dispositivos (e.g., taxa de atualização do giroscópio). Estes são sinais relativamente exóticos, mas ainda podem suplementar teoricamente uma impressão digital.
No geral, quanto mais não padrão for o dispositivo, mais ele revela através de tais APIs. Se um usuário não tiver câmera ou microfone, isso já os distingue da maioria dos laptops, que quase sempre têm webcams.
Tudo o que foi citado acima — tanto os atributos ativos quanto os passivos — formam um conjunto de características do navegador e do sistema. Na prática, scripts coletam 10–30 parâmetros e os compilam em uma estrutura (e.g., um objeto ou um array de strings), que é então convertida em um hash. Muitas bibliotecas usam algoritmos de hashing rápidos como MurmurHash para produzir um identificador compacto a partir de aproximadamente 500 bytes de dados de atributo. O resultado é uma string (e.g., a3f6e9b12d4...
) que pode ser armazenada em um servidor como o ID do dispositivo.

Proteção contra impressão digital do navegador
Navegadores modernos implementam várias contramedidas destinadas a combater a impressão digital. Por exemplo, o Tor Browser pretende fazer com que todos os usuários pareçam idênticos (o mesmo User-Agent, tamanho de janela fixo, conjunto de fontes uniforme, Canvas e AudioContext desabilitados, etc.). Ele até avisa os usuários para não maximizar a janela se quiserem permanecer anônimos.
Firefox inclui a configuração privacy.resistFingerprinting setting
, que também equilibra valores. O Brave bloqueia rastreadores de terceiros por padrão e injeta ruído em APIs. Existem extensões como CanvasBlocker ou Privacy Badger que quebram seletivamente scripts de rastreamento.
No entanto, nenhum método oferece 100% de proteção — muitos parâmetros são expostos por navegadores. Em resposta à crescente demanda por anonimato, navegadores antidetecção (como Octo Browser, MultiLogin e Dolphin {anty}) surgiram, permitindo que os usuários emulem diferentes impressões digitais e criem dezenas de identidades “virtuais” com parâmetros distintos para, por exemplo, propósitos de marketing de afiliados.
A corrida que começou anos atrás continua: rastreadores desenvolvem novas técnicas, e navegadores formulam novas contramedidas. O usuário médio claramente perde essa corrida — se não se preocupar ativamente com a privacidade, qualquer site pode capturar sua impressão digital e correlacioná-la com dados de outras fontes.
Uma impressão digital consiste de muitos componentes, cada um adicionando um grau de exclusividade. Esperamos que esta análise tenha ajudado você a entender como exatamente seu navegador pode ser identificado por websites — porque entender como a tecnologia funciona é o primeiro passo para saber onde está a linha entre a conveniência da personalização e a proteção dos dados pessoais.
Impressão Digital vs. outros métodos de rastreamento
A tecnologia de impressão digital do navegador surgiu como uma resposta às limitações dos métodos clássicos de rastreamento de usuários.
Cookies HTTP
A maneira mais conhecida de reconhecer usuários é armazenar um identificador único no navegador (em um arquivo de cookie) e lê-lo em cada visita. A desvantagem é que o usuário pode limpar os cookies, e o site perde o ID emitido anteriormente. Além disso, no modo de navegação anônima ou quando cookies de terceiros são bloqueados pelo navegador, esse método não funciona. Navegadores e extensões modernas oferecem mais ferramentas para bloquear ou autoexcluir cookies, reduzindo a eficácia dessa abordagem. A impressão digital, por outro lado, não requer armazenamento de dados no lado do cliente, então funciona mesmo com cookies desativados e no modo de navegação anônima; basta que o navegador forneça as informações de sistema necessárias.

LocalStorage, SessionStorage e outros armazenamentos web
Assim como cookies, essas tecnologias armazenam dados localmente no navegador. Scripts podem lê-los em visitas repetidas. No entanto, o usuário pode limpá-los manualmente, e o armazenamento é isolado por domínio; além disso, o SessionStorage está disponível apenas para uma aba/sessão.
Há também o Evercookie, uma técnica que tenta criar cookies “indelezíveis” duplicando o identificador em todos os armazenamentos disponíveis (cookie HTTP, Flash LSO, Silverlight Isolated Storage, IndexedDB, etc.), e usando cache e outras artimanhas. Mas nem mesmo o Evercookie é onipotente: por exemplo, é inútil no modo de navegação anônima, onde os dados não são salvos no disco rígido. A impressão digital não salva nada no dispositivo; coleta informações novamente em cada visita, portanto, é mais difícil de bloquear com métodos padrão de limpeza.

Rastreamento ETag
Não é o mais comum, mas um método de trabalho de uso de cache HTTP para identificação de usuários. Na primeira solicitação, o servidor retorna um recurso (por exemplo, um único pixel) com um cabeçalho ETag
único. O navegador o armazena no cache. Em uma solicitação repetida para o mesmo URL, o navegador automaticamente envia If-None-Match
com o ETag previamente recebido. Assim, o servidor pode detectar o mesmo visitante combinando o ETag mesmo que os cookies tenham sido excluídos. Este é um método de rastreamento passivo que não requer JavaScript — o identificador é armazenado no mecanismo de cache. O rastreamento ETag é difícil de detectar, sobrevive à limpeza de cookies (seria necessário limpar o cache) e funciona mesmo sem JS. No entanto, também pode ser contrarrestado se necessário (desativar o cache, usar proxies intermediários que limpam cabeçalhos ETag).

Camuflagem de CNAME
Uma técnica que disfarça um rastreador de terceiros como um domínio de primeira parte usando um registro DNS CNAME. Por exemplo, em vez de carregar do tracker.thirdparty.com
, o script carrega de um subdomínio como tracker.mysite.com
, que aponta para o servidor do rastreador a nível de DNS via CNAME. O navegador trata tal solicitação como proveniente do recurso principal, então bloqueadores de anúncios/rastros não detectam o domínio de terceiros — os cookies do rastreador são considerados de mesmo site. A camuflagem de CNAME pode até superar proteções de navegador como a Prevenção Inteligente de Rastreamento do Safari e similares. No contexto de impressão digital, este método é importante porque permite que um script de terceiros colete uma impressão digital e defina cookies como se fosse o próprio site. Essencialmente, a camuflagem de CNAME esconde o terceiro, enquanto a impressão digital funciona sem armazenar identificadores. Juntos, podem fortalecer o rastreamento (o rastreador se faz passar pelo site e coleta o máximo de dados do usuário, incluindo a impressão digital, sem ser bloqueado).
Impressão Digital
A impressão digital do navegador não substitui os métodos descritos acima; muitas vezes é usada junto com eles. Por exemplo, na primeira visita um script pode coletar a impressão digital e tentar definir cookies. Se os cookies forem apagados mais tarde, um reconhecimento repetido é possível combinando a impressão digital. Além disso, a impressão digital pode complementar outros métodos: por exemplo, supercookies armazenados através do cache de favicon podem manter um ID único, e o rastreador pode comparar os parâmetros do navegador para confirmação. Juntas, essas técnicas criam um sistema multilayer para rastreamento de usuários.
Parâmetros que compõem a impressão digital do navegador
Uma impressão digital é formada a partir de dezenas de pequenos atributos que juntos produzem uma combinação única. Alguns deles são enviados automaticamente com cada solicitação HTTP (sinais passivos), enquanto outros são coletados no lado do cliente via JavaScript e APIs Web (sinais ativos).
Parâmetros passivos (cabeçalhos HTTP e conexão)
Endereço de IP
O endereço do seu dispositivo na rede, determinado a partir de cada solicitação recebida. Pode indicar geolocalização (país/cidade por WHOIS ou GeoIP) e afiliação a uma organização/ISP. Embora um endereço de IP frequentemente não seja único (muitos usuários podem estar atrás de um único endereço público de um ISP) e possa mudar dinamicamente, é incluído na impressão digital como um identificador de rede básico. Além disso, se WebRTC estiver disponível, um script pode realizar uma solicitação STUN e obter seu endereço real de IP. Um endereço de IP por si só não é permanente, mas combinado com outros sinais, aumenta a probabilidade de exclusividade.

Agente de Usuário
A string de agente do usuário enviada no cabeçalho User-Agent
por cada navegador. Contém informações sobre o navegador, sua versão, engine, versão do SO, arquitetura, e às vezes modelo de dispositivo, e.g. Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36
. Analisar o agente do usuário permite distinguir, mais ou menos, o Chrome no Windows do Safari no iOS, etc. — em outras palavras, restringir a identificação para o navegador e plataforma.
Exclusividade do agente de usuário: embora o agente de usuário seja formado a partir de um conjunto limitado de versões, a combinação de SO e navegador é muitas vezes rara. Por exemplo, uma versão de navegador mais antiga em um SO específico apresentará um agente de usuário único. Cabeçalhos não padrão adicionados por extensões também podem aparecer na impressão digital; a partir deles, sites podem inferir plugins ou frameworks instalados. No entanto, em geral, o agente de usuário é fácil de falsificar, e portanto, não deve ser a única fonte de identificação; é apenas um aspecto da impressão digital.

Headers de aceitação e outras características de protocolo
Com cada solicitação o navegador envia um conjunto de cabeçalhos: formatos suportados (Accept
, Accept-Language
, Accept-Encoding
), referenciador, flags de cache, etc. A combinação desses cabeçalhos também é bastante informativa. Por exemplo, a ordem e o conteúdo dos campos Accept-Language e Accept-Charset podem variar entre locais de SO. A presença de Accept-Encoding: br
indica suporte a Brotli e indiretamente um navegador relativamente moderno. A ordem específica em que um navegador enumera os cabeçalhos pode servir como assinatura do engine do navegador.
Sinais ao nível do HTTP são considerados passivos, pois são fornecidos automaticamente pelo navegador. Sem JS, o servidor pode aprender o tipo de dispositivo (via User-Agent), idiomas preferidos (Accept-Language
), os tipos de conteúdo que o cliente suporta (e.g., suporte ao WebP em Accept
revela um engine Blink), e assim por diante. Todos esses pequenos detalhes alimentam o modelo de impressão digital.

Fuso horário
Aunque el fuso horário do usuário pode ser determinado ativamente (via JS), também pode ser aproximado a partir dos cabeçalhos. Por exemplo, o cabeçalho Date
em HTTP ou o tempo nos registros do servidor podem ser comparados com o tempo da solicitação no lado do cliente (por exemplo, se If-Modified-Since
estiver visível). Mais comumente o Timezone
é obtido no lado do cliente. No entanto, o deslocamento temporal (GMT ± X) faz parte da impressão digital porque difere entre regiões e permanece estável para um usuário ao longo do tempo (a menos que o usuário viaje ou altere a configuração manualmente).

Tecnologias Suportadas
Alguns cabeçalhos ou características de conexão podem indicar capacidades do navegador. Por exemplo, DNT (Do-Not-Track)
está presente se o usuário habilitou “Não Rastrear”; DNT: 1
então se torna parte da impressão digital (paradoxalmente, este flag pode fazer com que você se destaque porque poucas pessoas o habilitam). Outro exemplo: Upgrade-Insecure-Requests: 1
é enviado pela maioria dos navegadores modernos na primeira transição para HTTPS; sua ausência pode identificar um cliente incomum. Essas nuances sutis raramente aparecem como campos de impressão digital separados, mas podem ser consideradas coletivamente.
Parâmetros ativos (JavaScript e API da Web)
Resolução de tela e profundidade de cor
Disponível através de objetos window.screen
. Propriedades screen.width/height
retornam a resolução de tela atual (às vezes levando em conta o escalonamento de exibição), e screen.colorDepth
retorna a profundidade de cor (geralmente 24 ou 32 bits). Esses parâmetros são frequentemente incluídos na impressão digital porque variam amplamente: o tamanho da tela de cada um é diferente. Em desktops, a janela do navegador raramente se iguala à resolução máxima, mas uma impressão digital geralmente toma a resolução máxima disponível do usuário, que reflete o tamanho da sua exibição. Por exemplo, 1920×1080×24 (Full HD, cor de 24 bits) é uma configuração, 1366×768×24 é outra, etc. Cada resolução combinada com profundidade de cor pode restringir ainda mais o grupo de dispositivos. Se o usuário alterar a resolução do monitor ou conectar um novo monitor, a impressão digital mudará.

Configurações de idioma
Um navegador expõe várias configurações relacionadas: idioma da interface/SO, idioma(s) preferido(s) da página e formatos locais para datas/números. JS pode obter navigator.language
(ou navigator.languages
para uma lista) — valores como “ru-RU” ou “en-US.” Isso geralmente coincide com o que o servidor recebe em Accept-Language
. O local afeta funções de formatação como Date.toString()
(nomes de meses em russo ou inglês, etc.), que também pode ser usado para impressão digital.
Efeito na exclusividade: combinações de idiomas e regiões são bastante variáveis. Por exemplo, um usuário de língua russa pode ter o local ru-RU
, ou uk-UA
(se o SO for ucraniano), ou até mesmo en-US
(se a interface for em inglês). Essas nuances adicionam alguns bits de entropia. O número de permutações de combinações de idiomas únicas cresce a cada ano, mas sozinho o idioma não é extra exclusivo: muitas pessoas usam locais populares. No entanto, combinado com outros parâmetros, o idioma ajuda a distinguir, por exemplo, Chrome/Windows em russo do Chrome/Windows em alemão, criando dois perfis diferentes.

Fuso Horário (via JS)
Uma maneira mais precisa de determinar o fuso horário é chamar um novo Date().getTimezoneOffset()
usando JS. Isso retorna o deslocamento de tempo local do UTC em minutos. Por exemplo, GMT+3 resulta em 180 minutos. Você também pode obter o nome do fuso horário usando Intl API
. Este parâmetro quase sempre é incluído na impressão digital porque é estável para um dispositivo e varia geograficamente. Dois usuários com parâmetros idênticos, mas fusos horários diferentes, já produzem impressões digitais diferentes.
Nota: alguns impressore digitais avançados rastream fuso horários alterados: isso pode indicar que o mesmo navegador mudou de contexto (por exemplo, se o usuário viajou ou alterou configurações de relógio). No entanto, o valor atual do deslocamento é normalmente usado para uma impressão digital simples.

Informações sobre a plataforma e CPU
O objeto navigator
fornece várias propriedades relacionadas à plataforma do dispositivo:
navigator.platform
— uma string indicando o SO/arquitetura, por exemplo, Win32, Linux x86_64, iPhone, etc. Isso costumava ser um parâmetro bastante relevante (distinguindo, por exemplo, Windows de 32 bits do de 64 bits), mas navegadores modernos podem retornar valores truncados ou unificados por razões de privacidade. Se o parâmetro estiver disponível, é incluído na impressão digital.navigator.hardwareConcurrency
— o número de threads lógicos de CPU (cores) do dispositivo. Por exemplo, 8 (que pode corresponder a 4 cores físicos com Hyper-Threading). Isso adiciona variabilidade extra: dispositivos móveis frequentemente têm 4 ou 8, desktops — 4, 8, 12, 16 e mais cores. Nem todo navegador relata um valor exato, mas sob condições normais este parâmetro é coletado. Um número incomum de threads (e.g., 6 ou 10) pode imediatamente singularizar um dispositivo.navigator.deviceMemory
— tamanho aproximado de RAM em gigabytes (inteiro). O Chrome arredonda para 0,25 (um quarto) incrementos. Por exemplo, 8 GB dádeviceMemory = 8
. Este sinal não é suportado em todos os navegadores. Onde presente, é incluído: o tamanho da RAM raramente é um número redondo, então a variabilidade reduz sobreposições.navigator.oscpu
— uma string com o sistema operacional (API apenas do Firefox). No Firefox moderno no Windows retorna algo como Windows NT 10.0; Win64; x64. Este parâmetro raramente é usado porque duplica informações do User-Agent.navigator.webdriver
— um booleano indicando se o navegador está sendo guiado por automação (WebDriver). Setrue
, o site sabe que está lidando com um bot e pode alterar o comportamento ou considerar isso na impressão digital. Para impressão digital, isso é menos um parâmetro de “exclusividade” e mais uma forma de detectar automação. No entanto,navigator.webdriver=true
claramente singulariza o cliente (usuários regulares têm false), então indiretamente faz parte da impressão digital.

Estado habilitado de Cookies/Storage
Scripts podem verificar se cookies estão habilitados no navegador (navigator.cookieEnabled
). Se o usuário os tiver desativado, isso os distingue da maioria dos outros usuários (quase todos mantêm cookies habilitados) e adiciona exclusividade.
Lista de plugins do navegador
navigator.plugins
pode retornar uma lista de plugins NPAPI instalados: Acrobat Reader, Flash, Silverlight, etc., incluindo suas versões (navigator.plugins[i].name/version
), embora plugins NPAPI tenham desaparecido em grande parte (Flash e Java estão desativados ou removidos dos navegadores modernos). No Chrome, navigator.plugins
agora contém apenas o visualizador de PDF embutido; no Firefox, da mesma forma, não há nada extra. Ainda assim, a API existe e alguns navegadores ainda podem retornar algo. A impressão digital pode incluir nomes de plugins e sua contagem. Uma lista vazia também é um sinal (por exemplo, o Firefox em modo Tor tem ela vazia, enquanto um Firefox regular pode incluir um plugin OpenH264 embutido). No geral, o papel dos plugins como um fator está diminuindo; extensões estão ganhando importância em vez disso.

Extensões instaladas
Idealmente, websites não deveriam saber quais extensões um usuário tem, mas na prática algumas extensões podem ser detectadas indiretamente. AdBlock ou Adblock Plus podem ser detectados por solicitações bloqueadas ou elementos DOM específicos que introduzem. Um site pode tentar carregar uma URL conhecida filtrada pelo AdBlock — se não carregar, um bloqueador provavelmente está presente.
Outro exemplo: extensões podem adicionar objetos especiais ao window
(e.g., ferramentas de desenvolvimento React adicionam __REACT_DEVTOOLS_GLOBAL_HOOK__
), e um script encontrando tal objeto reconhece a extensão. Dezenas de pequenas verificações podem construir um “instantâneo” do ambiente do navegador. Às vezes, o número aproximado de extensões pode ser inferido a partir do tempo de resposta da página. Cada extensão instalada pode desacelerar o processamento da página. De qualquer forma, a presença de bloqueadores, gerenciadores de senha ou extensões de nicho populares é parcialmente detectável e aumenta a exclusividade do perfil.
Lista de fontes instaladas
Um dos parâmetros mais variáveis. O conjunto de fontes de sistema depende do SO, aplicativos instalados (Microsoft Office adiciona fontes, a Adobe adiciona as suas próprias, etc.), e do idioma do sistema (fontes chinesas geralmente não estão presentes para usuários europeus). Como uma página web pode detectar quais fontes você tem? Historicamente, o Flash (EnumerateFonts) era usado, mas sem ele, existem métodos puramente do lado do navegador:
Via CSS+JS: um elemento oculto é criado com uma lista de fallback de font-family. Se a primeira fonte não estiver instalada, o texto é renderizado na próxima fonte e a largura/altura do elemento muda. JS pode medir as dimensões do elemento para inferir qual fonte foi aplicada. Iterando centenas de fontes populares revela quais estão presentes. Este método é demorado, então o seguinte método é frequentemente usado.
Via Canvas: desenhando texto em uma fonte específica em um canvas e comparando o raster de pixels permite determinar se a fonte está instalada. Isso é essencialmente um caso de impressão digital Canvas (veja abaixo).

O número de possíveis combinações de conjuntos de fontes é enorme, pois poucas pessoas têm listas de fontes idênticas, especialmente entre diferentes versões do SO. Uma fonte rara (e.g., fontes específicas de design) imediatamente torna a impressão digital única, tornando os dados de fonte incrivelmente úteis para impressão digital. A coleta de fontes não é instantânea, então alguns scripts armazenam em cache o resultado da impressão digital.
Impressão Digital de Canvas
Este é um método bem conhecido de impressão digital usando o elemento HTML5 <canvas>
para obter características de renderização únicas. O navegador desenha o conteúdo (geralmente texto com uma fonte e cores específicas, às vezes formas geométricas) em um canvas virtual, depois o script chama canvas.toDataURL()
, obtendo um bitmap do conteúdo renderizado. A imagem é representada como uma string base64, que é hashada para produzir uma impressão digital Canvas.
Por que é único? Pequenas diferenças no sistema — algoritmos de suavização de fontes, versões de driver de GPU, plataforma (Linux vs Windows) — produzem variações sutis na imagem final. Normalmente, desenha-se texto com caracteres diversos (letras de formas diferentes, símbolos especiais) para maximizar efeitos de suavização. Scripts também podem desenhar retângulos coloridos, aplicar transformações ou sombras para exercitar funções gráficas. Diferentes dispositivos produzem diferentes imagens a partir do mesmo código de desenho. Uma impressão digital Canvas pode mudar após atualizações de driver de GPU ou mudança de gráficos integrados para discretos. Combinada com WebGL, no entanto, se torna extremamente valiosa.

Impressão Digital de WebGL
WebGL é uma API para renderização de gráficos 3D no navegador (essencialmente fornecendo acesso a capacidades OpenGL/ES). Ele fornece dois tipos principais de dados para impressão digital:
Identificadores diretos de GPU
A extensão WEBGL_debug_renderer_info
permite que um script recupere as strings UNMASKED_VENDOR_WEBGL
e UNMASKED_RENDERER_WEBGL
do contexto WebGL - estes geralmente listam o fabricante e modelo da GPU (e.g., Intel Inc., Intel Iris Plus Graphics 640, ou NVIDIA Corporation, GeForce GTX 1070). Esses valores efetivamente revelam o modelo da placa de vídeo do usuário. A maioria dos navegadores permite isso no modo padrão (exceto Tor). O modelo de GPU adiciona um entropia significativa: mesmo que dois usuários tenham o mesmo sistema operacional e navegador, um com Intel HD Graphics e outro com uma RTX 3080 terão impressões digitais distintas.
Constantes e capacidades de WebGL
Mesmo sem o nome direto da GPU, o contexto WebGL mantém muitos parâmetros que dependem do driver e hardware: unidades de textura máximas, limites de tamanho de geometria, suporte a sombra e anti-aliasing, e outras constantes numéricas. Um script pode chamar sequencialmente gl.getParameter(...)
para várias constantes e coletar os resultados. Por exemplo, MAX_VERTEX_UNIFORM_VECTORS
pode ser 4.096 em um cartão e 1.024 em outro, etc. O resultado é um longo vetor de números, um tipo de perfil do subsistema gráfico. Tal perfil é frequentemente único para um dispositivo e pode ser diferente até mesmo entre modelos de GPU semelhantes.

Além disso, o WebGL pode ser usado como o Canvas: ou seja, renderizando uma cena 3D complexa e obtendo sua imagem rasterizada. Esta abordagem pode revelar diferenças ainda mais sutis (por exemplo, em implementações de shader). Na prática, bibliotecas como FingerprintJS geralmente se limitam a ler UNMASKED_RENDERER
(uma vez que é mais simples e confiável), mas alguns scripts também hash um formato 3D renderizado para uma maior estabilidade. Os dados de WebGL aumentam muito a exclusividade da impressão digital, especialmente em dispositivos móveis: por exemplo, costumava ser difícil de distinguir entre iPhones (todos tinham saídas Canvas idênticas devido a GPUs idênticas), mas agora a versão da GPU pode revelar o modelo de iPhone se o WebGL estiver habilitado. Combinado com Canvas, WebGL fornece uma poderosa fonte de entropia. É por isso que navegadores em modos orientados à privacidade tentam ocultar ou falsificar esses dados.
Impressão Digital de AudioContext
Outro método sofisticado de impressão digital usa a API de Áudio Web para derivar uma impressão digital áudio única do dispositivo. É baseado no fato de que a geração e o processamento de áudio variam ligeiramente entre os sistemas (devido às implementações de bibliotecas, uso de instruções SIMD, imprecisões de ponto flutuante, etc.). Na prática, valores de impressão digital de AudioContext diferem notavelmente entre navegadores; cada combinação de “navegador + SO + hardware” produz seu próprio resultado determinístico (desde que o navegador ou SO não sejam significativamente alterados). Adicionar uma impressão digital de áudio fortalece ainda mais a identificação: mesmo que saídas Canvas e WebGL coincidam por coincidência, a impressão digital de áudio ainda pode distinguir os dispositivos.
Dispositivos de Mídia e Sensores
Durante a impressão digital, um script também pode coletar informações sobre hardware periférico:
Via
navigator.mediaDevices.enumerateDevices()
, pode-se obter uma lista de dispositivos de mídia do usuário (câmeras, microfones). O navegador normalmente retorna dados limitados, por exemplo, “duas câmeras e um microfone” sem nomes ou IDs, a menos que a permissão seja concedida. Ainda assim, o número de dispositivos sozinho pode servir como um fator distintivoAPIs como Status de Bateria (nível de carga da bateria) estavam disponíveis uma vez e também eram usadas para impressão digital. Nível de bateria e tempo restante produziam combinações únicas. Porque essas APIs poderiam gerar identificadores excessivamente precisos (um problema de privacidade), agora são restritas ou baseadas em permissões.
Sensores (Orientação, Movimento): a presença de certos sensores e o formato da saída deles pode variar entre dispositivos (e.g., taxa de atualização do giroscópio). Estes são sinais relativamente exóticos, mas ainda podem suplementar teoricamente uma impressão digital.
No geral, quanto mais não padrão for o dispositivo, mais ele revela através de tais APIs. Se um usuário não tiver câmera ou microfone, isso já os distingue da maioria dos laptops, que quase sempre têm webcams.
Tudo o que foi citado acima — tanto os atributos ativos quanto os passivos — formam um conjunto de características do navegador e do sistema. Na prática, scripts coletam 10–30 parâmetros e os compilam em uma estrutura (e.g., um objeto ou um array de strings), que é então convertida em um hash. Muitas bibliotecas usam algoritmos de hashing rápidos como MurmurHash para produzir um identificador compacto a partir de aproximadamente 500 bytes de dados de atributo. O resultado é uma string (e.g., a3f6e9b12d4...
) que pode ser armazenada em um servidor como o ID do dispositivo.

Proteção contra impressão digital do navegador
Navegadores modernos implementam várias contramedidas destinadas a combater a impressão digital. Por exemplo, o Tor Browser pretende fazer com que todos os usuários pareçam idênticos (o mesmo User-Agent, tamanho de janela fixo, conjunto de fontes uniforme, Canvas e AudioContext desabilitados, etc.). Ele até avisa os usuários para não maximizar a janela se quiserem permanecer anônimos.
Firefox inclui a configuração privacy.resistFingerprinting setting
, que também equilibra valores. O Brave bloqueia rastreadores de terceiros por padrão e injeta ruído em APIs. Existem extensões como CanvasBlocker ou Privacy Badger que quebram seletivamente scripts de rastreamento.
No entanto, nenhum método oferece 100% de proteção — muitos parâmetros são expostos por navegadores. Em resposta à crescente demanda por anonimato, navegadores antidetecção (como Octo Browser, MultiLogin e Dolphin {anty}) surgiram, permitindo que os usuários emulem diferentes impressões digitais e criem dezenas de identidades “virtuais” com parâmetros distintos para, por exemplo, propósitos de marketing de afiliados.
A corrida que começou anos atrás continua: rastreadores desenvolvem novas técnicas, e navegadores formulam novas contramedidas. O usuário médio claramente perde essa corrida — se não se preocupar ativamente com a privacidade, qualquer site pode capturar sua impressão digital e correlacioná-la com dados de outras fontes.
Uma impressão digital consiste de muitos componentes, cada um adicionando um grau de exclusividade. Esperamos que esta análise tenha ajudado você a entender como exatamente seu navegador pode ser identificado por websites — porque entender como a tecnologia funciona é o primeiro passo para saber onde está a linha entre a conveniência da personalização e a proteção dos dados pessoais.
Mantenha-se atualizado com as últimas notícias do Octo Browser
Ao clicar no botão, você concorda com a nossa Política de Privacidade.
Mantenha-se atualizado com as últimas notícias do Octo Browser
Ao clicar no botão, você concorda com a nossa Política de Privacidade.
Mantenha-se atualizado com as últimas notícias do Octo Browser
Ao clicar no botão, você concorda com a nossa Política de Privacidade.

Junte-se ao Octo Browser agora mesmo
Ou entre em contato com a equipe de suporte no chat para tirar dúvidas a qualquer momento.

Junte-se ao Octo Browser agora mesmo
Ou entre em contato com a equipe de suporte no chat para tirar dúvidas a qualquer momento.
Junte-se ao Octo Browser agora mesmo
Ou entre em contato com a equipe de suporte no chat para tirar dúvidas a qualquer momento.