ఒక urllib opener నేరుగా కలవాల్సినప్పుడు ProxyHandler కు ఖాళీ మ్యాపింగ్ ఇవ్వండి:

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 ఆబ్జెక్టులు మరో లైబ్రరీ క్లయింట్‌ను, ఇప్పటికే ఉన్న ప్రాసెస్‌ను లేదా బ్రౌజర్ ప్రాక్సీ సెట్టింగులను మార్చవు.

సంబంధిత వ్యాసాలు