Koristite proxy= kada jedna krajnja tačka treba obraditi klijentove zahtjeve. Koristite mounts= kada sheme odredišta trebaju različite rute. Primjeri koriste ta HTTPX sučelja; projekt sa starijim API-jem proxies= treba konfiguraciju za svoju verziju.

Jedna krajnja tač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)

Zamijenite lokalno sučelje za osluškivanje aktivnim HTTP proxyjem. Kandidata s liste HTTP proxyja i dalje treba testirati s vašim odredištem. HTTPS cilj može koristiti ovu tačku http:// preko CONNECT-a. Promjena sheme u https:// traži TLS do samog proxyja, što moraju podržavati sučelje za osluškivanje i klijent.

Odvojene rute prema shemi odredišta

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čevi montiranja odgovaraju ciljnim URL-ovima. HTTP ciljevi ovdje biraju port 8080, a HTTPS ciljevi 8081. Vrijednost proxyja opisuje vlastiti protokol sučelja za osluškivanje, pa HTTPS montiranje može ispravno sadržavati proxy http://. Unesite svoje tačke i provjerite obje sheme odredišta.

Oba postupka postavljaju trust_env=False na klijentu i, gdje su navedeni, na transportima. Inače HTTPX podrazumijevano čita varijable okruženja za proxy i certifikate. Ako implementacija zavisi od njih, ostavite otkrivanje uključeno ili izričito postavite rute i povjerenje. Za privatno povjerenje koristite TLS kontekst i CA konfiguraciju svoje HTTPX verzije; provjera odredišta ostaje uključena. Povjerenje HTTPS proxyju može biti odvojeno od povjerenja odredištu.

httpx.Timeout(15.0, connect=5.0) nadjačava vremensko ograničenje povezivanja, a drugim konfiguriranim dijelovima daje podrazumijevanu vrijednost. Čitanje, pisanje i čekanje na skup veza imaju odvojene limite; petnaest sekundi nije ukupni rok proteklog vremena. Istek čekanja na skup može značiti da drugi posao drži raspoložive veze. Pravilno zatvorite klijente i streaming odgovore prije nego to smatrate dokazom nedostupnog proxyja.

Povezani članci