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:[email protected]: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.
import requests
user = "USERNAME-country-us-state-il-city-chicago"
proxy = f"http://{user}:[email protected]: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.
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"))
import requests
user = "USERNAME-country-us-state-wa-city-tacoma-session-tac01-ttl-15"
proxy = f"http://{user}:[email protected]: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ọirequests.get()thông thường hoặc mộtSessionmới cho mỗi yêu cầu để luân chuyển. - SOCKS5: cài
pip install "requests[socks]"và dùngsocks5h://để 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, so sánh với các ví dụ Node.js và curl, và giữ IP bằng phiên dính theo thành phố. Toàn bộ tài liệu: tài liệu.
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:[email protected]: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.