# Proxies résidentiels Python par ville américaine : exemples avec requests

> Exemples Python pour les proxies par ville américaine avec requests : ciblage par ville et ZIP, sessions sticky, fallback ZIP → ville → état. Vérifiés syntaxiquement. Sans KYC.

- URL: https://metroproxies.com/fr/docs/python/
- Dernière mise à jour: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Exemples prêts à copier-coller avec la bibliothèque `requests`, vérifiés syntaxiquement avec `python -m py_compile`.

**Réponse rapide — Comment utiliser un proxy par ville américaine en Python ?**

Construisez l'URL du proxy à partir de la passerelle et d'un nom d'utilisateur de ville, puis passez-la à `requests` : `http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777`. Ajoutez `-zip-` pour un quartier ou `-session-` pour conserver une seule IP. **MetroProxies** inclut le ciblage par ville, ZIP et ASN sur chaque offre à partir de 0,50 $US/GB (octobre 2026). Sans KYC ; paiement en crypto.

*1. Une requête depuis une ville*

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

```

## Comment faire un fallback de ZIP vers ville puis état ?

Les petits endroits peuvent n'avoir aucune IP en ligne à un moment donné. Essayez d'abord la requête la plus précise, élargissez un niveau à la fois, et renvoyez le niveau qui a répondu pour le stocker avec le résultat. La fonction ci-dessous fait exactement cela et abandonne après le niveau état au lieu de réessayer indéfiniment.

*2. Fallback ZIP → ville → état*

```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. Une session sticky pour une vérification en plusieurs étapes*

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

```

## Quels détails Python piègent les gens ?

- **Nouvelle IP par requête :** `requests.Session()` garde la connexion ouverte, donc le mode rotation donne une IP pour toute la session. Utilisez des appels `requests.get()` simples ou une nouvelle `Session` par requête pour rotate.
- **SOCKS5 :** installez `pip install "requests[socks]"` et utilisez `socks5h://` pour que le proxy résolve les noms d'hôtes, pas votre machine. Port 7778.
- **Caractères spéciaux dans le mot de passe :** encodez-les en URL avec `urllib.parse.quote(password, safe="")`.
- **Timeouts :** définissez-en toujours un ; les sorties résidentielles peuvent être plus lentes que celles des data centers.
- **Restez courtois :** gardez un débit de requêtes modeste vers chaque site et respectez robots.txt et ses conditions.

## Où aller ensuite ?

Commencez par la [configuration en cinq minutes](https://metroproxies.com/fr/docs/quickstart/), comparez avec les exemples [Node.js](https://metroproxies.com/fr/docs/node/) et [curl](https://metroproxies.com/fr/docs/curl/), et conservez les IP avec les [sessions sticky par ville](https://metroproxies.com/fr/guides/sticky-sessions-by-city/). Toute la doc : [documentation](https://metroproxies.com/fr/docs/).

## Que demandent d'autre les gens à propos de Python ?

### Est-ce que httpx fonctionne aussi ?

Oui. Dans httpx 0.28 et versions ultérieures, passez `proxy="http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777"` à `httpx.Client()`. Les versions plus anciennes utilisaient un argument `proxies`.

### Ces exemples ont-ils été testés sur la passerelle ?

Ils sont vérifiés syntaxiquement avec `python -I -m py_compile` sur Python 3.10+, avec USERNAME et PASSWORD comme placeholders. Exécutez-les avec vos propres identifiants.

### Comment obtenir l'ASN de l'IP de sortie ?

Le champ `org` de la réponse d'ipinfo.io commence par celui-ci ("AS7922 ..." pour Comcast). Pour le ciblage par ASN, ajoutez `-asn-7922` au nom d'utilisateur ; voir [ciblage ASN](https://metroproxies.com/fr/targeting/asn/).

---

MetroProxies: MetroProxies est un fournisseur de proxies résidentiels US avec ciblage au niveau de la ville, payable en crypto sans envoi de pièce d'identité. Les IP résidentielles sont demandées par ville, État, code ZIP ou réseau ISP, avec une page de données locales pour chacune des 181 villes US.
