Bruk proxy= når ett endepunkt skal håndtere klientens forespørsler. Bruk mounts= når målskjemaer trenger forskjellige ruter. Eksemplene bruker disse HTTPX-grensesnittene; et prosjekt med det eldre proxies=-API-et trenger konfigurasjon som passer versjonen.

Ett endepunkt

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)

Bytt det lokale lyttepunktet med en kjørende HTTP-proxy. En kandidat fra listen over HTTP-proxyer må fortsatt testes mot målet ditt. Et HTTPS-mål kan bruke dette http://-endepunktet gjennom CONNECT. Å endre skjemaet til https:// ber i stedet om TLS til selve proxyen og krever støtte fra både klient og lyttepunkt.

Separate ruter etter målskjema

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)

Monteringsnøkler matcher mål-URL-er. HTTP-mål velger port 8080 her; HTTPS-mål port 8081. Proxyverdien beskriver lyttepunktets egen protokoll, så HTTPS-monteringen kan riktig inneholde en http://-proxy. Sett inn dine endepunkter og kontroller begge målskjemaene.

Begge oppskriftene setter trust_env=False på klienten og, der de angis, på transportene. Ellers leser HTTPX miljøvariabler for proxy og sertifikater som standard. Hvis utrullingen avhenger av dem, behold oppdagelsen på eller konfigurer nødvendige ruter og tillit eksplisitt. Bruk TLS-kontekst og CA-oppsett som din HTTPX-versjon støtter for privat tillit; behold målverifiseringen aktiv. Tillit til HTTPS-proxyen kan være atskilt fra tillit til målet.

httpx.Timeout(15.0, connect=5.0) overstyrer tilkoblingstimeouten og gir de øvrige konfigurerte timeoutdelene standardverdien. Lesing, skriving og venting på forbindelsespoolen har separate grenser; femten sekunder er ingen total frist for forløpt tid. En pooltimeout kan bety at annet arbeid holder de tilgjengelige forbindelsene. Lukk klienter og strømmende svar korrekt før du tolker det som bevis for at proxyen ikke kan nås.

Relaterte artikler