Skip to content
אצלי
Go back

Seu navegador está seguro? Um guia dos testes de vazamento e fingerprint

Gota de água se formando na ponta de uma torneira metálica
Foto de Marco Palumbo na Unsplash

Você configurou a VPN, desativou o GPS, ativou o kill switch e se sente o Edward Snowden da sua sala. Aí entra num site aleatório e ele te cumprimenta em português, sugere a loja da sua cidade e já assume seu fuso horário. Estranho, né? Não é. Seu navegador entregou tudo e nem precisou do IP pra isso.

A verdade é que IP é só um dos vetores. Idioma, WebRTC, IPv6, fuso horário, canvas, fontes, resolução de tela: cada um desses é uma migalha que, somada, forma uma impressão digital única. VPN só esconde o IP, não esconde o resto.

Se você ainda acha que a barra “conectado” resolve tudo, releia VPN não é o suficiente e lembre que seu provedor te vê mais do que você imagina.

Este post é um checklist. Primeiro, onde testar o quanto você está vazando. Depois, como fechar as torneiras no Brave e no Mullvad no desktop Linux, o papel do Tor Browser, e o que usar no Android: Brave como principal, e a briga Fennec vs Cromite pra secundário.

Antes de tudo: vazamento e fingerprint não são a mesma coisa

“Vazamento” virou palavra guarda-chuva e isso atrapalha na hora de ler os resultados. Vale separar em duas famílias, porque a defesa de cada uma é completamente diferente.

Vazamento de rede. Algum dado sai por um caminho que contorna a camada que você configurou. A VPN está ativa mas o DNS ainda vai pro provedor. O túnel encapsula IPv4 e o IPv6 escapa pela interface nativa. O WebRTC abre UDP direto e entrega seu IP real. Aqui existe certo e errado objetivos: ou vazou, ou não vazou.

Fingerprinting. Nada “vaza” no sentido literal. O site apenas combina dezenas de características legítimas do navegador (fontes instaladas, resolução, renderização de canvas, versão do WebGL, fuso) até montar um identificador estável que dispensa cookie. Aqui não existe aprovado ou reprovado, existe grau de raridade e consistência.

Confundir as duas leva a conclusão errada. “Seu navegador é único entre 300 mil” não significa que a VPN falhou. E DNS vazando não se resolve instalando extensão anti-fingerprint.

Parte 1: onde testar (o arsenal de dedo-duro)

Regra antes de sair clicando: teste com a VPN ligada e desligada, compare, e use sempre o teste estendido quando disponível. Um resultado “verde” com VPN não significa nada se você não sabe qual era o “vermelho” sem ela.

Mais alguns cuidados que mudam o resultado:

IP, DNS, WebRTC e IPv6 (os vazamentos clássicos)

FerramentaO que cobreObservação
browserleaks.comWebRTC, DNS, IPv6, canvas, WebGL, fontes, geolocalização, TCP/IP OS fingerprintA referência. Um vetor por página, bem granular
ipleak.net (AirVPN)DNS estendido, WebRTC, IPv6, torrent leak, fusoO que eu já linkava há anos. Torrent address detection é útil
ipx.ac (AirVPN)Bateria completa de leaks num lugar sóFeito pela mesma turma do ipleak
doileak.comRelatório único: IP, DNS, WebRTC, IPv6, fuso, SSL, tipo de conexãoBom pra quem quer um panorama de uma tacada
dnsleaktest.comDNS (standard e extended)Clássico, direto ao ponto
dnscheck.toolsResolvers, DNSSEC, ECS (EDNS Client Subnet)Ótimo pra ver se seu resolver vaza subnet
test-ipv6.comExclusivo IPv6Rode este. IPv6 fora do túnel é o vazamento nº 1 no Android
1.1.1.1/help (Cloudflare)Status de DoH/DoT/ECHMostra se você está de fato criptografando o DNS
test.nextdns.ioPerfil e protocolo do NextDNS, em JSONResposta legível por máquina, boa pra script

IPv6: o que mais quebra em silêncio

Boa parte das VPNs encapsula IPv4 e, no melhor caso, bloqueia IPv6; no pior, deixa o tráfego v6 sair pela interface nativa. Como praticamente toda operadora residencial brasileira já entrega IPv6, o site pode simplesmente preferir o v6 e enxergar seu endereço real enquanto o painel da VPN mostra “conectado”.

