Python urllib: proxy வழிமுறைப்படுத்தலை வலைத்தள Basic Authentication உடன் இணைத்தல்
உலகளாவிய opener ஐ இருமுறை மாற்றாமல் urllib வழிமுறைப்படுத்தலையும் இலக்கின் Basic authentication ஐயும் ஒரே வெளிப்படையான opener இல் இணைக்கவும்.
install_opener() ஐ இரண்டு முறை அழைப்பது இரண்டாவது opener ஐ முதலில் சேர்ப்பதில்லை. அது module இன் இயல்புநிலை opener ஐ மாற்றுகிறது. ஒரு பொருள் proxy ஐ அறிந்தும் மற்றொன்று வலைத்தள உள்நுழைவை அறிந்தும் இருந்தால், தேவையான 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()proxy மற்றும் இலக்கு எடுத்துக்காட்டுகள். பொது HTTP proxy வழியாக அணுகக்கூடிய பொது சேவைக்கு HTTP proxy பட்டியல் வழிமுறைப்படுத்தல் handler க்கு வேட்பாளர் endpoints வழங்குகிறது. இந்த opener HTTPS கோரிக்கையை HTTP proxy வழியாக அனுப்பி இலக்கின் Basic சவாலை கையாள்கிறது. இது proxy அங்கீகாரத்தை அமைக்கவில்லை.
proxy க்கும் உள்நுழைவு தேவைப்பட்டால், ஆதரிக்கப்படும் proxy-அங்கீகார அமைப்பை தனித்தனியாக தேர்ந்தெடுக்கவும். CONNECT நேரத்தில் 407 இலக்கு தனது சவாலை வழங்கும் முன்பே நிகழ்கிறது. கடவுச்சொல் மேலாளரில் வலைத்தள சான்றுகளைச் சேர்ப்பது அந்த முந்தைய பரிமாற்றத்தை பூர்த்தி செய்யாது.
opener.open() ஐ நேரடியாக அழைப்பது கட்டமைப்பை செயல்பாட்டுடன் வைத்திருக்கிறது. பயன்பாடு அனைத்து வசதியான அழைப்புகளும் இந்த opener ஐப் பகிர வேண்டும் என்று வேண்டுமென்றே விரும்பாத வரை module முழுவதும் இயல்புநிலையை மாற்ற தேவையில்லை.