# Proxy dân cư Python theo thành phố Hoa Kỳ: ví dụ với requests

> Ví dụ Python cho proxy thành phố Hoa Kỳ với requests: nhắm mục tiêu theo thành phố và ZIP, phiên dính, dự phòng ZIP → thành phố → bang. Đã kiểm tra cú pháp. Không cần KYC.

- URL: https://metroproxies.com/vi/docs/python/
- Cập nhật lần cuối: 2026-10-18
- Publisher: MetroProxies (https://metroproxies.com)

Ví dụ sao chép-dán với thư viện `requests`, đã kiểm tra cú pháp bằng `python -m py_compile`.

**Trả lời nhanh — Làm thế nào để dùng proxy thành phố Hoa Kỳ trong Python?**

Tạo URL proxy từ gateway và tên người dùng chứa thành phố, rồi truyền vào `requests`: `http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777`. Thêm `-zip-` để chọn khu vực hoặc `-session-` để giữ một IP. **MetroProxies** hỗ trợ nhắm mục tiêu theo thành phố, ZIP và ASN trên mọi gói từ 0,50 US$/GB (tháng 10 năm 2026). Không cần KYC; thanh toán bằng crypto.

*1. Một yêu cầu từ một thành phố*

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

```

## Làm thế nào để dự phòng từ ZIP sang thành phố rồi sang bang?

Những nơi nhỏ có thể không có IP trực tuyến tại một thời điểm. Hãy thử yêu cầu hẹp nhất trước, mở rộng dần từng cấp một, và trả về cấp đã phản hồi để bạn có thể lưu kèm kết quả. Hàm bên dưới làm đúng như vậy và dừng sau cấp bang thay vì thử lại mãi mãi.

*2. Dự phòng ZIP → thành phố → bang*

```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. Một phiên dính cho kiểm tra nhiều bước*

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

```

## Chi tiết Python nào khiến người ta hay vướng?

- **IP mới mỗi yêu cầu:** `requests.Session()` giữ kết nối mở, nên chế độ luân chuyển cho một IP cho cả phiên. Dùng các lệnh gọi `requests.get()` thông thường hoặc một `Session` mới cho mỗi yêu cầu để luân chuyển.
- **SOCKS5:** cài `pip install "requests[socks]"` và dùng `socks5h://` để proxy phân giải tên máy chủ, không phải máy của bạn. Cổng 7778.
- **Ký tự đặc biệt trong mật khẩu:** mã hóa URL chúng bằng `urllib.parse.quote(password, safe="")`.
- **Thời gian chờ:** luôn đặt một giá trị; đầu ra dân cư có thể chậm hơn đầu ra data-center.
- **Lịch sự:** giữ tốc độ yêu cầu tới mỗi trang ở mức vừa phải và tuân theo robots.txt cùng điều khoản của trang.

## Tôi nên đi đâu tiếp theo?

Bắt đầu từ [thiết lập năm phút](https://metroproxies.com/vi/docs/quickstart/), so sánh với các ví dụ [Node.js](https://metroproxies.com/vi/docs/node/) và [curl](https://metroproxies.com/vi/docs/curl/), và giữ IP bằng [phiên dính theo thành phố](https://metroproxies.com/vi/guides/sticky-sessions-by-city/). Toàn bộ tài liệu: [tài liệu](https://metroproxies.com/vi/docs/).

## Người ta còn hỏi gì về Python?

### httpx có dùng được không?

Có. Trong httpx 0.28 trở lên, truyền `proxy="http://USERNAME-country-us-state-il-city-chicago:PASSWORD@gw.metroproxies.com:7777"` vào `httpx.Client()`. Các phiên bản cũ dùng đối số `proxies`.

### Các ví dụ này có được chạy thử với gateway không?

Chúng được kiểm tra cú pháp bằng `python -I -m py_compile` trên Python 3.10+, với USERNAME và PASSWORD là chỗ giữ chỗ. Hãy chạy chúng bằng thông tin đăng nhập của bạn.

### Làm thế nào để lấy ASN của IP đầu ra?

Trường `org` trong phản hồi của ipinfo.io bắt đầu bằng nó ("AS7922 ..." cho Comcast). Để nhắm mục tiêu theo ASN, thêm `-asn-7922` vào tên người dùng; xem [nhắm mục tiêu theo ASN](https://metroproxies.com/vi/targeting/asn/).

---

MetroProxies: MetroProxies là nhà cung cấp proxy dân cư Mỹ với nhắm mục tiêu cấp thành phố, thanh toán bằng crypto không cần tải ID. IP nhà dân được yêu cầu theo thành phố, tiểu bang, mã ZIP hoặc mạng ISP, kèm một trang dữ liệu địa phương cho từng thành phố trong số 181 thành phố Mỹ.