Se o ipleak.net ou o test-ipv6.com mostrarem um IPv6 com o prefixo da sua operadora, é vazamento, ponto final. Ou a VPN suporta IPv6 de verdade, ou ela bloqueia v6 por completo. Meio termo aqui é o pior dos mundos.

DNS: tudo funciona, e é por isso que ninguém percebe

O resultado esperado depende do seu desenho de rede. Se você usa o resolver da VPN, deve aparecer só o ASN dela. Se usa NextDNS ou DNSCrypt local, deve aparecer o provedor escolhido e o perfil certo.

O test.nextdns.io é o mais direto de todos, porque devolve JSON:

{
	"status": "ok",
	"protocol": "DOH",
	"profile": "fp3c610bc5d9319252",
	"client": "2804:7f0:6941:756b::1002",
	"clientName": "nextdns-cli"
}

"status": "unconfigured" significa que suas consultas não estão passando pelo perfil que você acha que configurou.

Um detalhe que confunde muita gente: o navegador pode ter DNS próprio. Firefox e Chromium implementam DoH internamente e ignoram a configuração do sistema quando isso está ativo. Você pode ter DNSCrypt impecável no Linux e o navegador resolvendo tudo pela Cloudflare sem te avisar. Teste o navegador, não só o sistema. A parte de sistema eu cobri na série de DNS criptografado.

WebRTC: o vazamento que sobrevive à VPN

WebRTC é a API de comunicação em tempo real do navegador (videochamada, áudio, transferência peer to peer). Pra funcionar atrás de NAT, ela precisa descobrir todos os endereços da sua máquina e, pra isso, consulta servidores STUN por UDP. Esse tráfego pode sair fora do túnel.

Teste em browserleaks.com/webrtc e leia assim:

A correção fica na Parte 2, por navegador.

TLS, ECH e criptografia de transporte

ECH (Encrypted Client Hello). Sem ele, mesmo com HTTPS e DNS criptografado, seu provedor vê o SNI, ou seja, qual site você acessa. Já disseco isso em SNI Leak: o calcanhar de Aquiles do DNS seguro.

FerramentaO que verifica
tls-ech.devSe o ECH está ativo de fato
defo.ie/ech-check.phpSegunda opinião sobre ECH, com o motivo da falha
crypto.cloudflare.com/cdn-cgi/traceLinha sni=, que deve dizer encrypted
howsmyssl.com / clienttest (SSL Labs)Qualidade do seu cliente TLS, versões e cifras
tls.browserleaks.com/jsonSeu fingerprint JA3/JA4

Lembre que o ECH depende de DNS criptografado pra funcionar: o navegador precisa buscar a chave pública no registro DNS do tipo HTTPS. Sem DoH ativo, o Firefox nem tenta. Dá pra conferir se um site publica a chave:

dig +short HTTPS esli.blog
1 . alpn="h3,h2" ipv4hint=104.21.15.52,172.67.161.182 ech=AEX+DQBB0AAg... ipv6hint=2606:4700:3036::ac43:a1b6

O campo ech= presente significa que o servidor suporta. Ausente significa que, pra aquele domínio, seu SNI continua em texto claro por mais bem configurado que esteja o seu lado.

O fingerprint que quase ninguém testa: JA3 e JA4

Antes de qualquer HTTP, seu cliente TLS anuncia a lista de cipher suites que suporta, as extensões, a ordem delas, os grupos de curvas. Essa combinação é estável o suficiente pra identificar o software, e às vezes a versão exata. É o JA3 (formato antigo) e o JA4 (o atual):

{
  "user_agent": "curl/8.18.0",
  "ja4": "t13d3513h2_bfa337485184_8d7351bd871b"
}

Por que importa na prática: o JA4 desmente o User-Agent. Se você usa uma extensão que finge ser Chrome no Windows enquanto o seu JA4 é o do Firefox no Linux, você não ficou anônimo, ficou raro. A inconsistência é mais identificável que a verdade.

Não existe correção simples aqui, e é justamente esse o recado. Fingerprint de TLS é propriedade da implementação, não configuração. O caminho é usar um navegador comum, com a stack TLS padrão dele, sem mascarar User-Agent na mão.

Fingerprint e rastreamento

