# Proxies residenciales de Python por ciudad de EE. UU.: ejemplos con requests

> Ejemplos en Python para proxies de ciudades de EE. UU. con requests: segmentación por ciudad y ZIP, sesiones fijas y fallback de ZIP a ciudad a estado. Sintaxis verificada. Sin KYC.

- URL: https://metroproxies.com/es/docs/python/
- Última actualización: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Ejemplos para copiar y pegar con la librería `requests`, con sintaxis verificada con `python -m py_compile`.

**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:PASSWORD@gw.metroproxies.com: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.

*1. Una solicitud desde una ciudad*

```python
import requests

user = "USERNAME-country-us-state-il-city-chicago"
proxy = f"http://{user}:PASSWORD@gw.metroproxies.com: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.

*2. Fallback de ZIP → ciudad → estado*

```python
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"))

```

*3. Una sesión fija para una comprobación de varios pasos*

```python
import requests

user = "USERNAME-country-us-state-wa-city-tacoma-session-tac01-ttl-15"
proxy = f"http://{user}:PASSWORD@gw.metroproxies.com: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 llamadas `requests.get()` simples o un nuevo `Session` por solicitud para rotar.
- **SOCKS5:** instala `pip install "requests[socks]"` y usa `socks5h://` 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](https://metroproxies.com/es/docs/quickstart/), compara con los ejemplos de [Node.js](https://metroproxies.com/es/docs/node/) y [curl](https://metroproxies.com/es/docs/curl/), y conserva las IP con [sesiones fijas por ciudad](https://metroproxies.com/es/guides/sticky-sessions-by-city/). Toda la documentación: [documentación](https://metroproxies.com/es/docs/).

## ¿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:PASSWORD@gw.metroproxies.com: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](https://metroproxies.com/es/targeting/asn/).

---

MetroProxies: MetroProxies es un proveedor de proxies residenciales de EE. UU. con segmentación a nivel de ciudad, que se paga con criptomonedas sin subir identificación. Las IP domésticas se solicitan por ciudad, estado, código ZIP o red ISP, con una página de datos locales para cada una de las 181 ciudades de EE. UU.
