A rotação de proxy e uma VPN mudam o seu endereço público em camadas diferentes, e essa diferença decide o que vaza. Uma VPN move cada pacote para um túnel, então o endereço de origem que o alvo vê é o ponto final do túnel. Um proxy fica acima da camada de rede: só as requisições que você envia por ele aparecem na saída, enquanto todo o resto na máquina mantém o endereço real. Acertar essa separação transforma a rotação de uma caixa de seleção em uma decisão de projeto.

De onde o endereço público realmente vem

O endereço que um alvo vê é aquele de onde o seu tráfego saiu por último, e numa conexão doméstica é o endereço do provedor no seu roteador, não algo que a máquina possua. Reiniciar o roteador pode devolver o mesmo contrato, e mudar o endereço MAC dele às vezes produz um novo, mas nenhum dos dois lhe dá um seletor de país. Uma VPN substitui o endereço de origem na camada IP, então cada pacote da máquina, incluindo DNS e atualizações em segundo plano, sai do ponto final do túnel. Um proxy trabalha uma camada acima: aceita uma requisição, abre a própria conexão com o alvo, e só essa requisição aparece na saída. Todo o resto na máquina continua usando o endereço real.

Essa separação explica a maioria das surpresas. Uma extensão de navegador apontada para um proxy muda só o que o navegador envia e mais nada, então um segundo aplicativo no mesmo host ainda vaza o endereço original. Uma VPN de todo o sistema tem o modo de falha oposto: cobre tráfego que você queria manter local e só fecha em caso de falha se o cliente estiver configurado para isso. Escolher entre as duas é realmente escolher qual tráfego precisa se mover.

A rotação então se aplica à camada que você escolheu. Com um proxy, rotação significa que a próxima requisição usa uma saída diferente. Com uma VPN, significa derrubar e reconstruir o túnel, o que é mais lento e aparece como uma reconexão visível.

O que um proxy HTTP pode ler, e o que não pode

Em HTTP simples o proxy vê um URI absoluto na linha de requisição, cada cabeçalho e o corpo. Ele pode registrar tudo isso e reescrever qualquer parte, e é por isso que um proxy gratuito que injeta um script nas respostas faz exatamente o que o protocolo permite. A autenticação usa Proxy-Authorization, e uma credencial ausente ou errada produz 407 Proxy Authentication Required em vez de um erro de conexão.

Em HTTPS o cliente envia CONNECT host:port e o proxy abre um túnel bruto, depois do qual vê bytes cifrados. Ele ainda aprende o nome do host na linha CONNECT e normalmente no campo SNI do handshake TLS, então o registro no nível do nome do host sobrevive mesmo quando a carga útil não. Ler a carga útil exige terminar o TLS com um certificado em que o cliente confie, o que é outro produto com outro risco. A especificação de semântica HTTP define CONNECT como uma requisição de túnel, que é o modelo mental correto para o que uma saída pode e não pode ver.

curl -v -x http://proxy.example.net:8080 https://example.com 2>&1 | grep -E 'CONNECT|Proxy-'

A saída detalhada mostra a linha CONNECT antes de qualquer tráfego TLS, e esse é o momento em que o proxy aprende o seu destino. Um proxy que responde com 407 nunca abriu o túnel, então tentar de novo com outros ajustes de TLS não vai ajudar.

A granularidade da rotação decide o que quebra

Rodar a cada requisição é o ajuste que parece mais seguro e quebra mais. Cookies, tokens CSRF e sessões do lado do servidor estão ligados a uma identidade, e uma identidade que muda entre o login e a chamada seguinte parece ao alvo um sequestro de sessão. Muitos provedores oferecem uma sessão pegajosa codificando-a no nome de usuário do proxy, então a saída fica fixa durante uma janela escolhida.

Escolha a granularidade pela tarefa, não pelo padrão do provedor. Um rastreador que busca páginas independentes pode rodar a cada requisição, enquanto um fluxo de pagamento ou uma API autenticada precisa manter uma saída durante todo o fluxo. As duas chamadas abaixo mostram um nome de usuário pegajoso e um endpoint rotativo simples, e o socks5h esquema resolve nomes no proxy em vez de localmente.

curl -sS -x http://user-session-a1b2:[email protected]:8080 https://ifconfig.me
curl -sS -x socks5h://127.0.0.1:1080 https://ifconfig.me

O DNS local é um vazamento silencioso. Se o cliente resolve o nome antes de conectar, o resolvedor ainda aprende cada host que você visita mesmo que a requisição HTTP saia em outro lugar. A socks5h forma e a resolução do lado do proxy evitam isso, e usá-las não custa nada.

O que o alvo classifica além do endereço

A reputação do endereço é uma entrada entre várias. Os alvos combinam o ASN e o rótulo de data center ou residencial, a impressão digital TLS do cliente, ajustes HTTP/2, a ordem dos cabeçalhos, a taxa de requisições e a forma da navegação. Uma saída residencial movida por um navegador sem interface pode falhar onde uma saída de data center movida por uma sessão real passa.

O tipo de saída define o que você pode afirmar honestamente sobre o tráfego, e cada um traz um custo diferente.

Exit typeWhat the target seesMain cost
Datacenter proxyHosting ASN, cheap, often pre-blockedLow reputation, easy to detect
Residential networkA consumer ISP address belonging to someone elseConsent and terms-of-service exposure
Mobile carrierA carrier NAT address shared by many subscribersPrice, plus shared blame for abuse
Your own cloud egressAn address you are accountable forRecognisable, but defensible

Uma saída compartilhada não é neutra. Todo o resto que roda daquele endereço cai no mesmo balde de reputação, e um endereço já queimado por outros inquilinos falha antes de a sua primeira requisição ser lida.

Escolha uma saída que você consiga descrever numa política

A pergunta útil não é como esconder o endereço, mas quem responde pelo tráfego que sai dele. A sua própria saída de nuvem por tarefa, um provedor contratado com um acordo de processamento de dados e retenção publicada, e uma VPN auto-hospedada com uma identidade por tarefa são todas descritíveis numa frase. Uma lista gratuita não, porque o operador não tem nenhuma obrigação com você e tem todo o incentivo para registrar.

Mantenha os seus próprios limites de taxa abaixo do que o alvo tolera, e colete só os campos que a tarefa precisa, para que um erro continue pequeno. Rodar mais rápido para escapar de um bloqueio costuma aumentar a taxa de requisições que o causou.

Escreva a saída escolhida, a janela de rotação e o proprietário na configuração do trabalho antes da primeira execução. Quando o bloqueio chegar, essa nota é o que lhe diz se deve mudar a saída ou mudar o comportamento.

Artigos relacionados