# Proxy rezydencjalne w Pythonie według miast USA: przykłady z requests

> Przykłady w Pythonie dla proxy w miastach USA z requests: targetowanie po mieście i kodzie ZIP, sesje sticky, fallback ZIP → miasto → stan. Sprawdzone składniowo. Bez KYC.

- URL: https://metroproxies.com/pl/docs/python/
- Ostatnia aktualizacja: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Przykłady do skopiowania z biblioteką `requests`, sprawdzone składniowo za pomocą `python -m py_compile`.

**Szybka odpowiedź — Jak używać proxy w mieście USA w Pythonie?**

Zbuduj URL proxy z bramy i nazwy użytkownika dla miasta, a następnie przekaż go do `requests`: `http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777`. Dodaj `-zip-` dla dzielnicy lub `-session-`, aby utrzymać jedno IP. **MetroProxies** obejmuje targetowanie po mieście, ZIP i ASN w każdym planie od 0,50 USD/GB (październik 2026). Bez KYC; krypto.

*1. Jedno żądanie z miasta*

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

```

## Jak ustawić fallback z ZIP do miasta do stanu?

Małe miejscowości mogą w danym momencie nie mieć żadnego IP online. Najpierw spróbuj najwęższego zapytania, rozszerzaj o jeden poziom naraz i zwróć poziom, który odpowiedział, aby zapisać go z wynikiem. Funkcja poniżej robi dokładnie to i rezygnuje po poziomie stanu, zamiast ponawiać w nieskończoność.

*2. Fallback ZIP → miasto → stan*

```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. Sesja sticky dla wieloetapowego sprawdzenia*

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

```

## Które szczegóły Pythona sprawiają ludziom problem?

- **Nowe IP na żądanie:** `requests.Session()` utrzymuje połączenie otwarte, więc tryb rotacji daje jedno IP na całą sesję. Używaj zwykłych wywołań `requests.get()` lub nowego `Session` na każde żądanie, aby rotować.
- **SOCKS5:** zainstaluj `pip install "requests[socks]"` i używaj `socks5h://`, aby nazwy hostów rozwiązywało proxy, a nie twoja maszyna. Port 7778.
- **Znaki specjalne w haśle:** zakoduj je URL-em za pomocą `urllib.parse.quote(password, safe="")`.
- **Timeouty:** zawsze ustawiaj; wyjścia rezydencjalne mogą być wolniejsze niż data-center.
- **Bądź uprzejmy:** utrzymuj umiarkowane tempo żądań do każdej witryny i przestrzegaj robots.txt oraz jej regulaminu.

## Gdzie warto zajrzeć dalej?

Zacznij od [konfiguracji w pięć minut](https://metroproxies.com/pl/docs/quickstart/), porównaj z przykładami [Node.js](https://metroproxies.com/pl/docs/node/) i [curl](https://metroproxies.com/pl/docs/curl/), i utrzymuj IP dzięki [sesjom sticky według miasta](https://metroproxies.com/pl/guides/sticky-sessions-by-city/). Cała dokumentacja: [dokumentacja](https://metroproxies.com/pl/docs/).

## O co jeszcze ludzie pytają w kontekście Pythona?

### Czy httpx też działa?

Tak. W httpx 0.28 i nowszych przekaż `proxy="http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777"` do `httpx.Client()`. Starsze wersje używały argumentu `proxies`.

### Czy te przykłady były uruchamiane na bramie?

Są sprawdzane składniowo za pomocą `python -I -m py_compile` na Pythonie 3.10+, z USERNAME i PASSWORD jako placeholderami. Uruchom je z własnymi danymi logowania.

### Jak uzyskać ASN wyjściowego IP?

Pole `org` w odpowiedzi ipinfo.io zaczyna się od niego ("AS7922 ..." dla Comcast). Do targetowania po ASN dodaj `-asn-7922` do nazwy użytkownika; zobacz [targetowanie po ASN](https://metroproxies.com/pl/targeting/asn/).

---

MetroProxies: MetroProxies to dostawca proxy rezydencjalnych w USA z targetowaniem na poziomie miasta, płatne w krypto bez wysyłania dokumentów tożsamości. Adresy IP z domowych łączy są zamawiane według miasta, stanu, kodu ZIP lub sieci ISP, a dla każdego z 181 miast w USA dostępna jest strona z lokalnymi danymi.
