privacy

Privacy ferramentas

O que um site realmente aprende do seu IP público, dos cabeçalhos de requisição e do hardware legível por JavaScript — mais como ocultar dados de arquivos HAR, URLs e tokens antes de compartilhá-los.

3 ferramentas

§01 GUIA DO TEMA

Três observadores, três camadas de dados

Quando o seu JavaScript começa a rodar, o site já sabe bastante. A camada de transporte já lhe entregou o endereço IP público pelo qual você saiu e, só a partir desse endereço: o ASN que anuncia o prefixo, uma estimativa geográfica grosseira, a versão de HTTP negociada e a versão de TLS que o seu cliente ofereceu. Nada disso é opcional, nada disso envolve um cookie, e todo proxy reverso no caminho registra a maior parte por padrão. O Verificar IP mostra o que a sua própria conexão expõe — IP, cidade, região, país, provedor, ASN, fuso horário, o PoP de borda que terminou a requisição, protocolo HTTP e TLS.

A segunda camada é o que o navegador oferece nos cabeçalhos de requisição: User-Agent, Accept-Language, Accept-Encoding, Referer e os client hints Sec-CH-UA-*. Baratos de coletar, registrados em todo lugar e — diferente da camada de rede — autodeclarados, portanto também trivialmente falsificáveis. A terceira camada é o que o script mede depois do carregamento: screen.width e devicePixelRatio, Intl.DateTimeFormat().resolvedOptions().timeZone, navigator.hardwareConcurrency, navigator.deviceMemory, maxTouchPoints, mais artefatos de renderização de <canvas>, WebGL, AudioContext e sondagem de fontes. A Impressão Digital do Navegador lê essa camada localmente, até uma assinatura de renderização em canvas.

O modelo mental que importa: nenhum valor isolado precisa ser secreto. O seu fuso horário é informação pública. O fingerprinting funciona sobre a distribuição conjunta — um valor compartilhado por um usuário em 2^k contribui com k bits de entropia, e os bits se acumulam, com aproximadamente 33 bits separando uma pessoa entre 8,6 bilhões. Sinais correlacionados somam menos do que a soma das partes (platform: MacIntel e um user agent Macintosh são praticamente o mesmo bit), então figuras publicadas por atributo nunca se somam de forma simples. O Panopticlick mediu aproximadamente 10,0 bits para o User-Agent, 6,09 para os cabeçalhos Accept, 4,83 para resolução de tela mais profundidade de cor e 3,04 para fuso horário; os famosos ~18,1 bits eram a média de um fingerprint inteiro naquele estudo, dominada pela enumeração de plugins (15,4 bits) e de fontes (13,9 bits) que os navegadores modernos em grande parte fecharam — e, como os valores de cabeçalho e de tela se sobrepõem, eles não podem se combinar acima daquela média de fingerprint inteiro. Trabalhos posteriores sobre uma população muito maior (Gomez-Boix et al., 2 milhões de fingerprints) encontraram navegadores cotidianos ainda menos únicos. A lição é o mecanismo, não um número-alvo: uma dúzia de atributos entediantes é suficiente para manter um visitante que retorna reconhecível sem cookie algum.

Duas consequências que engenheiros entendem ao contrário: o endereço IP é o identificador mais durável da pilha e um dos sinais de localização mais fracos; e a entropia é simétrica, então falsificar um valor para algo incomum torna você mais identificável. Um User-Agent que se diz iPhone ao lado de uma tela de 3440×1440, 16 núcleos de CPU e maxTouchPoints: 0 é um fingerprint de um.

Referência de sinais

SinalObservadorEntropia aproximadaEstabilidade
IP públicoRede, antes do JSAlta, compartilhada com pares atrás de NATMuda por rede / VPN
ASN + organizaçãoRede, antes do JS~5–10 bitsEstável por provedor
Accept-LanguageCabeçalho de requisição~5–8 bitsMuito estável
User-Agent, Sec-CH-UA-*Cabeçalho + JS~10 bits, encolhendoEstável até a atualização do navegador
Fuso horárioJS~3–5 bits (~400 fusos IANA)Viaja com você, não com o IP
Tela + devicePixelRatioJS~5–8 bitsMuda quando você acopla um monitor
Núcleos de CPU (hardwareConcurrency)JS~2–3 bitsFixo por máquina; contagem bruta, não agrupada (6, 10, 12, 20 são todos comuns)
Memória do dispositivo (deviceMemory)JS~1–2 bitsFixa; agrupada em 0,25/0,5/1/2/4/8 GB e limitada a 8
Renderização em canvasJS~8 bitsMuito estável por GPU + driver
String do renderizador WebGLJS~10 bits ou maisMuito estável
Enumeração de fontesJSAlta no desktopEstável por instalação
ID em cookie / localStorageAtribuído pelo servidorÚnico por projetoAté o usuário apagar

