Respuesta rápida
¿Cómo uso un proxy de una ciudad de EE. UU. en Python?
Construye la URL del proxy a partir del gateway y un nombre de usuario de ciudad, y pásala a requests: http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777. Añade -zip- para un barrio o -session- para mantener una misma IP. MetroProxies incluye segmentación por ciudad, ZIP y ASN en todos los planes desde 0,50 US$/GB (octubre de 2026). Sin 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"))
¿Cómo hago un fallback de ZIP a ciudad a estado?
Los lugares pequeños pueden no tener ninguna IP en línea en un momento dado. Prueba primero la solicitud más específica, amplía un nivel a la vez y devuelve el nivel que respondió para poder guardarlo con el resultado. La función de abajo hace exactamente eso y se rinde tras el nivel de estado en lugar de reintentar sin fin.
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")
¿Qué detalles de Python suelen causar problemas?
- Nueva IP por solicitud:
requests.Session()mantiene la conexión abierta, así que el modo rotativo da una sola IP para toda la sesión. Usa llamadasrequests.get()simples o un nuevoSessionpor solicitud para rotar. - SOCKS5: instala
pip install "requests[socks]"y usasocks5h://para que el proxy resuelva los nombres de host, no tu máquina. Puerto 7778. - Caracteres especiales en la contraseña: codifícalos con
urllib.parse.quote(password, safe=""). - Timeouts: define siempre uno; las salidas residenciales pueden ser más lentas que las de data center.
- Sé respetuoso: mantén un ritmo de solicitudes moderado en cada sitio y respeta el robots.txt y sus términos.
¿Adónde debería ir ahora?
Empieza por la configuración en cinco minutos, compara con los ejemplos de Node.js y curl, y conserva las IP con sesiones fijas por ciudad. Toda la documentación: documentación.
¿Qué más pregunta la gente sobre Python?
¿httpx también funciona?
Sí. En httpx 0.28 y posteriores, pasa proxy="http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777" a httpx.Client(). Las versiones anteriores usaban un argumento proxies.
¿Se ejecutaron estos ejemplos contra el gateway?
Se verifica su sintaxis con python -I -m py_compile en Python 3.10+, con USERNAME y PASSWORD como marcadores de posición. Ejecútalos con tus propias credenciales.
¿Cómo obtengo el ASN de la IP de salida?
El campo org de la respuesta de ipinfo.io empieza por él ("AS7922 ..." para Comcast). Para la segmentación por ASN, añade -asn-7922 al nombre de usuario; consulta segmentación por ASN.