O primeiro instinto ao configurar um proxy é escolher a localização mais próxima de você. Parece que deveria ser o mais rápido, e muitas vezes fornece dados errados. Um site não sabe onde você está sentado. Ele vê a saída, então, com um proxy residencial, o país de saída decide qual versão do site você recebe.
Este guia mostra como escolher um país de saída de acordo com o que você está tentando descobrir, como verificar se um site reage de alguma forma, e quando a saída mais próxima realmente é a escolha certa.
A pergunta a se fazer primeiro
Não pergunte onde você está. Pergunte de qual visão você precisa.
| O que você está fazendo | Escolha uma saída em |
|---|---|
| Monitorar preços da concorrência | O mercado em que seus clientes compram |
| Verificar classificações de busca | O local onde está o pesquisador, até o nível da cidade se necessário |
| Verificar anúncios | O país que a campanha tem como alvo |
| Testar um site localizado | Cada mercado em que você vende, um de cada vez |
| Verificar seus próprios redirecionamentos geográficos | Cada país que a regra cobre, além de um que ela não cobre |
| Coletar conteúdo que não varia | Perto do alvo, com um pool amplo |
Uma equipe na Alemanha monitorando preços dos EUA não obtém nada útil a partir de uma saída alemã: ela veria euros e talvez um catálogo diferente, e os dados pareceriam perfeitamente corretos.
Teste se o site reage
Nem todo site muda de acordo com o IP. Antes de planejar em torno de um país de saída, meça isso. O script abaixo solicita uma página a partir de vários países, confirma de onde cada solicitação realmente saiu e registra o que a página mostrou. Ele roda no Python 3.9 e posterior com requests. As credenciais vêm de variáveis de ambiente, então mantenha-as fora do seu código.
from __future__ import annotations
import os
import re
import requests
GATEWAY = "p.shifter.io:443"
USER, PASSWORD = os.environ["PROXY_USER"], os.environ["PROXY_PASS"]
def session_for(country):
proxy = f"http://{USER}-country-{country}:{PASSWORD}@{GATEWAY}"
s = requests.Session()
s.proxies = {"http": proxy, "https": proxy}
s.headers["User-Agent"] = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/130.0 Safari/537.36")
return s
def signals(url, country):
"""What this page shows a visitor from one country, and where they really exited."""
s = session_for(country)
try:
exit_country = s.get("https://ip-info.com/json", timeout=30).json().get("country")
r = s.get(url, timeout=30)
except (requests.RequestException, ValueError) as exc:
return {"exit": country.upper(), "error": type(exc).__name__}
lang = re.search(r'<html[^>]*\blang=["\']?([\w-]+)', r.text, re.I)
currency = re.search(r'priceCurrency["\']?\s*(?:content=|:)\s*["\']([A-Z]{3})', r.text)
price = re.search(r'itemprop=["\']price["\']\s+content=["\']([\d.,]+)', r.text)
return {"exit": exit_country, "status": r.status_code, "final_url": r.url,
"lang": lang.group(1) if lang else None,
"currency": currency.group(1) if currency else None,
"price": price.group(1) if price else None}
if __name__ == "__main__":
for url in ("https://www.apple.com/shop/buy-iphone",
"https://store.steampowered.com/app/620/Portal_2/"):
print(url)
for country in ("us", "de", "gb", "br"):
s = signals(url, country)
print(f" exit {s['exit']} {s.get('status')} lang={s.get('lang')} "
f"{s.get('currency')} {s.get('price') or ''}".rstrip())
Executamos isso em 4 de novembro de 2026 com uma conta de teste da Shifter. Estes são os resultados, e os preços vão mudar com o tempo:
https://www.apple.com/shop/buy-iphone
exit US 200 lang=en-US USD
exit DE 200 lang=en-US USD
exit GB 200 lang=en-US USD
exit BR 200 lang=en-US USD
https://store.steampowered.com/app/620/Portal_2/
exit US 200 lang=en USD 9.99
exit DE 200 lang=en EUR 9,69
exit GB 200 lang=en GBP 8.19
exit BR 200 lang=en BRL 33,99
Esses dois sites mostram os dois casos que você precisa conhecer.
A Apple não reage ao IP. Toda saída recebeu a mesma página dos EUA em USD. A Apple mantém sua localização na URL: /de/shop/buy-iphone serve a loja alemã. Seu país de saída não fez nenhuma diferença para essa página, então escolher um por geografia não alcançaria nada.
A Steam reage. A URL e o idioma permaneceram os mesmos, mas a moeda e o preço mudaram de acordo com a saída: USD 9.99, EUR 9,69, GBP 8.19 e BRL 33,99. Uma verificação de preço a partir do país errado fornece a você um número limpo, acreditável e errado, sem nenhum erro para avisá-lo.
Verifique a saída assim como a página, como o script faz. Uma localização errada é muito mais fácil de detectar aqui do que mais tarde em seus dados.
Quando a saída mais próxima é a errada
- Seu público está em outro lugar. Este é o caso mais comum, e os exemplos acima mostram o porquê.
- Seu vizinho é um mercado diferente. Alemanha e Áustria compartilham um idioma, mas nem sempre os preços, e uma moeda compartilhada não significa um catálogo compartilhado. Trate-os como separados.
- O mercado é regional. Alguns resultados variam por cidade ou estado tanto quanto por país. Nosso guia sobre quando a segmentação por cidade importa explica como identificar isso.
- O restante da solicitação não corresponde. Uma saída nos EUA com um idioma de navegador alemão pode resultar em uma combinação estranha dos dois. Geo, fuso horário e localidade devem concordar, então configure-os juntos.
Quando a mais próxima é a certa, e mais próxima de quê
Se um site serve o mesmo conteúdo em todos os lugares, como acontece com a URL da Apple, a geografia deixa de ser sobre precisão e passa a ser sobre desempenho. Mesmo assim, a distância que conta raramente é a da sua mesa. Uma solicitação via proxy vai do seu cliente para o gateway, depois para a saída, depois para o alvo. Uma saída próxima ao alvo encurta o último trecho, não importa a distância em que você esteja.
Então, se o conteúdo não varia, escolha uma saída perto do alvo com bastante disponibilidade de IPs, e meça isso. Países menores têm pools mais escassos, então um mercado vizinho popular pode ser mais confiável quando a localização realmente não importa.
Erros comuns
- Testar um país e presumir o resto. Um site que ignora o IP em uma página pode reagir em outra, como no checkout ou na busca. Teste a página com a qual você se importa.
- Confiar em uma resposta limpa. Uma página na moeda errada ainda retorna 200. Adicione uma verificação para a moeda ou idioma que você espera.
- Presumir que cada etapa segue a saída. Alguns sites se orientam por DNS ou por configurações de conta, além do IP, e o DNS pode não resolver no país de saída. Se isso importar, verifique a página que você recebe.
- Confundir saída com residência. A saída é onde uma solicitação deixa a rede. Isso não diz nada sobre onde seus dados estão armazenados.
- Tratar uma saída como permissão. Mostrar a um site a visão de outro país para testes ou pesquisa é uma coisa. Usá-la para contornar licenciamento, sanções ou os termos de um site é outra. Consulte sua equipe jurídica primeiro.
Resumo
Escolha a saída de acordo com a visão de que você precisa, não de acordo com onde você está. Teste se o site reage ao IP de alguma forma, confirme de onde cada solicitação realmente saiu, e adicione uma verificação para a moeda ou idioma que você espera. Somente quando o conteúdo é o mesmo em todos os lugares a distância entra em jogo, e então o que conta é a distância até o alvo.