Använd proxy= när en ändpunkt ska hantera klientens begäranden. Använd mounts= när destinationsscheman behöver olika rutter. Exemplen använder dessa HTTPX-gränssnitt; projekt med det äldre API:t proxies= behöver inställningar som passar den versionen.

En ändpunkt

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)

Byt ut den lokala lyssnaren mot en fungerande HTTP-proxy. Även en kandidat från listan med HTTP-proxyer måste testas mot din destination. Ett HTTPS-mål kan använda denna http://-ändpunkt genom CONNECT. Att ändra schemat till https:// begär i stället TLS till själva proxyn, vilket både lyssnare och klient måste stödja.

Separata rutter efter destinationsschema

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)

Monteringsnycklar matchar mål-URL:er. HTTP-mål väljer här port 8080 och HTTPS-mål port 8081. Proxyvärdet beskriver lyssnarens eget protokoll, så HTTPS-monteringen kan korrekt innehålla en http://-proxy. Ange dina ändpunkter och kontrollera båda destinationsschemana.

Båda recepten sätter trust_env=False på klienten och, där de tillhandahålls, på transporterna. Annars läser HTTPX proxy- och certifikatmiljövariabler som standard. Om driftsättningen behöver dem, behåll upptäckt aktiverad eller konfigurera rutter och tillit uttryckligen. Använd TLS-kontext och CA-inställningar som din HTTPX-version stöder för privat tillit; låt destinationsverifieringen vara på. Tilliten till HTTPS-proxyn kan vara skild från tilliten till destinationen.

httpx.Timeout(15.0, connect=5.0) åsidosätter anslutningstimeouten och ger övriga konfigurerade timeoutdelar standardvärdet. Läsning, skrivning och poolväntan har separata gränser; femton sekunder är ingen total tidsfrist för förfluten tid. En pooltimeout kan betyda att annat arbete håller de tillgängliga anslutningarna. Stäng klienter och strömmande svar korrekt innan du tolkar det som bevis för att proxyn inte går att nå.

Relaterade artiklar