FerramentaO que faz
coveryourtracks.eff.org (EFF)O sucessor do Panopticlick. Mede unicidade e se seu bloqueio de trackers funciona
privacytests.orgGrade pass/fail comparando navegadores. Benchmark, não teste individual (mais abaixo)
amiunique.orgQuão único é seu fingerprint no universo de amostras
creepjsFingerprint agressivo: detecta inconsistências e tentativas de spoof. Humilhante e educativo
pixelscan.netConsistência do fingerprint, pega quando seu spoof não bate com o resto
webbrowsertools.comDespeja tudo que o browser expõe via JS, uma página por API

O BrowserLeaks continua sendo o mais útil da lista justamente porque não te dá um número: ele mostra o hash de canvas, o renderer do WebGL (que costuma entregar o modelo exato da sua GPU), a lista de fontes detectadas, o fingerprint de áudio e as APIs de mídia. Vale percorrer a barra lateral inteira uma vez na vida.

O CreepJS merece destaque separado: em vez de medir raridade, ele procura contradição. Cruza o que o navegador declara com o que o comportamento revela e aponta onde você está mentindo. Se você usa privacy.resistFingerprinting ou o escudo do Brave, é o teste que mostra se o disfarce está consistente.

(O deviceinfo.me, que já foi padrão nessa lista, está fora do ar. O domínio ainda resolve, mas o servidor não responde.)

O vetor esquecido: relógio

Fuso horário é fingerprint, e a hora do sistema é atacável na rede. Se o Intl.DateTimeFormat do seu browser entrega America/Sao_Paulo, adivinha de onde você é. Padronizar isso também é parte do jogo (juntamente com autenticar a própria sincronização), assunto que cobri em NTS: por que você precisa autenticar a hora do seu Linux.

Pra medir fuso, locale e formatação de data isoladamente: arkenfox.github.io/TZP.

Android: camada de apps (aqui o bicho pega)

No celular o vazamento raramente é só o navegador. São os apps despejando telemetria por baixo do pano.

FerramentaFunção
Exodus PrivacyEscaneia APKs e lista trackers e permissões embutidos
TrackerControlMostra e bloqueia trackers por app, em tempo real (via VPN local)
PCAPdroidCaptura o tráfego real do device sem root, o juiz final de “quem está falando com quem”
NetGuardFirewall por app + log de conexões

O PCAPdroid é o que fecha a discussão: se você acha que algo vaza, capture e olhe os pacotes. Chutômetro não é diagnóstico.

Checklist rápido

CamadaOnde testarResultado esperado
IPv4ipleak.netIP da VPN
IPv6test-ipv6.comIP da VPN, ou nenhum IPv6
DNSdnsleaktest.com (extended)só o resolver que você escolheu
DNS do navegadortest.nextdns.iostatus: ok com o perfil certo
WebRTCbrowserleaks.com/webrtcsem IP público real, local em .local
ECH / SNIcrypto.cloudflare.com/cdn-cgi/tracesni=encrypted
TLStls.browserleaks.com/jsonJA4 coerente com o User-Agent
Fingerprintcreepjssem contradições apontadas
Fusoarkenfox TZPcoerente com a saída da VPN
Apps (Android)PCAPdroidnenhum destino que você não reconheça

Como ler os resultados sem se enganar

“Único entre 250 mil” não é sentença de morte. No Tor Browser e no Mullvad Browser a estratégia é uniformizar: todo mundo parece igual, então a métrica de raridade fica boa. No Brave a estratégia é randomizar: o fingerprint muda a cada sessão e por site, então o teste pode acusar unicidade justamente porque a defesa está funcionando. Rode duas vezes em abas diferentes; se o hash mudou, a randomização está ativa.

Consistência importa mais que raridade. Fingerprint comum e coerente esconde melhor que fingerprint raro e contraditório. É por isso que empilhar extensão “anti-detect” costuma piorar o resultado.

Nenhum teste mede o que você faz logado. Dá pra zerar todos os vazamentos técnicos e continuar identificado porque você entrou na sua conta.

O painel da VPN não é evidência. “Conectado” quer dizer que o túnel subiu, não que todo o tráfego passa por ele.

Parte 2: refinando o Brave e o Mullvad no desktop (Linux)

