Izbira poti proxyja v HTTPX s proxy in mounts
Uporabite proxy in priklope transportov HTTPX s pravilno shemo, izrecnim vedenjem okolja ter ločenimi omejitvami povezave in branja.
Uporabite proxy=, kadar naj ena končna točka obravnava odjemalčeve zahteve. Uporabite mounts=, kadar sheme ciljev potrebujejo različne poti. Primeri uporabljajo ta vmesnika HTTPX; projekt s starejšim API-jem proxies= potrebuje nastavitve za svojo različico.
Ena končna točka
import httpx
timeout = httpx.Timeout(15.0, connect=5.0)
with httpx.Client(
proxy="http://127.0.0.1:8080",
trust_env=False,
timeout=timeout,
) as client:
response = client.get("https://example.com/")
response.raise_for_status()
print(response.status_code)
Lokalni poslušalnik zamenjajte z delujočim proxyjem HTTP. Kandidata s seznama proxyjev HTTP je še vedno treba preizkusiti z vašim ciljem. Cilj HTTPS lahko to točko http:// uporablja prek CONNECT. Sprememba sheme v https:// pa zahteva TLS do samega proxyja, kar morata podpirati poslušalnik in odjemalec.
Ločene poti po shemi cilja
import httpx
mounts = {
"http://": httpx.HTTPTransport(
proxy="http://127.0.0.1:8080",
trust_env=False,
),
"https://": httpx.HTTPTransport(
proxy="http://127.0.0.1:8081",
trust_env=False,
),
}
with httpx.Client(
mounts=mounts,
trust_env=False,
timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
response = client.get("https://example.com/")
response.raise_for_status()
print(response.status_code)
Ključi priklopov se ujemajo s ciljnimi URL-ji. Cilji HTTP tu izberejo vrata 8080, cilji HTTPS vrata 8081. Vrednost proxyja opisuje lastni protokol poslušalnika, zato lahko priklop za HTTPS pravilno vsebuje proxy http://. Vnesite svoje točke in preverite obe shemi ciljev.
Oba postopka nastavita trust_env=False na odjemalcu in, kjer so podani, na transportih. Sicer HTTPX privzeto bere okoljske spremenljivke proxyja in potrdil. Če je namestitev odvisna od njih, ohranite odkrivanje vključeno ali izrecno nastavite poti in zaupanje. Za zasebno zaupanje uporabite kontekst TLS in nastavitve CA, ki jih podpira vaša različica HTTPX; preverjanje cilja pustite vključeno. Zaupanje proxyju HTTPS je lahko ločeno od zaupanja cilju.
httpx.Timeout(15.0, connect=5.0) prepiše časovno omejitev povezave in drugim nastavljenim sestavinam zagotovi privzeto vrednost. Branje, pisanje in čakanje na sklad povezav imajo ločene omejitve; petnajst sekund ni skupni rok dejansko pretečenega časa. Iztek čakanja na sklad lahko pomeni, da drugo delo drži razpoložljive povezave. Pravilno zaprite odjemalce in pretočne odgovore, preden to razumete kot dokaz nedosegljivega proxyja.