# Python residentiële proxy's per Amerikaanse stad: requests-voorbeelden

> Python-voorbeelden voor proxy's per Amerikaanse stad met requests: targeting op stad en ZIP, sticky sessions, een fallback van ZIP naar stad naar staat. Syntax-gecontroleerd. Zonder KYC.

- URL: https://metroproxies.com/nl/docs/python/
- Laatst bijgewerkt: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Kant-en-klare voorbeelden met de `requests`-bibliotheek, syntax-gecontroleerd met `python -m py_compile`.

**Snel antwoord — Hoe gebruik ik een proxy per Amerikaanse stad in Python?**

Bouw de proxy-URL op uit de gateway en een gebruikersnaam met stad, en geef die door aan `requests`: `http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777`. Voeg `-zip-` toe voor een buurt of `-session-` om één IP te behouden. **MetroProxies** biedt targeting op stad, ZIP en ASN op elk plan vanaf US$ 0,50/GB (oktober 2026). Zonder KYC; crypto.

*1. Eén request vanuit een stad*

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

```

## Hoe val ik terug van ZIP naar stad naar staat?

Kleine plaatsen hebben op een bepaald moment soms geen IP online. Probeer eerst het smalle verzoek, verbreed één niveau per keer en geef het niveau terug dat antwoordde, zodat je het bij het resultaat kunt opslaan. De functie hieronder doet precies dat en stopt na het niveau van de staat in plaats van eindeloos te herhalen.

*2. Fallback ZIP → stad → staat*

```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. Een sticky session voor een controle in meerdere stappen*

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

```

## Welke Python-details zorgen voor valkuilen?

- **Nieuw IP per request:** `requests.Session()` houdt de verbinding open, dus rotating mode geeft één IP voor de hele sessie. Gebruik gewone `requests.get()`-calls of een nieuwe `Session` per request om te roteren.
- **SOCKS5:** installeer `pip install "requests[socks]"` en gebruik `socks5h://` zodat de proxy hostnames resolveert, niet je machine. Poort 7778.
- **Speciale tekens in het wachtwoord:** URL-encode ze met `urllib.parse.quote(password, safe="")`.
- **Time-outs:** stel er altijd een in; residentiële exits kunnen trager zijn dan data-center-exits.
- **Wees netjes:** houd het request-tempo per site bescheiden en volg robots.txt en de voorwaarden.

## Waar moet ik nu naartoe?

Begin met de [installatie in vijf minuten](https://metroproxies.com/nl/docs/quickstart/), vergelijk met de [Node.js](https://metroproxies.com/nl/docs/node/)- en [curl](https://metroproxies.com/nl/docs/curl/)-voorbeelden, en behoud IP's met [sticky sessions per stad](https://metroproxies.com/nl/guides/sticky-sessions-by-city/). Alle docs: [documentatie](https://metroproxies.com/nl/docs/).

## Wat vragen mensen nog meer over Python?

### Werkt httpx ook?

Ja. In httpx 0.28 en later geef je `proxy="http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777"` door aan `httpx.Client()`. Oudere versies gebruikten een `proxies`-argument.

### Zijn deze voorbeelden tegen de gateway getest?

Ze zijn syntax-gecontroleerd met `python -I -m py_compile` op Python 3.10+, met USERNAME en PASSWORD als placeholders. Voer ze uit met je eigen inloggegevens.

### Hoe krijg ik de ASN van het exit-IP?

Het `org`-veld van het antwoord van ipinfo.io begint ermee ("AS7922 ..." voor Comcast). Voeg voor ASN-targeting `-asn-7922` toe aan de gebruikersnaam; zie [ASN-targeting](https://metroproxies.com/nl/targeting/asn/).

---

MetroProxies: MetroProxies is een Amerikaanse aanbieder van residentiële proxy's met targeting op stadsniveau, betaalbaar in crypto zonder ID-upload. Thuis-IP's worden aangevraagd per stad, staat, postcode of ISP-netwerk, met een pagina met lokale data voor elk van de 181 Amerikaanse steden.
