Kurze Antwort
Wie verwende ich einen US-Stadt-Proxy in Python?
Baue die Proxy-URL aus dem Gateway und einem Stadt-Benutzernamen und übergib sie an requests: http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777. Füge -zip- für ein Viertel hinzu oder -session-, um eine IP zu behalten. MetroProxies enthält Stadt-, ZIP- und ASN-Targeting in jedem Plan ab 0,50 $/GB (Oktober 2026). Ohne KYC; mit Krypto bezahlen.
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"))
Wie falle ich von ZIP zu Stadt zu Bundesstaat zurück?
Kleine Orte haben zu einem bestimmten Zeitpunkt möglicherweise keine IP online. Versuche zuerst die engste Anfrage, erweitere Ebene für Ebene und gib die Ebene zurück, die geantwortet hat, damit du sie mit dem Ergebnis speichern kannst. Die folgende Funktion macht genau das und bricht nach der Bundesstaat-Ebene ab, statt endlos zu wiederholen.
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")
Welche Python-Details sorgen für Stolperfallen?
- Neue IP pro Anfrage:
requests.Session()hält die Verbindung offen, sodass der Rotationsmodus eine IP für die gesamte Session liefert. Verwende einfacherequests.get()-Aufrufe oder eine neueSessionpro Anfrage, um zu rotieren. - SOCKS5: Installiere
pip install "requests[socks]"und verwendesocks5h://, damit der Proxy Hostnamen auflöst, nicht dein Rechner. Port 7778. - Sonderzeichen im Passwort: URL-encode sie mit
urllib.parse.quote(password, safe=""). - Timeouts: Setze immer einen; Residential-Exits können langsamer sein als Data-Center-Exits.
- Sei höflich: Halte die Anfragenrate pro Website moderat und befolge robots.txt und die Nutzungsbedingungen.
Wohin sollte ich als Nächstes gehen?
Starte mit dem Fünf-Minuten-Setup, vergleiche mit den Node.js- und curl-Beispielen und behalte IPs mit Sticky Sessions nach Stadt. Alle Docs: Dokumentation.
Was fragen Leute sonst noch zu Python?
Funktioniert httpx auch?
Ja. In httpx 0.28 und neuer übergib proxy="http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777" an httpx.Client(). Ältere Versionen verwendeten ein proxies-Argument.
Wurden diese Beispiele gegen das Gateway ausgeführt?
Sie sind mit python -I -m py_compile auf Python 3.10+ syntaxgeprüft, wobei USERNAME und PASSWORD Platzhalter sind. Führe sie mit deinen eigenen Zugangsdaten aus.
Wie bekomme ich die ASN der Exit-IP?
Das org-Feld der Antwort von ipinfo.io beginnt damit ("AS7922 ..." für Comcast). Für ASN-Targeting füge -asn-7922 zum Benutzernamen hinzu; siehe ASN-Targeting.