Snel antwoord
Hoe gebruik ik een proxy per Amerikaanse stad in Python?
Bouw de proxy-URL op uit de gateway en een gebruikersnaam met stad, en geef die door aan requests: http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777. Voeg -zip- toe voor een buurt of -session- om één IP te behouden. MetroProxies biedt targeting op stad, ZIP en ASN op elk plan vanaf US$ 0,50/GB (oktober 2026). Zonder KYC; 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"))
Hoe val ik terug van ZIP naar stad naar staat?
Kleine plaatsen hebben op een bepaald moment soms geen IP online. Probeer eerst het smalle verzoek, verbreed één niveau per keer en geef het niveau terug dat antwoordde, zodat je het bij het resultaat kunt opslaan. De functie hieronder doet precies dat en stopt na het niveau van de staat in plaats van eindeloos te herhalen.
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")
Welke Python-details zorgen voor valkuilen?
- Nieuw IP per request:
requests.Session()houdt de verbinding open, dus rotating mode geeft één IP voor de hele sessie. Gebruik gewonerequests.get()-calls of een nieuweSessionper request om te roteren. - SOCKS5: installeer
pip install "requests[socks]"en gebruiksocks5h://zodat de proxy hostnames resolveert, niet je machine. Poort 7778. - Speciale tekens in het wachtwoord: URL-encode ze met
urllib.parse.quote(password, safe=""). - Time-outs: stel er altijd een in; residentiële exits kunnen trager zijn dan data-center-exits.
- Wees netjes: houd het request-tempo per site bescheiden en volg robots.txt en de voorwaarden.
Waar moet ik nu naartoe?
Begin met de installatie in vijf minuten, vergelijk met de Node.js- en curl-voorbeelden, en behoud IP's met sticky sessions per stad. Alle docs: documentatie.
Wat vragen mensen nog meer over Python?
Werkt httpx ook?
Ja. In httpx 0.28 en later geef je proxy="http://USERNAME-country-us-state-il-city-chicago:[email protected]:7777" door aan httpx.Client(). Oudere versies gebruikten een proxies-argument.
Zijn deze voorbeelden tegen de gateway getest?
Ze zijn syntax-gecontroleerd met python -I -m py_compile op Python 3.10+, met USERNAME en PASSWORD als placeholders. Voer ze uit met je eigen inloggegevens.
Hoe krijg ik de ASN van het exit-IP?
Het org-veld van het antwoord van ipinfo.io begint ermee ("AS7922 ..." voor Comcast). Voeg voor ASN-targeting -asn-7922 toe aan de gebruikersnaam; zie ASN-targeting.