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 பொருள்கள் வேறொரு நூலகத்தின் கிளையண்ட், ஏற்கெனவே உள்ள செயல்முறை அல்லது உலாவியின் பதிலி அமைப்புகளை மாற்றாது.