As figuras são estimativas de ordem de grandeza vindas de estudos populacionais publicados, não uma medição do seu navegador: um sinal vale mais bits em uma população diversa e menos em uma homogênea. Note que a última linha é o único identificador que um usuário pode apagar — tudo acima dela se regenera na visita seguinte.

O que vai embora junto com o artefato

A maioria dos vazamentos reais não é rastreamento. É um artefato de depuração colado em um ticket.

ArtefatoO que o destinatário ganhaCampos que carregam isso
Exportação HARUma sessão funcionando, mais todo corpo de resposta que aquela aba conseguia lerCookie, Set-Cookie, Authorization, x-api-key, ?token=, postData.text, content.text
Uma URL em um ticketIdentidade da conta e acesso que continua funcionando até expirar?session=, ?sig=, X-Amz-Signature, parâmetros de rastreamento com um e-mail em hash
Um JWT em um relatório de bugQuem é o usuário e o que ele pode fazer — sem chave nenhuma para lersub, email, tenant, roles, exp
Cabeçalhos de e-mail brutos, .emlO caminho real do remetente e a sua topologia internaReceived: (host from, IP de origem), X-Originating-IP, hostnames internos em by
Uma linha de log em um ticketO IP real do usuário ao lado do modelo do dispositivo e da build do sistemaX-Forwarded-For, remote_addr, tokens de modelo do User-Agent (SM-G991B, Build/…)
Captura de tela do DevToolsQualquer painel que estivesse aberto, como pixels que nenhum scanner de segredos vai pegarNetwork → corpo da resposta, Application → coluna Value dos Cookies

Qual ferramenta para qual pergunta

«Em qual endereço eu estou agora?» é a única pergunta que não pode ser respondida localmente: só um endpoint remoto vê o endereço pelo qual você sai, e é por isso que o Verificar IP consulta api.sitekits.dev (metadados devolvidos de volta, nada armazenado). O ifconfig lhe dá um endereço de rede local, não o que a lista de permissões do seu firewall precisa. «O que um script consegue ler sobre esta máquina?» é o caso oposto, inteiramente local: a Impressão Digital do Navegador cobre as linhas de cabeçalho, tela e hardware mais uma assinatura de canvas truncada, mas não enumera fontes, WebGL ou áudio — leia como auxílio de inspeção, não como pontuação de unicidade. Recorra ao Parseador UserAgent quando você tem uma string de UA vinda de um log e nenhum navegador ao vivo.

Use os Cabeçalhos HTTP para auditar o que uma origem diz sobre a sua privacidade: o Referrer-Policy decide quanto da URL é encaminhado a terceiros, e as flags do Set-Cookie decidem quanto tempo um identificador atribuído sobrevive. A busca acontece no servidor, então você recebe cabeçalhos brutos da origem sem ruído do navegador — apenas cabeçalhos, nunca o corpo.

Roteirizando a tabela acima: passe uma exportação HAR pelo Sanitizador HAR antes de ela sair da sua máquina — ele substitui os cabeçalhos que casam, os tokens da query string e os dois corpos por [REDACTED] e informa quantos valores tocou — e depois abra a cópia sanitizada no Visualizador HAR para confirmar que os tempos e códigos de status de que você precisava sobreviveram; esse par é coberto no guia do HAR. Expanda um link suspeito com o Parseador de URL antes de colá-lo, decodifique um token capturado com o Decodificador JWT para ver exatamente quais claims você estaria repassando, e passe um bloco de cabeçalhos brutos pelo Analisador de Cabeçalhos de E-mail para ver a cadeia Received: que você está a ponto de publicar. Esses quatro rodam na página e não enviam nada. Uma captura de tela não tem essa opção: recorte-a, porque desfocar não é ocultar. A higiene de tokens de forma mais ampla fica em ferramentas de segurança e na seleção para segurança.

Pegadinhas

Tratar geolocalização como posição

O campo city é onde o prefixo está registrado. Operadoras móveis aterram regiões inteiras em um único registro, e um ASN de datacenter carregando uma cidade de aparência residencial é uma contradição que vale investigar em vez de aceitar.

Ocultar só os campos que você consegue ver

A ocultação baseada em padrões casa com uma lista fixa de nomes de cabeçalho e com nomes de parâmetro que contenham token|key|secret|password|passwd|pwd|auth|session|sig|signature. Um segredo em um segmento de caminho de URL (/v1/reset/9f3a…) ou sob um nome interno da casa passa batido. Passe os olhos pela saída sanitizada antes de anexá-la.

