# Proxy residenziali Python per città USA: esempi con requests

> Esempi Python per proxy per città USA con requests: targeting per città e CAP, sessioni sticky, fallback da CAP a città a stato. Verificati sintatticamente. Senza KYC.

- URL: https://metroproxies.com/it/docs/python/
- Ultimo aggiornamento: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Esempi copia-incolla con la libreria `requests`, verificati sintatticamente con `python -m py_compile`.

**Risposta rapida — Come uso un proxy per città USA in Python?**

Costruisci l'URL del proxy dal gateway e da un username con città, poi passalo a `requests`: `http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777`. Aggiungi `-zip-` per un quartiere o `-session-` per mantenere un solo IP. **MetroProxies** include il targeting per città, CAP e ASN su ogni piano da 0,50 USD/GB (ottobre 2026). Senza KYC; crypto.

*1. Una richiesta da una città*

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

```

## Come faccio il fallback da CAP a città a stato?

I piccoli centri possono non avere IP online in un dato momento. Prova prima la richiesta più stretta, allarga un livello alla volta e restituisci il livello che ha risposto così puoi salvarlo con il risultato. La funzione qui sotto fa esattamente questo e si ferma dopo il livello stato invece di riprovare all'infinito.

*2. Fallback CAP → città → stato*

```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 sessione sticky per un controllo in più passaggi*

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

```

## Quali dettagli Python mettono in difficoltà le persone?

- **Nuovo IP per richiesta:** `requests.Session()` mantiene la connessione aperta, quindi la modalità rotante dà un IP per l'intera sessione. Usa chiamate `requests.get()` semplici o un nuovo `Session` per ogni richiesta per ruotare.
- **SOCKS5:** installa `pip install "requests[socks]"` e usa `socks5h://` in modo che sia il proxy a risolvere i nomi host, non la tua macchina. Porta 7778.
- **Caratteri speciali nella password:** codificali con URL encoding usando `urllib.parse.quote(password, safe="")`.
- **Timeout:** impostane sempre uno; le uscite residenziali possono essere più lente di quelle dei data center.
- **Sii rispettoso:** mantieni una frequenza di richieste modesta verso ogni sito e segui robots.txt e i suoi termini.

## Dove dovrei andare dopo?

Inizia dalla [configurazione in cinque minuti](https://metroproxies.com/it/docs/quickstart/), confronta con gli esempi [Node.js](https://metroproxies.com/it/docs/node/) e [curl](https://metroproxies.com/it/docs/curl/) e mantieni gli IP con le [sessioni sticky per città](https://metroproxies.com/it/guides/sticky-sessions-by-city/). Tutta la documentazione: [documentazione](https://metroproxies.com/it/docs/).

## Cos'altro chiedono le persone su Python?

### Funziona anche httpx?

Sì. In httpx 0.28 e successivi, passa `proxy="http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777"` a `httpx.Client()`. Le versioni precedenti usavano un argomento `proxies`.

### Questi esempi sono stati eseguiti tramite il gateway?

Vengono verificati sintatticamente con `python -I -m py_compile` su Python 3.10+, con USERNAME e PASSWORD come segnaposto. Eseguili con le tue credenziali.

### Come ottengo l'ASN dell'IP di uscita?

Il campo `org` della risposta di ipinfo.io inizia con esso ("AS7922 ..." per Comcast). Per il targeting ASN, aggiungi `-asn-7922` all'username; vedi [targeting ASN](https://metroproxies.com/it/targeting/asn/).

---

MetroProxies: MetroProxies è un provider di proxy residenziali USA con targeting a livello di città, pagabile in crypto senza caricare documenti. Gli IP residenziali si richiedono per città, stato, codice ZIP o rete ISP, con una pagina di dati locali per ciascuna delle 181 città USA.