Por que esses dois? Porque, segundo a grade do PrivacyTests.org, são os que passam mais testes de proteção prontos pra uso, como já argumentei em Qual o melhor navegador. O site não publica score agregado, mas a contagem reportada pelo PCMag (run #95) coloca o Brave em ~143/156 e o Mullvad em ~141/156, empatados no topo, à frente até do Tor Browser em bloqueio puro (o Tor ganha em anonimato de rede, que é outra briga). Ou seja: o melhor dos dois mundos é usar cada um pro que ele serve.

Brave: o daily driver blindado

brave://settings/shields

brave://settings/privacy

brave://settings/security

Tem muito mais escondido nas brave:// internas, já mapeei o que vale em Explorando funções avançadas no Brave Browser. E antes que você perca tudo num reinstall: Sync não é backup.

Opcional mas recomendado: uBlock Origin por cima do escudo nativo, pra ter controle fino de filtros. E a janela Tor (New private window with Tor) pra quando precisar de .onion sem sair do Brave.

Depois de mexer, volte no browserleaks.com/webrtc e confirme. A configuração só vale se aparecer na medição.

Mullvad Browser: o anti-fingerprint de fábrica

Aqui a regra é o oposto do Brave: não mexa. O Mullvad entrega um fingerprint padronizado de propósito pra todo mundo parecer igual. Cada “melhoria” ou alteração sua te torna único, que é exatamente o que você não quer. (Se quiser o contexto da empresa por trás, escrevi Mullvad: privacidade sem marketing, sem conta e sem desculpas.)

Resumindo a divisão de trabalho: Brave pra vida diária (compatibilidade + bloqueio agressivo), Mullvad pra quando fingerprint importa mais que conveniência.

E os outros?

Parte 3: Tor Browser, quando privacidade não basta e você quer anonimato

Brave e Mullvad te dão privacidade. O Tor Browser te dá anonimato de rede, coisa que nenhuma VPN entrega, porque numa VPN você só troca o observador (o provedor) por outro (o provedor da VPN). O Tor roteia por três saltos, cada um cego pro anterior, e ninguém no caminho vê origem e destino ao mesmo tempo.

O que ele faz que os outros não fazem:

Os contras:

Em rede hostil ou sob censura, o Tor tem pontes e transportes plugáveis. O mais prático pra emprestar sua banda a quem precisa é o Snowflake, cobri o funcionamento em Snowflake: proxy temporário para contornar a censura.

No Android: existe Tor Browser for Android (oficial, via F-Droid ou Play). Pra rotear o sistema inteiro pela rede Tor, o Orbot funciona como VPN local. Ambos já fazem parte do meu kit no celular.

Regra prática de quando puxar cada um:

Preciso de…Ferramenta
Navegação diária sem trackingBrave
Anti-fingerprint máximo, país indiferenteMullvad (desktop) / Tor Browser (Android)
Anonimato de rede real / .onion / driblar censuraTor Browser + Orbot
Exit num país específico sem vazar regiãoBrave endurecido + VPN

Parte 4: Android, Brave como principal, Fennec vs Cromite

O Mullvad Browser não existe pra Android (sim, uma tristeza). O Brave segue como principal, com o mesmo endurecimento do desktop e mais dois detalhes que só existem no mobile:

Mas todo mundo devia ter um secundário: pra compartimentar identidades, pra abrir o que quebra no principal, e pra não colocar todos os ovos num engine só. E é aqui que entram Fennec e Cromite.

Os dois candidatos

Cromite, sucessor espiritual do Bromite. Chromium sem telemetria, com adblock nativo e mitigações de fingerprint ligadas por padrão. Leve, rápido, “Chromium limpo” sem o circo de rewards/cripto do Brave.

Fennec, o Firefox do F-Droid, degoogled, sem os binários proprietários da Mozilla. Aceita about:config completo e add-ons (leia-se uBlock Origin). Engine Gecko, não Chromium.

Ajustes que importam no Fennec (about:config):

Qual escolher como secundário?

Fennec. E o motivo é puramente estratégico: meu principal (Brave) é Chromium/Blink, e um bom secundário não deve repetir o mesmo engine. O Fennec é Gecko, e isso me dá duas coisas que o Cromite não dá:

  1. Diversidade de engine. Fingerprint diferente por construção, e um fallback de renderização real pra quando um site quebra no Chromium (acontece mais do que deveria)
  2. resistFingerprinting de verdade. A mesma linhagem de defesa do Tor/Mullvad, algo que nenhum Chromium mobile replica com a mesma profundidade

O Cromite é ótimo, mas como secundário ele é redundante no eixo que importa: continua sendo Chromium, igual ao Brave. Ele brilha noutro papel: quando você precisa de um segundo Chromium especificamente (algum site que só vai bem em Blink) e não quer o peso nem os extras do Brave. Aí sim, Cromite entra como “Chromium limpo de plantão”.

CritérioFennecCromite
EngineGecko (diversifica)Blink (repete o Brave)
Anti-fingerprintAlto (RFP)Bom (padrão)
Add-onsSim (uBO)Não
PesoMédioLeve
Papel idealSecundário (compartimentar + fallback)Terceiro / “Chromium de emergência”

Detalhe: resistFingerprinting pode brigar com layout e quebrar alguns sites. É o mesmo problema do Mullvad no desktop, padronização custa conveniência. Se isso te incomoda mais do que o ganho de privacidade compensa, aí o Cromite vira secundário aceitável. Mas pro objetivo de secundário de verdade, Fennec ganha.

Uma nota: escolher Firefox em 2026 exige olhar pra Mozilla com ceticismo, o que motivou Mozilla sob ataque: o que aconteceu com o Firefox. A graça do Fennec é justamente pegar o engine do Firefox sem a bagagem corporativa da Mozilla.

Bônus: testando pela linha de comando

Pra checar o host rapidamente, sem abrir navegador:

#!/usr/bin/env bash
# leak-check.sh - auditoria rapida de saida da maquina

echo "== IPv4 =="
curl -s -4 https://ip.me

echo "== IPv6 =="
curl -s -6 https://ip.me || echo "sem saida IPv6"

echo "== Cloudflare trace =="
curl -s https://crypto.cloudflare.com/cdn-cgi/trace | grep -E '^(ip|loc|tls|sni|warp)='

echo "== DNS (NextDNS) =="
curl -s https://test.nextdns.io

echo "== JA4 do curl =="
curl -s https://tls.browserleaks.com/json | grep '"ja4"'

Uma ressalva importante: esse script mede o host, não o navegador. O JA4 retornado é o do curl e o DNS é o do sistema. Serve pra validar VPN, rota e resolver do sistema operacional, que é onde a maioria dos problemas de rede realmente está. Pro navegador, não tem jeito, é preciso abrir as páginas de teste nele.

O que nenhum desses testes pega

Vale delimitar o escopo, porque teste passado gera confiança, e confiança mal calibrada é pior que nenhuma.

Análise de tráfego. Volume, tempo e padrão de acesso continuam visíveis mesmo com ECH e DNS cifrados. Existe pesquisa madura de website fingerprinting em cima só disso.

Tudo que não é navegador. Aplicativo de celular, cliente de e-mail, atualizador do sistema, telemetria de IDE. No Android o PCAPdroid cobre esse buraco; no desktop, é wireshark e paciência.

Correlação por conta. Login é identificação voluntária. Nenhum teste técnico protege contra isso.

Extensões. Uma extensão maliciosa lê a página depois que o TLS terminou. Todos os testes vão passar.

O que muda amanhã. Atualização de navegador reseta preferência, atualização de cliente de VPN muda regra de rota. Por isso teste é rotina, não evento único.

Fechando as torneiras

Não existe navegador perfeitamente privado, existe o navegador certo pro seu modelo de ameaça:

E o hábito importa: existe uma diferença enorme entre “configurei DNS criptografado” e “verifiquei que as consultas saem cifradas pelo resolver certo”. A primeira frase é intenção e a segunda é engenharia. Reserve vinte minutos, rode a bateria uma vez, anote os resultados em algum lugar e repita a cada dois ou três meses, ou depois de qualquer mudança grande de navegador, VPN ou rede. Vazamento é quase sempre regressão: algo que já funcionou e parou, e você só descobre comparando com a medição anterior.

Teste, compare, ajuste, teste de novo. E pare de confiar cegamente na barra “conectado” da VPN: ela esconde o IP, não o resto do seu device gritando quem você é. O IP era só o começo, agora você tem o encanamento inteiro mapeado.

Leitura relacionada aqui no blog

Fundamentos

DNS, SNI e a hora

Navegadores e Tor

Contexto


Share this post on:

Previous Post
ADSBExchange: enviando dados dos aviões para internet
Next Post
Qobuz on Linux