ProxyHandler-ին փոխանցեք դատարկ արտապատկերում, երբ մեկ urllib opener պետք է միանա անմիջապես։

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

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

Դատարկ բառարանը պրոքսիի երթուղիներ չի տրամադրում։ Արտապատկերումը բաց թողնելիս մշակիչը պրոքսիները հայտնաբերում է միջավայրից և հարթակի կարգավորումներից։ Ստեղծման այս երկու ձևերը տարբեր քաղաքականություններ են արտահայտում։

Օրինակը օգտագործում է Python-ի ստանդարտ գրադարանը և պահպանում սովորական HTTPS ստուգումը։ with բլոկը փակում է պատասխանը, նաև երբ բացառության պատճառով դուրս է գալիս բլոկից։

Ուղիղ և պրոքսիով հարցումներ նույն հավելվածում

Երկու opener կարող են իրականացնել երկու քաղաքականությունները՝ առանց կանչերի միջև միջավայրի փոփոխականները փոխելու։

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)

Հետադարձ կապի հասցեն փոխարինեք ձեր HTTP պրոքսիով կամ պրոքսիով համեմատության համար թեկնածու ընտրեք HTTP պրոքսիների ցանկից։ Այն կարող է HTTPS նպատակակետի կապը փոխանցել CONNECT-ի միջոցով, եթե ծառայությունը թույլ է տալիս։ Լսողի արձանագրությունն ու նույնականացման աջակցությունը պետք է համապատասխանեն մշակիչին։

Մի փոխեք լռելյայն opener-ը

direct.open-ը կամ proxied.open-ը կանչեք երթուղու համար պատասխանատու օբյեկտի միջոցով։ install_opener-ը փոխում է ամբողջ գործընթացի լռելյայն տարբերակը, որն օգտագործում են urllib-ի օժանդակ կանչերը, ուստի այն օգտագործող գրադարանը կարող է ազդել չառնչվող կոդի վրա։ Վերևի մեկուսացված opener-ի համար այն անհրաժեշտ չէ։

timeout արգումենտը գործողության կարգավորում է, ոչ թե յուրաքանչյուր փոխանցման ամբողջ իրական ժամանակի վերջնաժամկետ։ Կարդացեք միայն անհրաժեշտ տվյալները և օգտագործեք ավելի բարձր մակարդակի վերջնաժամկետ, եթե աշխատանքն ունի խիստ ընդհանուր ժամանակային բյուջե։

Այս opener օբյեկտները չեն փոխում այլ գրադարանի հաճախորդը, գոյություն ունեցող գործընթացը կամ դիտարկիչի պրոքսի կարգավորումները։

Առնչվող հոդվածներ