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.

Kapcsolódó cikkek