Proslijedite prazno mapiranje u ProxyHandler kada jedan urllib opener treba da se povezuje direktno:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

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

Prazan rječnik ne daje proksi putanje. Izostavljanje mapiranja omogućava rukovaocu da otkrije proksije iz okruženja i postavki platforme. Ova dva načina stvaranja izražavaju različite politike.

Primjer koristi standardnu biblioteku Pythona i zadržava normalnu HTTPS provjeru. Blok with zatvara odgovor, uključujući izlazak iz bloka zbog izuzetka.

Direktni zahtjevi i zahtjevi preko proksija u istoj aplikaciji

Dva opener objekta mogu nositi dvije politike bez mijenjanja varijabli okruženja između poziva:

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)

Zamijenite adresu povratne petlje svojim HTTP proksijem ili izaberite kandidata s liste HTTP proxyja za poređenje putem proksija. On može prenijeti vezu do HTTPS odredišta preko CONNECT-a ako servis to dopušta. Protokol i podrška za autentifikaciju osluškujućeg servisa moraju odgovarati rukovaocu.

Ne dirajte podrazumijevani opener

Pozivajte direct.open ili proxied.open preko objekta odgovornog za putanju. install_opener mijenja podrazumijevani objekat za cijeli proces koji koriste pomoćne funkcije urllib-a; biblioteka koja ga koristi zato može uticati na nepovezan kod. Nije potreban za izdvojeni opener iznad.

Argument timeout je postavka operacije, a ne potpuno ograničenje stvarnog proteklog vremena svakog prijenosa. Čitajte samo potrebne podatke i koristite rok višeg nivoa ako zadatak ima strogo ukupno vremensko ograničenje.

Ovi opener objekti ne mijenjaju klijenta druge biblioteke, postojeći proces ili postavke proksija u pregledniku.

Povezani članci