voltar à visão geral Mais artigos

Um navegador, cinco alegações de SO: por que os spoofs de plataforma são flagrados

Cruzando os sinais do seu sistema operacional...

Pergunte ao seu navegador em qual sistema operacional ele roda e você não vai receber uma resposta. Vai receber cinco. A string do User-Agent aponta um SO. O navigator.platform também. E também a API de Client Hints, o cabeçalho Sec-CH-UA-Platform que seu navegador anexa a cada requisição e (no Firefox) a antiga propriedade navigator.oscpu.

Numa máquina normal ninguém percebe, porque todas as cinco dizem a mesma coisa. No instante em que você altera uma delas e esquece das outras, você deixa de parecer um Mac ou um PC com Windows e passa a parecer algo bem mais interessante: um navegador que está mentindo.

A versão curta: seu navegador declara o SO em vários lugares independentes, em JavaScript e na rede. Um navegador real dá a mesma resposta em todos os lugares. Faça spoof de uma superfície e as outras a contradizem, o que é um sinal mais alto do que seu SO real jamais foi.

O widget nesta página roda exatamente essa verificação cruzada no seu navegador agora mesmo.

Os cinco lugares onde seu navegador nomeia um SO

  1. A string do User-Agent. O clássico. Mozilla/5.0 (Windows NT 10.0; Win64; x64)... e toda extensão de spoofing do planeta a edita.
  2. navigator.platform. Uma propriedade JavaScript bem mais antiga que a maioria das ferramentas de spoofing esquece por completo.
  3. navigator.userAgentData.platform. A moderna API de Client Hints nos navegadores Chromium. Legível por qualquer script, sem precisar de permissão.
  4. O cabeçalho Sec-CH-UA-Platform. Os mesmos dados de Client Hints, mas enviados pela rede a cada requisição. O servidor de um site lê isso antes de uma única linha do seu JavaScript ser executada.
  5. navigator.oscpu. Só no Firefox. O que já é uma informação em si: um navegador “Chrome no Windows” que expõe oscpu já se entregou.

Esses valores não vêm de uma única configuração compartilhada. Editar o User-Agent não atualiza os cabeçalhos, e sobrescrever uma propriedade JavaScript não alcança a camada de rede. É justamente essa independência que faz a verificação cruzada funcionar:

navigator.userAgent macOS (editado)
navigator.platform Win32
userAgentData.platform Windows
Sec-CH-UA-Platform header "Windows"
Duas versões
O User-Agent editado diz macOS, enquanto as outras três superfícies continuam dizendo Windows. Uma simples verificação cruzada e a falsificação é desmascarada.

Essa é a mesma armadilha que pega o spoofing de versão, que abordamos em Seu User-Agent mente. Sua versão do Chromium não. O padrão se generaliza: cada sinal que você falsifica é mais uma chance de contradizer os sinais que você não falsificou.

Navegadores reais também mentem, só que de formas padronizadas

Aqui vem a parte que surpreende as pessoas: um navegador honesto também não reporta seu SO com precisão.

  • No Windows de 64 bits, o navigator.platform diz Win32. Ele diz isso desde os anos noventa, e mudar isso quebraria sites antigos.
  • Num Mac com Apple Silicon, ele diz MacIntel. Não há nenhum Intel ali dentro, mas o rótulo sobreviveu à transição de chip.
  • O User-Agent de todo Mac moderno limita a versão do macOS reportada, então diferentes releases do macOS podem apresentar a mesma string.

Os rastreadores conhecem essas mentiras padronizadas de cor, e isso corta para os dois lados. Um spoof que reporta Win64 porque soa mais correto fica instantaneamente suspeito, porque nenhum navegador real jamais disse isso. Para passar, uma falsificação precisa mentir exatamente da mesma forma que a coisa real mente. A maioria das ferramentas de spoofing não conhece esse folclore.

Até rótulos perfeitos vazam

Suponha que você faça tudo direito: User-Agent, navigator.platform, Client Hints e os cabeçalhos, todos reescritos para concordarem em macOS. Consistente em todos os lugares. Pronto?

Não exatamente. Os rótulos são apenas a parte do SO que você consegue renomear. O resto do sistema operacional continua se comportando como ele mesmo:

Os rótulos afirmam macOS
Fontes instaladas
Segoe UI, Calibri, Consolas
vêm com o Windows
Renderizador WebGL
ANGLE (NVIDIA ... Direct3D11)
Direct3D é exclusivo do Windows
Largura da barra de rolagem
17 px
métrica clássica do Windows
Suporte a toque
maxTouchPoints: 10
nenhum Mac relata toque
O comportamento supera o rótulo
Cada linha acima pode ser lida pelo JavaScript sem nenhuma solicitação de permissão. Renomeie os rótulos à vontade; a máquina por baixo continua respondendo como um PC com Windows.

As fontes são o sinal mais alto. O Windows vem com Segoe UI e Calibri, o macOS vem com Helvetica Neue e San Francisco, as distribuições Linux vêm com DejaVu. Um script consegue sondar por essas fontes em milissegundos (nosso artigo sobre fingerprinting de canvas mostra o truque de medição). A string do renderizador WebGL é igualmente direta: Direct3D significa Windows, Metal significa um Mac, sem exceções.

Então o spoofing de SO não é um único interruptor. É um problema de rótulo e um problema de comportamento, e o problema de comportamento é muito mais difícil.

O que realmente fazer

  1. Se você não está gerenciando identidades de propósito, não faça spoof do seu SO. Você vai se juntar a uma multidão minúscula e esquisita de navegadores que se autocontradizem, em vez da enorme multidão dos navegadores normais. Se misturar bate esconder.
  2. Nunca faça spoof pela metade. Um trocador de User-Agent que só edita a string te deixa mais fácil de reconhecer, não mais difícil. Se você não consegue mudar todas as superfícies, não mude nenhuma delas.
  3. Se você realmente precisa de identidades separadas, faça a pilha inteira concordar. Rótulos, cabeçalhos, fontes, WebGL, tudo. É exatamente para isso que os navegadores anti-detecção existem. A Incogniton constrói cada perfil de modo que a história do sistema operacional seja contada de forma consistente, da camada de rede até a lista de fontes, em vez de parafusar um rótulo novo numa máquina que não mudou.

Quer ver como o seu próprio navegador se sai? O widget nesta página verifica os sinais do seu SO, e o scanner completo roda a verificação de versão, o teste de vazamento de WebRTC e mais uma dúzia de outros junto com ela.

Logotipo da Incogniton

Eleve o nível da sua privacidade

Seta