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 ਲੌਗ ਤੋਂ ਬਾਹਰ ਰੱਖੋ।