Giv ProxyHandler en tom mapping, når én urllib-opener skal forbinde direkte:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

with direct.open("https://example.com/", timeout=10) as response:
    print(response.status)

Den tomme dictionary angiver ingen proxyruter. Udelader du mappingen, finder handleren i stedet proxyer fra miljøet og platformens indstillinger. De to konstruktioner udtrykker forskellige politikker.

Eksemplet bruger Pythons standardbibliotek og bevarer normal HTTPS-verifikation. with-blokken lukker svaret, også når en undtagelse får udførelsen til at forlade blokken.

Direkte forespørgsler og forespørgsler via proxy i samme applikation

To openere kan have hver sin politik uden at ændre miljøvariabler mellem kald:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}))

with proxied.open("https://example.com/", timeout=10) as response:
    print(response.status)

Erstat loopback-adressen med din HTTP-proxy, eller vælg en kandidat fra listen over HTTP-proxyer til sammenligningen via proxy. Den kan føre forbindelsen til HTTPS-målet gennem CONNECT, når tjenesten tillader det. Lyttepunktets protokol og understøttelse af godkendelse skal passe til handleren.

Lad standardopeneren være

Kald direct.open eller proxied.open gennem det objekt, der har ansvaret for ruten. install_opener ændrer den procesomfattende standard, som urllibs hjælpefunktioner bruger, så et bibliotek, der bruger den, kan påvirke uvedkommende kode. Det er unødvendigt for den isolerede opener ovenfor.

Argumentet timeout er en indstilling for en operation, ikke en samlet frist målt i faktisk tid for hver overførsel. Læs kun de nødvendige data, og brug en frist på et højere niveau, hvis opgaven har et stramt samlet tidsbudget.

Disse opener-objekter ændrer ikke et andet biblioteks klient, en eksisterende proces eller en browsers proxyindstillinger.

Relaterede artikler