Esquecer que a própria URL é dado

Query strings aterram em cabeçalhos Referer, em logs de acesso de CDN, no histórico do navegador e em pipelines de analytics. É por isso que URLs assinadas expiram, e por isso que dados pessoais nunca deveriam ser um parâmetro de consulta. Analise antes de colar.

Supor que um cliente HTTP do lado do navegador é neutro

O Testador REST API envia requisições do seu navegador direto para a URL que você digita — sem servidor do sitekits no caminho. Bom para a privacidade, mas o destino, portanto, vê o seu IP real, o seu User-Agent e qualquer credencial que você cole na caixa de cabeçalhos. Use um token descartável quando o endpoint não é seu.

FAQ
O que meu endereço IP conta a um site, além de uma cidade aproximada?
Principalmente ele identifica uma rede, não uma pessoa. O prefixo carrega um ASN e a organização que o anuncia, e é isso que separa um provedor residencial de uma operadora móvel, de uma saída corporativa, de uma região de nuvem ou de um provedor de VPN — uma leitura muito mais confiável do que o campo de cidade. A conexão acrescenta o que nenhum script precisa oferecer: a versão de HTTP negociada, a versão de TLS que o seu cliente ofereceu e o PoP de borda que terminou a requisição. Como o NAT em escala de operadora coloca milhares de assinantes atrás de um único endereço, um IP rotula uma população e não um usuário; o que é genuinamente informativo é uma contradição, como um ASN de datacenter apresentando uma cidade de aparência residencial, ou um fuso horário de JavaScript que discorda do país implicado pelo endereço. O Verificar IP mostra os mesmos campos que qualquer servidor vê.
Uma VPN impede o fingerprinting de navegador?
Não. Uma VPN muda apenas a camada de rede — a sua assinatura de renderização em canvas, a geometria da tela, o conjunto de fontes, o fuso horário e os contadores de hardware permanecem os mesmos, então um visitante que retorna continua reconhecível. Pior: um fuso horário de JavaScript que discorda do país derivado do IP é, por si só, um sinal confiável de VPN.
Quantos bits de entropia tornam um navegador único?
Cerca de 33 bits isolam uma pessoa entre aproximadamente 8,6 bilhões, já que 2^33 é cerca de 8,6e9. Um valor compartilhado por um usuário em 2^k contribui com k bits, e sinais correlacionados somam menos do que a soma das partes. Os famosos ~18,1 bits não são uma figura de cabeçalhos e tela — era a média do Panopticlick para um fingerprint inteiro, dominada pela enumeração de plugins (15,4 bits) e de fontes (13,9 bits) que os navegadores modernos em grande parte fecharam. Cabeçalhos e dados de tela sozinhos ficam bem abaixo disso (aproximadamente 10,0 bits para o User-Agent, 6,09 para os cabeçalhos Accept, 4,83 para resolução de tela mais profundidade de cor) e eles se sobrepõem, então não podem ser somados até aquele total.
O que vaza quando eu colo uma URL em um ticket?
Mais do que a página para a qual ela aponta. Query strings carregam ids de sessão, assinaturas de URLs assinadas que continuam funcionando até expirarem e parâmetros de rastreamento com um e-mail em hash — e são copiadas para cabeçalhos Referer enviados a terceiros, para logs de acesso de CDN, para o histórico do navegador e para pipelines de analytics. Quem decide quanto daquela URL é encaminhado é o Referrer-Policy da origem, não você. Expanda um link antes de colá-lo e mantenha dados pessoais fora dos parâmetros de consulta por completo.
Quais ferramentas do sitekits enviam meus dados para um servidor, e quais ficam no navegador?
Quase todas ficam no navegador — Impressão Digital do Navegador, Sanitizador e Visualizador HAR, Decodificador JWT, Parseador de URL, Parseador UserAgent, Analisador de Cabeçalhos de E-mail e todo formatador ou conversor interpretam o que você cola localmente, então nada sai da página. Três chamam api.sitekits.dev, porque a resposta só é visível de fora da sua própria máquina: Verificar IP (o endereço pelo qual você sai), DNS Lookup (o nome de domínio) e Cabeçalhos HTTP (a URL). Cada uma dessas entradas é usada para aquela única consulta e nunca armazenada, e o verificador de cabeçalhos devolve apenas status e cabeçalhos — nunca recupera o corpo da resposta. O Testador REST API é o único caso externo: as requisições vão do seu navegador direto para a URL que você digita, sem servidor do sitekits no caminho, então quem vê o seu IP real e qualquer credencial que você cole é o destino, não este site. Toda página de ferramenta carrega um selo local / servidor / externo dizendo qual dos três se aplica.