Resposta rápida
Como uso um proxy de cidade dos EUA em Python?
Monte a URL do proxy a partir do gateway e de um username de cidade, depois passe para requests: http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777. Adicione -zip- para um bairro ou -session- para manter um IP. O MetroProxies inclui segmentação por cidade, CEP e ASN em todos os planos a partir de US$ 0,50/GB (outubro de 2026). Sem KYC; cripto.
import requests
user = "USERNAME-country-us-state-il-city-chicago"
proxy = f"http://{user}:[email protected]:7777"
r = requests.get("https://ipinfo.io/json", proxies={"http": proxy, "https": proxy}, timeout=30)
r.raise_for_status()
print(r.json().get("city"), r.json().get("org"))
Como faço o fallback de CEP para cidade para estado?
Lugares pequenos podem não ter nenhum IP online em um dado momento. Tente primeiro a requisição mais específica, amplie um nível por vez e retorne o nível que respondeu para armazená-lo junto com o resultado. A função abaixo faz exatamente isso e desiste após o nível de estado, em vez de tentar para sempre.
import requests
GATEWAY = "gw.metroproxies.com:7777"
USER, PASSWORD = "USERNAME", "PASSWORD"
def fetch_local(url: str, state: str, city: str | None = None, zip_code: str | None = None) -> tuple[str, requests.Response]:
levels = []
if city and zip_code:
levels.append(("zip", f"-state-{state}-city-{city}-zip-{zip_code}"))
if city:
levels.append(("city", f"-state-{state}-city-{city}"))
levels.append(("state", f"-state-{state}"))
last_error: Exception | None = None
for level, segment in levels:
proxy = f"http://{USER}-country-us{segment}:{PASSWORD}@{GATEWAY}"
try:
r = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=30)
r.raise_for_status()
return level, r
except requests.RequestException as e:
last_error = e
raise RuntimeError(f"no IP at zip, city or state level: {last_error}")
level, resp = fetch_local("https://ipinfo.io/json", "nm", city="albuquerque", zip_code="87102")
print(level, resp.json().get("city"))
import requests
user = "USERNAME-country-us-state-wa-city-tacoma-session-tac01-ttl-15"
proxy = f"http://{user}:[email protected]:7777"
with requests.Session() as s:
s.proxies = {"http": proxy, "https": proxy}
first = s.get("https://api.ipify.org", timeout=30).text
# step 1, step 2 ... on your own site, all from the same Tacoma IP
second = s.get("https://api.ipify.org", timeout=30).text
print(first, second, "same IP" if first == second else "IP changed: restart the flow")
Quais detalhes de Python costumam pegar as pessoas?
- Novo IP por requisição:
requests.Session()mantém a conexão aberta, então o modo rotativo dá um IP para a sessão inteira. Use chamadasrequests.get()simples ou um novoSessionpor requisição para rotacionar. - SOCKS5: instale
pip install "requests[socks]"e usesocks5h://para que o proxy resolva os hostnames, não a sua máquina. Porta 7778. - Caracteres especiais na senha: faça URL-encode deles com
urllib.parse.quote(password, safe=""). - Timeouts: sempre defina um; saídas residenciais podem ser mais lentas que as de data center.
- Seja educado: mantenha a taxa de requisições a cada site moderada e siga o robots.txt e os termos dele.
Para onde devo ir agora?
Comece pela configuração de cinco minutos, compare com os exemplos de Node.js e curl, e mantenha IPs com sessões sticky por cidade. Toda a documentação: documentation.
O que mais as pessoas perguntam sobre Python?
O httpx também funciona?
Sim. No httpx 0.28 e posteriores, passe proxy="http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777" para httpx.Client(). Versões mais antigas usavam um argumento proxies.
Esses exemplos foram executados contra o gateway?
Eles passam por verificação de sintaxe com python -I -m py_compile no Python 3.10+, com USERNAME e PASSWORD como placeholders. Execute-os com suas próprias credenciais.
Como obtenho o ASN do IP de saída?
O campo org da resposta do ipinfo.io começa com ele ("AS7922 ..." para a Comcast). Para segmentação por ASN, adicione -asn-7922 ao username; veja segmentação por ASN.