Integrasjoner · Nybegynner

Hvordan bruke proxyer med Python forespørsler, httpx og aiohttp

Tre linjer med konfigurasjon per bibliotek, så samme brukernavn syntaks overalt: land, by og sesjon lever i proxy URL, slik at en gateway tjener hver jobb.

3 min lesetid 6 seksjoner Gjennomgått Redaksjonsteamet Proxy Cyber

URL- en til mellomtjeneren#

Med Proxy Cyber bærer URL-en dine legitimasjoner og nøkkelen til nettstedet du besøker, mens en proxy er et annet navn for en proxy. målrettingsparametre I brukernavnet; vertsnavnet er gatewayen og porten velger protokollen.

URL- er for mellomtjenere
# 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:9001

forespørsler#

En klientøkt bruker sokler på nytt; bare den tildelte gatewayen bestemmer rotasjon og oppførsel for faste økter. Bruk øktparametrene som følger med tjenesten, og bekreft avslutningen over flere forespørsler. Å lukke en sokkel eller sende Connection: close garanterer ikke en annen IP.

forespørsler
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 tar en enkelt proxy= argument (eldre versjoner: proxies=Den støtter HTTP / 2 til destinasjonen gjennom CONNECT tunnelen og fungerer på samme måte i asynkron kode.

httpx
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 tar proxy per forespørsel eller per økt og snakker HTTP-proxyer innfødt; SOCKS5 trenger aiohttp-socks kobling.

aiohttp
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())

Rotasjon, hold-i-live og nye forsøk#

  • En ny TCP-tilkobling er en ny transporttilkobling, ikke bevis på en ny utgang.Gatewayens tildelte rotasjonsmodus bestemmer hvordan denne forbindelsen rutes.
  • Bruk en distinkt øktidentifikator for hver uavhengige arbeidsflyt, der den tildelte gatewayen støtter det. Bekreft tillatt varighet og plasseringsparametre i dine forbindelsesdetaljer. En hjemmeenhet kan koble fra før forespurt varighet; en fast økt er ikke en garanti for samme IP i dager. For en fast adresse, sammenlign et dedikert statisk produkt.
  • Klassifiser svaret før du prøver på nytt. En 403 kan indikere en tilgangsregel som en annen IP ikke vil løse. For 429, respekter Retry- After og reduser forespørselsfrekvensen; bruk begrenset tilbaketrekking for midlertidige tilkoblinger eller tjenerfeil. Prøv tilstandsendring bare når du kan unngå dupliserte handlinger.
  • Sett tidsgrenser til exit type: 15 s koble og 45 s lese for bolig, mer for mobil.

Sparer gigabyte#

Trafikk i boligområder faktureres per GB i begge retninger. Spør etter komprimerte svar (Accept-Encoding: gzip, br Bruk JavaScript (som er på som standard i disse bibliotekene), og foretrekk JSON-endepunkter fremfor HTML. Last aldri ned bilder, fonter eller medier med mindre det er dataene. En side på 350 KB er billig, en side på 4 MB med ressurser er ikke det.

Spørsmål folk stiller#

Hvorfor får jeg fortsatt samme IP med forespørsler?

Gjentatte IP- adresser kan skyldes tilkoblingssamling, en aktiv fast økt eller den ledige samlingen. Sammenlign tilordnet rutemodus og test flere forespørsler med tidsstempler. En forespørsel. Økt håndterer forbindelser og informasjonskapsler; det velger ikke selv mellomtjenerens utgang.

Trenger jeg en annen proxy for HTTPS-nettsteder?

Den samme http://-proxyadressen håndterer HTTPS-destinasjoner gjennom en CONNECT-tunnel; TLS kjører fra ende til annen mellom koden din og nettstedet.

Kan jeg bruke samme kode for mobile proxyer?

Yes: replace res.proxy-cyber.com with mob.proxy-cyber.com. Ports, credentials and parameters are identical.

Din konto og passord

Administrer alle proxyene dine fra én konto

Sammenlign nettverk, legg inn bestillinger og følg saldoen din og forespørsler om støtte fra ett dashbord.Vårt team gjennomgår betalinger og gir tilkoblingsdetaljer etter levering.

Opprett konto