Integracije · Začetnik

Kako uporabljati proxy-je s Python zahtevki, httpx in aiohttp

Tri vrstice konfiguracije na knjižnico, nato pa povsod enaka sintaksa uporabniškega imena: država, mesto in seja živijo v URL proxy, tako da en prehod služi vsako delo.

3 min branje 6 oddelkov Pregled Uredniška ekipa Proxy Cyber

URL proxy strežnika#

Vsaka Python HTTP knjižnica sprejme proxy kot URL, ki nosi vaše poverilnice in ključ za dostop. Parametri za ciljanje V uporabniškem imenu; ime gostitelja je prehod in vrata izberejo protokol.

URL-ji 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

Zahteve#

Ponovna uporaba povezave in dodelitev IP sta različni kontrolniki. Odjemalska seja ponovno uporablja vtičnice; samo dodeljeni prehod določa rotacijo in vedenje lepljive seje. Uporabite parametre seje, ki so priloženi vaši storitvi, in preverite izhod na več zahtevah. Zapiranje vtičnice ali pošiljanje Povezava: zaprite ne zagotavlja drugačnega IP-ja.

Zahteve
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 traja eno proxy= Starejše različice: proxies=Podpira HTTP/2 do cilja preko CONNECT tunela in deluje na enak način v asinhronski kodi.

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 vzame proxy na zahtevo ali sejo in govori HTTP proxyje naravno; SOCKS5 potrebuje aiohttp-socks priključek.

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, ohranjanje in ponovni poskusi#

  • Nova TCP povezava je nova transportna povezava, ne dokaz novega izhoda.Dodeljeni rotacijski način gatewayja odloča o tem, kako bo ta povezava usmerjena.
  • Uporabite ločen identifikator seje za vsak neodvisen potek dela, kjer ga dodeljeni prehod podpira. Potrdite dovoljeno trajanje in parametre lokacije v podrobnostih povezave. Domača naprava lahko prekine povezavo pred zahtevanim trajanjem; lepljiva seja ni zagotovilo za isti IP več dni. Za fiksni naslov primerjajte namenski statični izdelek.
  • 403 lahko označuje pravilo dostopa, ki ga drugi IP ne bo razrešil. Za 429 upoštevajte Retry-After in zmanjšajte hitrost zahteve; uporabite omejeno začasno zaustavitev za začasne povezave ali napake strežnika. Ponovno poskusite operacije spreminjanja stanja le, če lahko preprečite podvojena dejanja.
  • Nastavite časovne omejitve za vrsto izhoda: 15 s povezavo in 45 s branje za stanovanjske, več za mobilne naprave.

Varčevanje z gigabajti#

Stanovanjski promet se obračunava po GB v obeh smereh. Zahtevaj stisnjene odgovore (Accept-Encoding: gzip, br V teh knjižnicah je privzeto vklopljen (v tem primeru imajo končne točke JSON prednost pred HTML-jem) in nikoli ne prenašajte slik, pisav ali medijev, razen če so podatki. 350 KB stran je poceni; 4 MB stran z viri pa ni.

Vprašanja, ki jih ljudje postavljajo#

Zakaj vedno znova dobim isti IP s prošnjami?

Ponavljajoči se IP-ji so lahko posledica združevanja povezav, aktivne lepljive seje ali razpoložljivega nabora. Primerjajte dodeljeni način usmerjanja in preizkusite več zahtev s časovnimi žigi. requests.Session upravlja povezave in piškotke; sam ne izbere izhoda proxyja.

Ali potrebujem drugačen proxy za HTTPS strani?

Isti URL proxyja http:// obravnava cilje HTTPS prek tunela CONNECT; TLS poteka od konca do konca med vašo kodo in spletnim mestom.

Ali lahko isto kodo uporabim za mobilne proxyje?

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

Vaš račun |

Upravljajte vse svoje proxyje v enem računu

Primerjajte omrežja, oddajajte naročila in spremljajte svoje stanje ter zahteve za podporo z ene nadzorne plošče.Naša ekipa pregleda plačila in po dostavi zagotovi podrobnosti o povezavi.

Ustvari račun