Použite proxy=, keď má požiadavky klienta obsluhovať jediný koncový bod. Použite mounts=, keď schémy cieľov potrebujú rôzne trasy. Príklady využívajú tieto rozhrania HTTPX; projekt so starším API proxies= potrebuje konfiguráciu zodpovedajúcu verzii.

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 miestne počúvajúce rozhranie bežiacou HTTP proxy. Aj kandidáta zo zoznamu HTTP proxy treba otestovať s vaším cieľom. HTTPS cieľ môže tento bod http:// používať cez CONNECT. Zmena schémy na https:// naopak žiada TLS k samotnej proxy, čo musia podporovať klient aj počúvajúce rozhranie.

Oddelené trasy podľa schémy cieľa

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)

Kľúče pripojení zodpovedajú cieľovým URL. HTTP ciele tu volia port 8080 a HTTPS ciele port 8081. Hodnota proxy opisuje vlastný protokol počúvajúceho rozhrania, preto môže pripojenie pre HTTPS správne obsahovať proxy http://. Doplňte vlastné body a overte obe schémy cieľov.

Oba postupy nastavujú trust_env=False na klientovi a prípadne aj na odovzdaných transportoch. Inak HTTPX predvolene číta premenné prostredia pre proxy a certifikáty. Ak na nich nasadenie závisí, nechajte zisťovanie zapnuté alebo výslovne nastavte trasy a dôveru. Pre súkromnú dôveru použite TLS kontext a CA konfiguráciu podporované vašou verziou HTTPX; overovanie cieľa nechajte aktívne. Dôvera k HTTPS proxy môže byť oddelená od dôvery k cieľu.

httpx.Timeout(15.0, connect=5.0) prepíše časový limit pripojenia a ostatným nakonfigurovaným zložkám poskytne predvolenú hodnotu. Čítanie, zápis a čakanie na pool majú samostatné limity; pätnásť sekúnd nie je celkový limit uplynutého času. Timeout poolu môže znamenať, že iná práca drží dostupné spojenia. Kým to označíte za dôkaz nedostupnej proxy, správne zatvárajte klientov a streamované odpovede.

Súvisiace články