# Proxy residensial Python per kota AS: contoh requests

> Contoh Python untuk proxy kota AS dengan requests: penargetan kota dan ZIP, sesi sticky, fallback ZIP ke kota ke negara bagian. Dicek sintaksnya. Tanpa KYC.

- URL: https://metroproxies.com/id/docs/python/
- Terakhir diperbarui: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Contoh siap salin-tempel dengan library `requests`, dicek sintaksnya dengan `python -m py_compile`.

**Jawaban singkat — Bagaimana cara menggunakan proxy kota AS di Python?**

Susun URL proxy dari gateway dan username kota, lalu teruskan ke `requests`: `http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777`. Tambahkan `-zip-` untuk lingkungan tertentu atau `-session-` untuk mempertahankan satu IP. **MetroProxies** menyertakan penargetan kota, ZIP, dan ASN di setiap paket mulai US$0,50/GB (Oktober 2026). Tanpa KYC; kripto.

*1. Satu request dari sebuah kota*

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

```

## Bagaimana cara fallback dari ZIP ke kota ke negara bagian?

Tempat kecil bisa saja tidak memiliki IP online pada saat tertentu. Coba request paling sempit dulu, lebarkan satu level setiap kali, dan kembalikan level yang merespons agar bisa disimpan bersama hasilnya. Fungsi di bawah melakukan hal itu dan berhenti setelah level negara bagian alih-alih mencoba terus-menerus.

*2. Fallback ZIP → kota → negara bagian*

```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. Sesi sticky untuk pengecekan multi-langkah*

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

```

## Detail Python apa yang sering membuat orang tersandung?

- **IP baru per request:** `requests.Session()` menjaga koneksi tetap terbuka, jadi mode rotating memberi satu IP untuk seluruh sesi. Gunakan panggilan `requests.get()` biasa atau `Session` baru per request untuk merotasi.
- **SOCKS5:** instal `pip install "requests[socks]"` dan gunakan `socks5h://` agar proxy yang me-resolve hostname, bukan mesin Anda. Port 7778.
- **Karakter khusus di password:** URL-encode dengan `urllib.parse.quote(password, safe="")`.
- **Timeout:** selalu setel; exit residensial bisa lebih lambat daripada data-center.
- **Sopan:** jaga laju request ke setiap situs tetap wajar dan patuhi robots.txt serta ketentuannya.

## Ke mana sebaiknya saya pergi selanjutnya?

Mulai dari [pengaturan lima menit](https://metroproxies.com/id/docs/quickstart/), bandingkan dengan contoh [Node.js](https://metroproxies.com/id/docs/node/) dan [curl](https://metroproxies.com/id/docs/curl/), dan pertahankan IP dengan [sesi sticky per kota](https://metroproxies.com/id/guides/sticky-sessions-by-city/). Semua dokumentasi: [dokumentasi](https://metroproxies.com/id/docs/).

## Apa lagi yang orang tanyakan tentang Python?

### Apakah httpx juga bisa?

Ya. Di httpx 0.28 dan lebih baru, teruskan `proxy="http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777"` ke `httpx.Client()`. Versi lama menggunakan argumen `proxies`.

### Apakah contoh-contoh ini dijalankan terhadap gateway?

Contoh-contoh ini dicek sintaksnya dengan `python -I -m py_compile` pada Python 3.10+, dengan USERNAME dan PASSWORD sebagai placeholder. Jalankan dengan kredensial Anda sendiri.

### Bagaimana cara mendapatkan ASN dari IP exit?

Field `org` pada balasan ipinfo.io diawali dengan itu ("AS7922 ..." untuk Comcast). Untuk penargetan ASN, tambahkan `-asn-7922` ke username; lihat [penargetan ASN](https://metroproxies.com/id/targeting/asn/).

---

MetroProxies: MetroProxies adalah penyedia proxy residensial AS dengan penargetan tingkat kota, dibayar dengan kripto tanpa unggah ID. IP rumahan diminta berdasarkan kota, negara bagian, kode ZIP, atau jaringan ISP, dengan satu halaman data lokal untuk masing-masing dari 181 kota di AS.
