HTTPX-proxyútvonalak választása proxy és mounts használatával
Használd a HTTPX proxy és transport mounts beállításait megfelelő sémával, egyértelmű környezeti viselkedéssel és külön kapcsolódási, illetve olvasási korláttal.
Használd a proxy= beállítást, ha egy végpontnak kell kezelnie a kliens kéréseit. Használd a mounts= beállítást, ha a célsémák eltérő útvonalat igényelnek. A példák ezeket a HTTPX-felületeket használják; a régebbi proxies= API-t használó projektnek a verzióhoz illő beállítás kell.
Egy végpont
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)
Cseréld a helyi figyelőt működő HTTP-proxyra. A HTTP-proxyk listájából választott jelöltet is tesztelni kell a céloddal. Egy HTTPS-cél CONNECT-en át használhatja ezt a http:// végpontot. A séma https:// értékre váltása viszont TLS-t kér magához a proxyhoz, amit a figyelőnek és a kliensnek is támogatnia kell.
Külön útvonalak a cél sémája szerint
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)
A csatolási kulcsok a cél-URL-ekhez illeszkednek. A HTTP-célok itt a 8080-as, a HTTPS-célok a 8081-es portot választják. A proxyérték a figyelő saját protokollját írja le, ezért a HTTPS-csatolás helyesen tartalmazhat http:// proxyt. Add meg saját végpontjaidat, és ellenőrizd mindkét célsémát.
Mindkét recept trust_env=False értéket állít a kliensen és, ahol meg vannak adva, a transportokon. Egyébként a HTTPX alapból olvassa a proxy- és tanúsítvány-környezeti változókat. Ha a telepítés ezektől függ, hagyd bekapcsolva a felderítést, vagy add meg kifejezetten az útvonalakat és a bizalmat. Privát bizalomhoz a HTTPX-verziód által támogatott TLS-kontextust és CA-beállítást használd; a célellenőrzés maradjon bekapcsolva. A HTTPS-proxyba vetett bizalom elkülönülhet a célétól.
A httpx.Timeout(15.0, connect=5.0) felülírja a kapcsolódási időkorlátot, a többi beállított összetevőhöz pedig az alapértéket adja. Az olvasásnak, írásnak és poolvárakozásnak külön határa van; tizenöt másodperc nem teljes, valós idejű határidő. A poolidőtúllépés azt is jelentheti, hogy más munka foglalja a szabad kapcsolatokat. Zárd le helyesen a klienseket és streamelt válaszokat, mielőtt ezt az elérhetetlen proxy bizonyítékának tekintenéd.