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 ලැයිස්තුව routing handler සඳහා අපේක්ෂක endpoints සපයයි. මෙම opener HTTPS ඉල්ලීම HTTP proxy හරහා යවා ගමනාන්තයේ Basic අභියෝගය හසුරුවයි. එය proxy සත්යාපනය වින්යාස නොකරයි.
proxy ද පිවිසුමක් අවශ්ය නම්, සහාය දක්වන proxy-සත්යාපන ක්රමය වෙන වෙනම තෝරන්න. CONNECT වේලාවේ 407 ගමනාන්තයට තමන්ගේම අභියෝගය නිකුත් කිරීමට පෙර සිදු වේ. මුරපද කළමනාකරුට වෙබ් අඩවි අක්තපත්ර එකතු කිරීමෙන් එම කලින් හුවමාරුව සම්පූර්ණ කළ නොහැක.
opener.open() සෘජුවම ඇමතීම වින්යාසය ක්රියාව සමඟ තබා ගනී. යෙදුම සියලු පහසු ඇමතුම් මෙම opener බෙදාගැනීමට හිතාමතා අවශ්ය නොවන්නේ නම්, module-පරිමාණ පෙරනිමිය වෙනස් කිරීමට අවශ්ය නැත.