Integracije · Početnik

Kako koristiti proxy servere s Python zahtjevima, httpx i aiohttp

Tri linije konfiguracije po knjižnici, zatim ista sintaksa korisničkog imena svugdje: zemlja, grad i sesije žive u proxy URL-u, tako da jedan gateway služi svakom poslu.

3 min čitanja 6 odjeljaka Revidirano Uređivački tim Proxy Cyber

URL proxyja#

Svaka Python HTTP biblioteka uzima proxy kao URL, a s Proxy Cyber-em URL nosi vaše vjerodajnice i ključeve. Parametri ciljanja U korisničkom imenu; ime računala je gateway, a port odabire protokol.

URL-ovi proxyja
# 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

Zahtjevi#

Ponovno korištenje veze i dodjela IP-a su različite kontrole. Klijentska sesija ponovno koristi socketove; samo dodijeljeni gateway određuje rotaciju i ponašanje lijepljene sesije. Koristite parametre sesije isporučenih s uslugom, te provjerite izlaz preko nekoliko zahtjeva. Zatvaranje socket ili slanje Connection: close ne jamči drugačiji IP.

Zahtjevi
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 uzima jedan proxy= argument (starije verzije: proxies=Podržava HTTP/2 do odredišta kroz CONNECT tunel i radi na isti način u asinkroniziranom kodu.

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 uzima proxy po zahtjevu ili sesiji i govori HTTP proxyje nativno; SOCKS5 treba aiohttp-socks Konektor.

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

Rotacija, zadržavanje i ponovni pokušaji#

  • Nova TCP veza je nova transportna veza, a ne dokaz novog izlaza.Dodijeljeni rotacijski način gateway-a odlučuje kako će se ta veza usmjeriti.
  • Koristite različit identifikator sesije za svaki neovisni tijek rada, ako ga dodijeljeni pristupnik podržava. Potvrdite parametre dopuštenog trajanja i lokacije u detaljima veze. Uređaj u kućanstvu može se isključiti prije traženog trajanja; trajna sesija ne jamči isti IP danima. Za fiksnu adresu usporedite namjenski statički proizvod.
  • Klasificirajte odgovor prije ponovnog pokušaja. 403 može ukazivati na pravilo pristupa koje drugi IP neće riješiti. Za 429, poštujte Retry-After i smanjite brzinu zahtjeva; koristite ograničeni backoff za privremenu vezu ili pogreške servera. Ponovno pokušajte operacije promjene stanja samo kada možete spriječiti duplicirane radnje.
  • Postavite vremenska ograničenja na izlaznu vrstu: 15 s povezivanja i 45 s čitanja za stambene, više za mobilne.

Ušteda gigabajta#

Stambeni promet naplaćuje se po GB-u u oba smjera. Pitajte za komprimirane odgovore (Accept-Encoding: gzip, br U tim bibliotekama, uključite JavaScript (koji je po defaultu uključen), preferirajte JSON krajnje točke umjesto HTML-a i nikada ne preuzimajte slike, fontove ili medijske sadržaje osim ako nisu podaci.

Pitanja koja ljudi postavljaju#

Zašto stalno dobivam isti IP s zahtjevima?

Ponavljanje IP adresa može biti rezultat grupiranja veza, aktivne sesije ili dostupnog skupa. Usporedite dodijeljeni način usmjeravanja i testirajte nekoliko zahtjeva s vremenskim žigovima.Sesija upravlja vezama i kolačićima; sama ne odabire izlaz proxyja.

Trebam li drugačiji proxy za HTTPS stranice?

Isti URL proxyja http:// obrađuje HTTPS odredišta putem CONNECT tunela; TLS se izvodi od kraja do kraja između vašeg koda i web-lokacije.

Mogu li koristiti isti kôd za mobilne proxy servere?

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

Vaš račun

Upravljajte svim svojim proxyjima s jednog računa

Usporedite mreže, pošaljite narudžbe i pratite svoje stanje i zahtjeve za podršku s jedne nadzorne ploče.Naš tim pregledava plaćanja i pruža detalje o povezivanju nakon isporuke.

Izradi račun