Python urllib: HTTP ವಿನಂತಿಗಳಿಗೆ Basic ಪ್ರಾಕ್ಸಿ ದೃಢೀಕರಣ
Basic HTTP ಪ್ರಾಕ್ಸಿ ಸವಾಲಿಗೆ ಸ್ಪಷ್ಟ urllib opener ನಿರ್ಮಿಸಿ, ಮತ್ತು ಈ ಸಾಮಾನ್ಯ HTTP ವಿನಿಮಯವನ್ನು HTTPS CONNECT ದೃಢೀಕರಣದಿಂದ ಪ್ರತ್ಯೇಕಿಸಿ.
HTTP ಪ್ರಾಕ್ಸಿಯಿಂದ ಬರುವ Basic ಸವಾಲಿಗೆ ProxyBasicAuthHandler ಬಳಸಿ. ಈ ಸಾಮಾನ್ಯ HTTP ಉದಾಹರಣೆ ಮಾರ್ಗ ಮತ್ತು ಖಾತೆಯನ್ನು ಒಂದೇ opener ನಲ್ಲಿ ಇಡುತ್ತದೆ:
import os
from urllib.request import (
ProxyHandler, ProxyBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener,
)
proxy_url = 'http://proxy.example:8080'
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(
None, proxy_url,
os.environ['PROXY_USER'], os.environ['PROXY_PASSWORD'],
)
opener = build_opener(
ProxyHandler({'http': proxy_url}),
ProxyBasicAuthHandler(passwords),
)
with opener.open('http://example.com/', timeout=10) as response:
print(response.status)ನಿಜವಾದ ಎಂಡ್ಪಾಯಿಂಟ್ ಮತ್ತು ನಿರ್ವಾಹಕರು ನೀಡಿದ ಖಾತೆಯನ್ನು ಬಳಸಿ. ಈ ಹ್ಯಾಂಡ್ಲರ್ ಪ್ರಾಕ್ಸಿ ಸವಾಲಿಗೆ ಪಾಸ್ವರ್ಡ್ ನಿರ್ವಾಹಕವನ್ನು ಬಳಸುತ್ತದೆ; ಉದ್ದೇಶಿತ ಪ್ರಾಕ್ಸಿ URI ಮತ್ತು realm ಹೊಂದಿಸಿ. ಗಮ್ಯಸ್ಥಾನದಲ್ಲಿ Basic ದೃಢೀಕರಣ ಬೇರೆ ಹ್ಯಾಂಡ್ಲರ್ ಬಳಸುತ್ತದೆ.
opener ಅನ್ನು ನೇರವಾಗಿ ಕರೆಯುವುದು ಈ ಸಂರಚನೆಯನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಇಡುತ್ತದೆ. ವಿನಂತಿಯ URL ಮಧ್ಯವರ್ತಿಯಲ್ಲ, ವೆಬ್ಸೈಟ್ ಆಗಿಯೇ ಉಳಿಯುತ್ತದೆ. ಈ ಸ್ಪಷ್ಟ HTTP ಮಾರ್ಗ Basic ವಿನಿಮಯವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡುವುದಿಲ್ಲ.
ಈ ಉದಾಹರಣೆಯಿಂದ HTTPS ಸುರಂಗ ಬೆಂಬಲವನ್ನು ಊಹಿಸಬೇಡಿ. CONNECT ಸಮಯದಲ್ಲಿ 407 ಸಂರಚನೆಯಲ್ಲಿ, ಸಾಮಾನ್ಯ ಗಮ್ಯಸ್ಥಾನ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಮೊದಲು ಸಂಭವಿಸುತ್ತದೆ; ಆಯ್ಕೆಮಾಡಿದ ಏಕೀಕರಣವು ಅಲ್ಲಿ ದೃಢೀಕರಣವನ್ನು ನಿರ್ವಹಿಸಬೇಕು. ವೆಬ್ಸೈಟ್ನ ಲಾಗಿನ್ ಹ್ಯಾಂಡ್ಲರ್ ಬದಲಾಯಿಸುವುದರಿಂದ ಆ ಹಿಂದಿನ ಸವಾಲನ್ನು ಸರಿಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.
ರುಜುವಾತುಗಳನ್ನು ಹೊತ್ತ ಪ್ರಾಕ್ಸಿ URL ಗಳು ಹಳೆಯ ಉದಾಹರಣೆಗಳಲ್ಲಿ ಕಂಡುಬರುವ ಇನ್ನೊಂದು ಸ್ವರೂಪ. ಬಳಸಿದರೆ, URL ವಿಭಾಜಕಗಳನ್ನು ಸರಿಯಾಗಿ ಎನ್ಕೋಡ್ ಮಾಡಿ ಮತ್ತು ಉತ್ಪನ್ನವಾದ ರಹಸ್ಯ-ಸಾಗಿಸುವ URL ಅನ್ನು ಲಾಗ್ಗಳಿಂದ ಹೊರಗಿಡಿ.