Perduokite tuščią atvaizdį į ProxyHandler, kai vienas urllib opener turi jungtis tiesiogiai:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

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

Tuščias žodynas nepateikia tarpinių serverių maršrutų. Nepateikus atvaizdžio, tvarkyklė pati aptinka tarpinius serverius iš aplinkos ir platformos nuostatų. Šie du kūrimo būdai išreiškia skirtingas taisykles.

Pavyzdyje naudojama standartinė Python biblioteka ir paliekamas įprastas HTTPS tikrinimas. with blokas uždaro atsakymą, taip pat kai iš bloko išeinama dėl išimties.

Tiesioginės užklausos ir užklausos per tarpinį serverį toje pačioje programoje

Du opener objektai gali įgyvendinti abi taisykles nekeičiant aplinkos kintamųjų tarp iškvietimų:

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)

Grįžtamojo ryšio adresą pakeiskite savo HTTP tarpiniu serveriu arba palyginimui per tarpinį serverį pasirinkite kandidatą iš HTTP tarpinių serverių sąrašo. Jis gali pernešti ryšį iki HTTPS tikslo per CONNECT, jei tarnyba tai leidžia. Klausymo tarnybos protokolas ir tapatybės nustatymo palaikymas turi atitikti tvarkyklę.

Numatytojo opener nekeiskite

Kreipkitės į direct.open arba proxied.open per objektą, atsakingą už maršrutą. install_opener pakeičia viso proceso numatytąjį objektą, kurį naudoja pagalbinės urllib funkcijos; jį naudojanti biblioteka gali paveikti nesusijusį kodą. Aukščiau pateiktam atskiram opener to nereikia.

Argumentas timeout yra operacijos nuostata, o ne kiekvieno perdavimo visos tikrosios trukmės riba. Skaitykite tik darbui būtinus duomenis ir naudokite aukštesnio lygio terminą, jei darbas turi griežtą bendrą laiko biudžetą.

Šie opener objektai nekeičia kitos bibliotekos kliento, esamo proceso ar naršyklės tarpinio serverio nuostatų.

Susiję straipsniai