WebRTC Leak: o Vazamento que Entrega Seu IP Real com o Proxy Ligado
Proxy ligado não impede o WebRTC de entregar seu IP real — é um comportamento do navegador, não uma falha do proxy. Este artigo explica por que isso acontece, os 5 modos de tratar WebRTC e traz um teste para você ver, agora, se o seu está vazando.
Você configura o proxy, o site mostra o país que você pagou, e o seu IP real sai mesmo assim. Não por um buraco no proxy — por um recurso do navegador funcionando exatamente como foi projetado. Este é o que o WebRTC faz, por que o proxy não tem voz nisso, e os cinco modos de um navegador tratar o assunto.
Por que um proxy bom não impede um vazamento de WebRTC
Proxy configurado no navegador tem um trabalho estreito: pegar as requisições HTTP e HTTPS que o navegador faz e mandar primeiro para outro lugar. Ele faz bem esse trabalho. O mal-entendido é supor que esse trabalho cobre tudo o que o navegador faz em rede, e não cobre.
WebRTC é o padrão que permite dois navegadores trocarem áudio, vídeo e dados diretamente, sem um servidor no meio repassando cada pacote. Videochamada que roda dentro da aba, widget de atendimento ao vivo, sala de reunião pelo navegador — tudo isso é WebRTC. Conexão direta é o propósito inteiro da tecnologia, e conexão direta exige que cada lado saiba onde pode de fato ser alcançado. Então, antes de qualquer chamada começar, o WebRTC sai procurando os endereços que descrevem onde você está na rede.
Essa descoberta não pede autorização à configuração de proxy do navegador e normalmente acontece em UDP, que a maior parte dos proxies HTTP não carrega. O resultado são duas realidades paralelas dentro do mesmo navegador: o tráfego da página chega ao site vindo do proxy, enquanto o WebRTC descobriu e publicou por conta própria o endereço da máquina que está de fato rodando o navegador. As duas coisas são verdade ao mesmo tempo, e um site que lê as duas enxerga a contradição na hora.
O que é WebRTC e por que ele entrega o seu IP real?
Dois computadores atrás de roteadores domésticos não conseguem simplesmente se endereçar. Cada um enxerga um endereço privado na própria rede e não faz ideia do que o mundo vê. O WebRTC resolve isso com um procedimento chamado ICE, que reúne todas as formas plausíveis de chegar até você e oferece a lista para o outro lado, para os dois escolherem um caminho que funcione.
A lista tem três tipos de entrada. Candidatos host são os endereços das suas próprias interfaces de rede, vistos por dentro. Candidatos reflexivos de servidorsão o que um servidor STUN na internet devolve depois que você o contata — na prática, o navegador perguntando a um estranho "de que endereço meu pacote chegou?" e recebendo de volta o seu IP público. Candidatos de relay são endereços num servidor TURN que aceita encaminhar tráfego no seu lugar.
O segundo tipo é onde mora o vazamento. Uma consulta STUN é uma troca pequena em UDP com um servidor público, e a resposta é o endereço que o mundo enxerga para a conexão que o navegador realmente usou — a de verdade, não a do proxy. Essa resposta entra na lista de candidatos, e a lista de candidatos é legível pelo JavaScript. Não há exploração de falha nenhuma. A página simplesmente lê um valor que o navegador já calculou e deixou disponível.
Os dois IPs em jogo, e o que já foi resolvido
A maioria dos testes de vazamento mostra duas coisas, e elas merecem níveis bem diferentes de preocupação.
O IP local é o seu endereço na rede de casa ou do escritório, aquele da faixa privada. Ele vazava livremente e era de fato útil para rastrear, porque contava ao site alguma coisa sobre o formato da sua rede. O Chrome fechou isso na versão 76, substituindo endereços privados por um nome mDNS gerado aleatoriamente — uma sequência de caracteres hexadecimais terminada em .local. Ver esse nome num teste hoje não é vazamento. É a mitigação funcionando.
O IP público é o que importa, e é o que continua exposto pela etapa STUN descrita acima. Se um teste de vazamento mostra um IP público que não é o do seu proxy, o achado é esse. Todo o resto da página é secundário.
Como o navegador alcança a rede por fora do proxy
Vale ser concreto, porque o mecanismo explica todas as mitigações que vêm depois. Quando a coleta ICE começa, o navegador enumera as interfaces de rede e tenta contatar os servidores STUN configurados. Essas tentativas são datagramas UDP. Um proxy HTTP fala HTTP; não tem mecanismo para carregar um datagrama UDP cru, então o navegador nem tenta mandar por ali. Um proxy SOCKS5 pode carregar UDP em tese, mas essa capacidade muitas vezes não está habilitada pelo fornecedor nem é usada pelo navegador nesse caminho.
O datagrama então sai pela rota padrão — a sua conexão de verdade. O servidor STUN responde honestamente. O navegador registra a resposta como candidato válido, porque do ponto de vista dele acabou de descobrir um caminho funcional até a internet, que é exatamente o que pediram para ele encontrar.
O Chrome expõe uma política para isso que vale conhecer pelo nome, porque é o vocabulário que toda ferramenta pega emprestado: WebRtcIPHandling. Os valores vão de default, que usa toda interface disponível, passando por default_public_interface_only, que impede interfaces privadas de serem oferecidas, até disable_non_proxied_udp, que obriga o WebRTC a usar UDP por um proxy SOCKS ou cair para TCP. Esse último valor é a opção mais forte quando você está deliberadamente forçando tráfego por um proxy — e é o antepassado do quinto modo da próxima seção.
Os cinco modos de tratar WebRTC e o que cada um faz de verdade
As ferramentas anti-detect costumam apresentar os mesmos cinco modos com nomes um pouco diferentes. Abaixo, o que está por trás de cada um, descrito pelo mecanismo e não pelo rótulo.
| Modo | O que acontece de fato | Custo |
|---|---|---|
| Bloquear | O construtor RTCPeerConnection é removido e a captura de mídia é recusada. O WebRTC não roda de jeito nenhum. | Nada vaza, mas um Chrome sem RTCPeerConnection já é uma anomalia, e qualquer site que precise de chamada quebra. |
| Substituir | O WebRTC continua existindo, mas os servidores STUN saem da configuração e os endereços reais na descrição de sessão viram 0.0.0.0 antes de alguém ler. | Melhor equilíbrio para a maioria das contas de trabalho. Mídia que precisa de conexão ponto a ponto não estabelece. |
| Real | Nenhuma interferência. O navegador coleta e publica o que encontrar. | Só faz sentido quando o perfil não tem proxy e não tem exigência de separação. |
| Encaminhar | A configuração é filtrada para sobrar só servidor TURN de relay, então os candidatos vêm do relay em vez da descoberta direta. | Mídia continua funcionando. Exige um servidor TURN de verdade, então é a opção com dependência. |
| Desabilitar UDP | A conexão é forçada para transporte só de relay, então nenhum caminho UDP direto é tentado. | Fecha a rota de fuga em UDP e mantém a API presente. Também depende de infraestrutura de relay para ser útil. |
A distinção que passa batido é entre bloquear e substituir. Bloquear remove a capacidade; substituir mantém a capacidade e higieniza o que ela reporta. Do ponto de vista de detecção, são decisões opostas. Um perfil que diz ser Chrome e não consegue construir um RTCPeerConnection se contradisse, e essa contradição é tão barata de detectar quanto ler o user agent — a mesma classe de problema que descrevemos no artigo sobre ruído em canvas e WebGL: a defesa que remove um sinal muitas vezes cria um mais barulhento.
Qual modo usar em cada situação
- Conta de trabalho em marketplace, plataforma de anúncio ou rede social. Substituir. O site nunca vai precisar de conexão ponto a ponto, e o perfil mantém uma superfície de API completa e de aparência comum.
- Perfil que precisa fazer ou receber chamadas. Encaminhar, com um servidor TURN que você controla ou assina. É o único modo em que a mídia funciona e ao mesmo tempo fica atrás do seu relay.
- Perfil endurecido em que nenhum site vai usar mídia. Bloquear é defensável, desde que você aceite que a ausência da API já é um sinal.
- Perfil sem proxy nenhum, na sua própria conexão. Real. Se não há o que esconder, esconder cria anomalia sem benefício.
- SOCKS5 no lugar e postura mais rígida possível. Desabilitar UDP, para nada tentar um caminho de datagrama direto por fora do proxy.
Vale também ser honesto sobre quanto um vazamento custa, porque o nicho costuma descrever isso como catástrofe instantânea e normalmente não é. Um IP público vazado não fecha uma conta sozinho. O que ele faz é bem mais silencioso: entrega à plataforma um vínculo durável entre contas que deveriam não ter relação. Três perfis em três proxies diferentes que uma vez reportaram o mesmo endereço residencial são três contas que a plataforma consegue agrupar, e esse agrupamento não expira quando você corrige a configuração. O dano é retroativo e permanente, e é exatamente por isso que isso se testa antes de a operação crescer, não depois de dar errado.
Teste agora e leia o seu próprio resultado
Leva menos de um minuto e não exige instalar nada. Abra o teste de vazamento de WebRTC no navegador ou perfil que você usa para trabalhar, com o proxy ligado, e compare quatro linhas.
- IP público reportado pela requisição da página. Esse tem que ser o do seu proxy. Se não for, o problema está antes do WebRTC e você resolve isso primeiro com a checagem de IP e proxy.
- IP público descoberto pelo WebRTC. É esse o achado. Igual à linha de cima significa nenhum vazamento. Diferente, e especificamente o seu endereço de casa ou do escritório, significa vazamento.
- Endereço local. Uma sequência hexadecimal terminada em
.localé o resultado esperado e saudável no Chrome atual. Um endereço de faixa privada indica que a mitigação mDNS não está em ação. - Se o RTCPeerConnection sequer existe. Se o teste diz que a API está ausente enquanto o seu perfil afirma ser Chrome, você não está vazando — está anunciando que alguma coisa modifica o navegador.
Rode duas vezes: uma no seu navegador normal com o proxy ligado, outra no perfil que você pretende usar. A comparação ensina mais que qualquer um dos resultados sozinho, porque separa duas perguntas que costumam ser confundidas: se o seu proxy está roteando alguma coisa, e se o seu navegador está vazando por fora dele. Navegador comum com proxy configurado tipicamente passa na primeira e reprova na segunda, e ver os dois resultados lado a lado torna a distinção concreta como explicação nenhuma consegue. Para uma varredura de todos os outros sinais na mesma sentada, nosso roteiro de teste de 60 segundos cobre o resto das camadas.
Como o AlterAntiX trata WebRTC por perfil
No AlterAntiX a política de WebRTC é um campo do perfil, escolhido entre os cinco modos acima e aplicado quando o perfil abre, então dois perfis abertos ao mesmo tempo podem estar sob políticas diferentes. Perfis novos nascem no modo de substituição, que é o padrão porque é a resposta certa para a maioria das contas de trabalho, não porque seja o mais rígido.
O modo de substituição faz duas coisas juntas. Esvazia a lista de servidores ICE, para o navegador nunca perguntar a um STUN qual é o seu endereço público. E intercepta a descrição de sessão e o fluxo de candidatos, reescrevendo para 0.0.0.0 qualquer endereço real que apareça antes de a página ler — deixando em paz o loopback e o endereço não especificado, já que reescrever esses dois seria por si só uma anomalia. O modo de encaminhamento, em vez disso, filtra a lista de servidores para deixar só entradas TURN, e o modo de desabilitar UDP força a conexão para transporte só de relay.
Vale ser claro sobre o limite. Tratar WebRTC direito fecha um buraco específico. Não faz nada pelo fingerprint do navegador, e nada pelo handshake TLS que sai antes de tudo isso — um perfil pode passar num teste de WebRTC com nota máxima e ainda ser identificado por um JA3 ou JA4 que contradiz o próprio user agent. As camadas são independentes, e é por isso que a gente trata as duas como um trabalho só, não como uma opção. O AlterAntiX é download gratuito para desktop em Windows e Linux; a versão de macOS ainda não existe.
- Proxy encaminha requisição de página. O WebRTC descobre caminhos de rede por conta própria, normalmente em UDP, e nunca consulta essa configuração.
- O vazamento vem da etapa STUN, que pergunta a um servidor público qual é o seu endereço real e publica a resposta para o JavaScript.
- Endereço local já está resolvido: o Chrome troca por um nome mDNS .local. Não leia essa linha como vazamento.
- Bloquear o WebRTC para o vazamento e cria outro sinal. Substituir os endereços mantém a API presente e é o padrão melhor.
- A escolha pertence ao perfil, não à máquina — um perfil de atendimento e um perfil de conta de anúncio precisam de modos diferentes.
Perguntas frequentes
WebRTC leak é uma falha do meu proxy?
Não. O proxy está fazendo exatamente o que foi contratado para fazer: encaminhar o tráfego HTTP e HTTPS do navegador. O WebRTC abre um caminho de rede próprio, normalmente em UDP, que não passa por esse encaminhamento. Trocar de fornecedor de proxy não resolve; o que resolve é mudar como o navegador trata o WebRTC.
Desligar o WebRTC completamente é a opção mais segura?
É a mais segura contra vazamento e a pior contra detecção. Chrome real tem RTCPeerConnection; um navegador que diz ser Chrome e não tem esse objeto está declarando uma incompatibilidade que qualquer script confere em uma linha. Bloquear serve para operação onde nenhum site vai usar chamada de voz ou vídeo e o risco de vazamento supera o de parecer estranho.
Meu IP local aparecendo no teste é problema?
Hoje, quase sempre não. Desde o Chrome 76 o navegador substitui endereços privados por um nome mDNS aleatório terminado em .local, e ver esse nome é comportamento normal. O que importa é se o IP público que aparece é o do proxy ou o da sua casa.
Uma VPN resolve o vazamento de WebRTC?
Resolve por acidente, e só em parte. Como a VPN muda a rota de todo o sistema, o IP público que o WebRTC descobre já é o da VPN. Mas isso vale para todos os perfis ao mesmo tempo: cada perfil aberto na máquina passa a compartilhar o mesmo IP, que é justamente o oposto do que uma operação multiconta precisa.
Qual modo devo usar no dia a dia?
Para a maioria das operações de conta de trabalho, o modo que substitui os endereços mantendo o objeto WebRTC presente é o melhor equilíbrio: nenhum IP real sai e o navegador continua parecendo um navegador. Encaminhar é a escolha quando o site precisa de mídia funcionando de verdade e existe um servidor TURN disponível.
Preciso reconfigurar isso a cada perfil?
No AlterAntiX a política de WebRTC é uma propriedade do perfil, então cada perfil carrega a sua e não existe configuração global que sobreponha. Perfis novos são criados no modo de substituição, e você troca perfil a perfil quando alguma operação específica exigir.
Fingerprint e TLS alinhados, de verdade
O AlterAntiX casa o fingerprint do navegador com o TLS na mesma versão de Chrome. Baixe e teste você mesmo.
Baixar o AlterAntiX