Integrationer · Begynder

Hvordan man bruger proxy'er med Python forespørgsler, httpx og aiohttp

Tre linjer af konfiguration pr bibliotek, så den samme brugernavn syntaks overalt: land, by og session lever i proxy URL, så en gateway tjener hvert job.

3 min læsning 6 sektioner Gennemgået Redaktionsteamet Proxy Cyber

Proxy URL- adressen#

Med Proxy Cyber bærer URL'en dine legitimationsoplysninger og den server, der er tilknyttet proxyen, skal bruges til at udføre opgaven. målretningsparametre i brugernavnet; værtsnavnet er gatewayen og porten vælger protokollen.

Proxy URL' er
# 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

anmodninger#

Genbrug af forbindelse og IP-tildeling er forskellige kontrolelementer. En klientsession genbruger sockets, kun den tildelte gateway bestemmer rotation og funktionsmåde for fastlåst session. Brug de sessionsparametre, der leveres med din tjeneste, og bekræft exit over flere anmodninger. Lukning af en socket eller afsendelse af Connection: close garanterer ikke en anden IP.

anmodninger
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 tager en enkelt proxy= argument (ældre versioner: proxies=Den understøtter HTTP/2 til destinationen gennem CONNECT tunnellen og fungerer på samme måde 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 tager proxyen pr. forespørgsel eller pr. session og taler HTTP-proxyer naturligt; SOCKS5 har brug for aiohttp-socks stik.

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

Rotation, hold-i-live og genforsøg#

  • En ny TCP-forbindelse er en ny transportforbindelse, ikke et bevis på en ny exit.Gateways tildelte rotationstilstand bestemmer, hvordan forbindelsen rutes.
  • Brug et særskilt sessions-id til hver uafhængig arbejdsgang, hvor den tildelte gateway understøtter det. Bekræft de tilladte varigheds- og placeringsparametre i dine forbindelsesoplysninger. En hjemmeenhed kan afbryde forbindelsen før den ønskede varighed; en fastlåst session er ikke en garanti for samme IP i dagevis. For en fast adresse skal du sammenligne med et dedikeret statisk produkt.
  • Klassificer svaret, før du forsøger igen. En 403 kan angive en adgangsregel, som en anden IP ikke vil løse. For 429 skal du respektere Retry-After og reducere anmodningsfrekvensen. Brug begrænset tilbagetrækning til midlertidige forbindelser eller serverfejl.
  • Indstil timeouts til exit type: 15 s forbinde og 45 s læse for bolig, mere for mobil.

Sparer gigabytes#

Privat trafik faktureres pr. GB i begge retninger. Spørg efter komprimerede svar (Accept-Encoding: gzip, br Brug JavaScript (som er slået til som standard i disse biblioteker), foretrækker JSON-slutpunkter frem for HTML, og download aldrig billeder, skrifttyper eller medier, medmindre det er dataene.En 350 KB side er billig; en 4 MB side med aktiver er ikke.

Spørgsmål folk stiller#

Hvorfor bliver jeg ved med at få den samme IP med forespørgsler?

Gentagne IP-adresser kan skyldes forbindelsespooling, en aktiv fast session eller den ledige pool.Sammenlign den tildelte routingtilstand og test flere anmodninger med tidsstempler.A requests.Session administrerer forbindelser og cookies; det vælger ikke selv proxyudgangen.

Har jeg brug for en anden proxy til HTTPS-websteder?

Den samme http://-proxywebadresse håndterer HTTPS-destinationer via en CONNECT-tunnel; TLS kører fra ende til anden mellem din kode og websitet.

Kan jeg bruge den samme kode til mobile proxy'er?

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

Din konto er blevet oprettet

Administrer alle dine proxyer fra én konto

Sammenlign netværk, placer ordrer og følg din saldo og supportanmodninger fra ét dashboard Vores team gennemgår betalinger og giver forbindelsesoplysninger efter levering.

Opret konto