Python urllib: Basic na pagpapatotoo ng proxy para sa mga kahilingang HTTP
Bumuo ng tahasang urllib opener para sa Basic na hamon mula sa isang HTTP proxy, at ibukod ang karaniwang palitan ng HTTP na ito mula sa pagpapatotoo ng HTTPS CONNECT.
Para sa Basic na hamon mula sa HTTP proxy, gamitin ang ProxyBasicAuthHandler. Ang karaniwang halimbawang HTTP na ito ay nagtatala ng ruta at account sa isang 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)Gamitin ang tunay na endpoint at ang account na ibinigay ng operator. Ginagamit ng handler ang tagapamahala ng password para sa hamon ng proxy; itugma ang inaasahang URI at realm ng proxy. Ang Basic na pagpapatotoo sa destinasyon ay gumagamit ng ibang handler.
Ang pagtawag sa opener nang direkta ay nagpapanatili ng setup na ito sa lokal. Ang URL ng kahilingan ay nananatiling website, hindi ang tagapamagitan. Ang lantad na rutang HTTP na ito ay hindi nagsasaboy ng palitan ng Basic.
Huwag maghinuha ng suporta sa HTTPS tunnel mula sa halimbawang ito. Ang 407 habang CONNECT ay nangyayari sa pag-setup, bago ang karaniwang tugon ng destinasyon; dapat pangasiwaan ng napiling integrasyon ang pagpapatotoo doon. Ang pagpapalit ng login handler ng website ay hindi makakapag-ayos ng naunang hamon na iyon.
Ang mga URL ng proxy na may dalang kredensyal ay isa pang format na makikita sa mga lumang halimbawa. Kung gagamitin, i-encode nang tama ang mga delimiter ng URL at ilayo ang resultang URL na may lihim mula sa mga log.