Použijte proxy=, když má požadavky klienta obsluhovat jediný koncový bod. Použijte mounts=, když schémata cílů potřebují různé trasy. Příklady využívají tato rozhraní HTTPX; projekt se starším API proxies= potřebuje konfiguraci odpovídající verzi.

Jeden koncový bod

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)

Nahraďte místní naslouchající rozhraní běžící HTTP proxy. I kandidát ze seznamu HTTP proxy se musí otestovat s vaším cílem. HTTPS cíl může tento bod http:// použít přes CONNECT. Změna schématu na https:// naopak žádá TLS k samotné proxy, což musí podporovat klient i naslouchající rozhraní.

Oddělené trasy podle schématu cíle

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)

Klíče připojení odpovídají cílovým URL. HTTP cíle zde volí port 8080 a HTTPS cíle port 8081. Hodnota proxy popisuje vlastní protokol naslouchajícího rozhraní, proto může připojení pro HTTPS správně obsahovat proxy http://. Doplňte vlastní koncové body a ověřte obě schémata cílů.

Oba postupy nastavují trust_env=False na klientovi a případně i na předaných transportech. Jinak HTTPX standardně čte proměnné prostředí pro proxy a certifikáty. Pokud na nich nasazení závisí, ponechte jejich zjišťování zapnuté nebo výslovně nastavte trasy a důvěru. Pro soukromou důvěru použijte kontext TLS a nastavení CA podporované vaší verzí HTTPX; ověřování cíle ponechte zapnuté. Důvěra k HTTPS proxy může být oddělená od důvěry k cíli.

httpx.Timeout(15.0, connect=5.0) přepíše timeout připojení a ostatním nakonfigurovaným složkám poskytne výchozí hodnotu. Čtení, zápis a čekání na pool mají samostatné limity; patnáct sekund není celkový limit uplynulého času. Timeout poolu může znamenat, že jiná práce drží dostupná spojení. Než to označíte za důkaz nedostupné proxy, správně uzavírejte klienty a streamované odpovědi.

Související články