Integraatiot · Aloittelijan taso

Kuinka käyttää välityspalvelimia Python-pyyntöjen, httpx:n ja aiohttp:n kanssa

Kolme riviä kirjastoa kohti, sitten sama käyttäjätunnus syntaksi kaikkialla: maa, kaupunki ja istunto elävät välityspalvelimen URL-osoitteessa, joten yksi yhdyskäytävä palvelee jokaista työtä.

3 min lukeminen 6 osaa Tarkastettu Toimituskunta Proxy Cyber

Välityspalvelimen URL-osoite#

Jokainen Python HTTP -kirjasto ottaa välityspalvelimen URL-osoitteena.Proxy Cyber:n kanssa URL-osoite sisältää tunnistetietosi ja salasanan. Kohdennusparametrit Käyttäjätunnuksessa on isäntänimi, joka on yhdyskäytävä ja portti, joka valitsee protokollan.

Välityspalvelimen URL-osoitteet
# 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

pyynnöt#

Yhteyden uudelleenkäyttö ja IP-osoitteen määrittäminen ovat eri asioita. Asiakastilaus käyttää socketeja uudelleen; vain määritetty yhdyskäytävä määrittää vuorottelun ja pysyvän istunnon toiminnan. Käytä palvelun mukana toimitettuja istuntoparametreja ja tarkista poistuminen useiden pyyntöjen aikana. Socketin sulkeminen tai Connection: close -komennon lähettäminen ei takaa erilaista IP-osoitetta.

pyynnöt
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 takes a yksittäinen proxy= Vanhemmat versiot: proxies=Se tukee HTTP/2:ta kohteen kautta CONNECT tunnelin kautta ja toimii samalla tavalla async-koodissa.

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 ottaa välityspalvelimen pyyntöä tai istuntoa kohden ja puhuu HTTP-välityspalvelimia natiivisti; SOCKS5 tarvitsee aiohttp-socks Liitin.

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

Kierto, elävänä pitäminen ja uudelleenyritys#

  • Uusi TCP-yhteys on uusi kuljetusyhteys, ei todiste uudesta ulostulosta.Yhdyskäytävän määrittämä rotaatiotila päättää, miten kyseinen yhteys reititetään.
  • Käytä erillistä istuntotunnistetta jokaiselle itsenäiselle työnkululle, jos määritetty yhdyskäytävä tukee sitä. Vahvista sallittu kesto ja sijaintiparametrit yhteystiedoissasi. Kotilaite voi katkaista yhteyden ennen pyydettyä kestoa; pysyvä istunto ei takaa samaa IP-osoitetta päivien ajan. Kiinteän osoitteen saamiseksi vertaile omaan staattiseen tuotteeseen.
  • Luokittele vastaus ennen uudelleenyritystä. 403 voi tarkoittaa käyttösääntöä, jota toinen IP-osoite ei pysty ratkaisemaan. Jos kyseessä on 429, noudata Retry-After -käytäntöä ja vähennä pyyntöjen määrää; käytä rajoitettua takautumista tilapäisten yhteyksien tai palvelinvirheiden varalta. Yritä tilanmuutostoimintoja uudelleen vain silloin, kun voit estää päällekkäiset toiminnot.
  • Aseta aikakatkaisuja poistumistyyppiin: 15 s yhteys ja 45 s lukea asuinalueelle, enemmän mobiili.

Säästää gigatavuja#

Asuinliikenne laskutetaan gigatavua kohden molempiin suuntiin. Pyydä pakattuja vastauksia (Accept-Encoding: gzip, br Käytä JSON-päätepisteitä HTML:n sijaan. Älä koskaan lataa kuvia, fontteja tai mediaa, ellei niissä ole dataa. 350 kt:n sivu on halpa; 4 Mt:n resursseja sisältävä sivu ei ole halpa.

Ihmiset kysyvät kysymyksiä#

Miksi saan pyynnöissä aina saman IP-osoitteen?

Toistuvat IP-osoitteet voivat johtua yhteyspoolista, aktiivisesta pysyvästä istunnosta tai käytettävissä olevasta poolista. Vertaa määritettyä reititystilaa ja testaa useita pyyntöjä aikaleimalla.Istunto hallitsee yhteyksiä ja evästeitä; se ei itse valitse välityspalvelimen poistumista.Session hallinnoi yhteyksiä, evästettä ja tilapäistä IP-osoitea.

Tarvitsenko eri välityspalvelimen HTTPS-sivustoille?

Sama http://-välityspalvelin URL käsittelee HTTPS-kohteita CONNECT-tunnelin kautta; TLS toimii koodin ja sivuston välillä päältä päähän.

Voinko käyttää samaa koodia mobiilivälityspalvelimissa?

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

Oma tilisi »

Hallitse kaikkia proxyjäsi yhdellä tilillä

Vertaa verkkoja, tee tilauksia ja seuraa saldoasi ja tukipyyntöjäsi yhdestä hallintapaneelista.Tiimimme tarkastaa maksut ja antaa yhteystiedot toimituksen jälkeen.

Luo tili