De proxy-URL#
Elke Python HTTP-bibliotheek neemt een proxy als URL. Met Proxy Cyber draagt de URL uw referenties en de targetingparameters in de gebruikersnaam; de hostnaam is de gateway en de poort kiest het protocol.
# Rotating: a new United States household on every new connection
http://USER-cc-us:PASS@res.proxy-cyber.com:9000
# Sticky: one Berlin household held for 30 minutes under the id "job42"
http://USER-cc-de-city-berlin-sid-job42-ttl-30m:PASS@res.proxy-cyber.com:9000
# SOCKS5 with remote DNS (socks5h), same parameters
socks5h://USER-cc-us:PASS@res.proxy-cyber.com:9001verzoeken#
Verbindingshergebruik en IP-toewijzing zijn verschillende bedieningen. Een clientsessie gebruikt sockets; alleen de toegewezen gateway bepaalt rotatie en kleverig-sessiegedrag. Gebruik de sessieparameters die bij uw service worden geleverd, en verifieer de exit via verschillende verzoeken. Het sluiten van een socket of het verzenden van Verbinding: sluiten garandeert geen ander IP-adres.
import requests
PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
proxies = {"http": PROXY, "https": PROXY}
# One request, one exit
r = requests.get("https://api.ipify.org", proxies=proxies, timeout=30)
print(r.text)
# A sticky flow: same exit for every request of this session
sticky = "http://USER-cc-de-city-berlin-sid-cart42-ttl-15m:PASS@res.proxy-cyber.com:9000"
s = requests.Session()
s.proxies = {"http": sticky, "https": sticky}
s.get("https://example.com/product/1", timeout=30)
s.post("https://example.com/cart", json={"id": 1}, timeout=30)httpx#
httpx heeft een single nodig proxy= argument (oudere versies: proxies=Het ondersteunt HTTP/2 naar de bestemming via de CONNECT tunnel en werkt op dezelfde manier in async code.
import httpx
PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
with httpx.Client(proxy=PROXY, timeout=30) as client:
print(client.get("https://api.ipify.org").text)
# async, one sticky exit per task
import asyncio
async def fetch(sid: str, url: str) -> str:
proxy = f"http://USER-cc-us-sid-{sid}-ttl-10m:PASS@res.proxy-cyber.com:9000"
async with httpx.AsyncClient(proxy=proxy, timeout=30) as client:
return (await client.get(url)).text
asyncio.run(fetch("task1", "https://api.ipify.org"))aiohttp#
aiohttp neemt de proxy per verzoek of per sessie en spreekt HTTP proxy's native; SOCKS5 heeft de aiohttp-socks aansluiting.
import aiohttp, asyncio
PROXY = "http://USER-cc-us:PASS@res.proxy-cyber.com:9000"
async def main():
async with aiohttp.ClientSession() as session:
async with session.get("https://api.ipify.org", proxy=PROXY, timeout=aiohttp.ClientTimeout(total=30)) as r:
print(await r.text())
asyncio.run(main())Rotatie, keep-alive en nieuwe pogingen#
- Een nieuwe TCP-verbinding is een nieuwe transportverbinding, geen bewijs van een nieuwe uitgang. De door de gateway toegewezen rotatiemodus bepaalt hoe die verbinding wordt gerouteerd.
- Gebruik een aparte sessie-identificatie voor elke onafhankelijke workflow, waar de toegewezen gateway het ondersteunt. Bevestig de toegestane duur en locatieparameters in uw verbindingsdetails. Een residentieel apparaat kan voor de gewenste duur worden verbroken; een plakkerige sessie is geen garantie van hetzelfde IP voor dagen. Voor een vast adres, vergelijk een specifiek statisch product.
- Classificeer het antwoord voordat u het opnieuw probeert. Een 403 kan een toegangsregel aangeven die een ander IP-adres niet zal oplossen. Voor 429, respecteer Retry-After en verlaag de aanvraagsnelheid; gebruik begrensde back-off voor tijdelijke verbinding of serverstoringen. Probeer state-changing operaties alleen wanneer u dubbele acties kunt voorkomen.
- Stel time-outs in op het type afslag: 15 s connect en 45 s gelezen voor residentiële, meer voor mobiele.
Gigabytes besparen#
Residentieel verkeer wordt gefactureerd per GB in beide richtingen. Vraag om gecomprimeerde reacties (Accept-Encoding: gzip, br is standaard aan in deze bibliotheken), liever JSON eindpunten dan HTML, en nooit downloaden van afbeeldingen, lettertypen of media tenzij ze de gegevens zijn. Een 350 KB pagina is goedkoop; een 4 MB pagina met activa is niet.
Vragen die mensen stellen#
Waarom krijg ik steeds hetzelfde IP-adres met verzoeken?
Herhaalde IP's kunnen het resultaat zijn van het poolen van verbindingen, een actieve kleverige sessie of de beschikbare pool. Vergelijk de toegewezen routingmodus en test meerdere verzoeken met tijdstempels. Een verzoek.Sessie beheert verbindingen en cookies; het selecteert zelf niet de proxy-exit.
Heb ik een andere proxy nodig voor HTTPS sites?
Nee. Dezelfde http:// proxy URL behandelt HTTPS-bestemmingen via een CONNECT-tunnel; TLS loopt eind aan eind tussen uw code en de site.
Kan ik dezelfde code gebruiken voor mobiele proxies?
Ja: vervang res.proxy-cyber.com door mob.proxy-cyber.com. Ports, referenties en parameters zijn identiek.