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-ವ್ಯಾಪಿ ಡೀಫಾಲ್ಟ್ ಬದಲಾಯಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.