Python urllib: પ્રોક્સી રાઉટિંગને વેબસાઇટ Basic Authentication સાથે જોડો
ગ્લોબલ opener બે વાર બદલ્યા વિના urllib રાઉટિંગ અને ગંતવ્યના Basic authentication ને એક સ્પષ્ટ opener માં જોડો.
install_opener() ને બે વાર કૉલ કરવાથી બીજો opener પહેલા સાથે ઉમેરાતો નથી. તે મોડ્યુલનો ડિફૉલ્ટ opener બદલે છે. જો એક ઑબ્જેક્ટ પ્રોક્સી જાણે અને બીજો વેબસાઇટ લૉગિન જાણે, તો જરૂરી handlers સાથે એક opener બનાવો.
import os
from urllib.request import (ProxyHandler, HTTPBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener)
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(None, 'https://example.com/private/',
os.environ['SITE_USER'], os.environ['SITE_PASSWORD'])
opener = build_opener(
ProxyHandler({'https': 'http://203.0.113.10:8080'}),
HTTPBasicAuthHandler(passwords),
)
with opener.open('https://example.com/private/report', timeout=10) as response:
body = response.read()પ્રોક્સી અને ગંતવ્ય ઉદાહરણો છે. જાહેર HTTP પ્રોક્સી દ્વારા પહોંચી શકાય તેવી જાહેર સેવા માટે, HTTP પ્રોક્સી સૂચિ રાઉટિંગ handler માટે ઉમેદવાર endpoints પ્રદાન કરે છે. આ opener HTTPS વિનંતીને HTTP પ્રોક્સી દ્વારા મોકલે છે અને ગંતવ્યનો Basic પડકાર સંભાળે છે. તે પ્રોક્સી પ્રમાણીકરણ ગોઠવતું નથી.
જો પ્રોક્સીને પણ લૉગિન જોઈએ, તો સમર્થિત પ્રોક્સી-પ્રમાણીકરણ ગોઠવણી અલગથી પસંદ કરો. CONNECT સમયે 407 ગંતવ્ય પોતાનો પડકાર આપી શકે તે પહેલાં થાય છે. પાસવર્ડ મેનેજરમાં વેબસાઇટ ક્રેડેન્શિયલ ઉમેરવાથી તે પહેલાની આપલે સંતોષી શકાતી નથી.
opener.open() સીધું કૉલ કરવાથી ગોઠવણી કામગીરી સાથે રહે છે. મોડ્યુલ-વ્યાપી ડિફૉલ્ટ બદલવાની જરૂર નથી, સિવાય કે એપ્લિકેશન ઇરાદાપૂર્વક ઇચ્છે કે બધા સુવિધાજનક કૉલ આ opener વહેંચે.