Python urllib: એક opener માટે પ્રોક્સી બંધ કરો
બીજા ક્લાયન્ટ અને પ્રક્રિયાનું પર્યાવરણ બદલ્યા વગર ProxyHandler({}) થી સીધું જોડાતું urllib opener બનાવો.
એક 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 ઑબ્જેક્ટો બીજી લાઇબ્રેરીનો ક્લાયન્ટ, હાલની પ્રક્રિયા અથવા બ્રાઉઝરની પ્રોક્સી ગોઠવણીઓ બદલતા નથી.