Python urllib: Basiese proxy-verifikasie vir HTTP-versoeke
Bou 'n eksplisiete urllib-opener vir 'n Basic HTTP-proxy-uitdaging, en onderskei hierdie gewone HTTP-uitruiling van HTTPS CONNECT-verifikasie.
Vir 'n Basic-uitdaging van 'n HTTP-proxy, gebruik ProxyBasicAuthHandler. Hierdie gewone HTTP-voorbeeld hou die roete en die rekening in een 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)Gebruik die werklike eindpunt en die rekening wat die operateur verskaf. Die verwerker gebruik die wagwoordbestuurder vir die proxy se uitdaging; pas die beoogde proxy-URI en realm. Basiese verifikasie by die bestemming gebruik 'n ander verwerker.
Om die opener direk te roep, hou hierdie opstelling plaaslik. Die versoek-URL bly die webwerf, nie die tussenganger nie. Hierdie gewone HTTP-roete codeer nie 'n Basic-uitruiling nie.
Moenie uit hierdie voorbeeld aflei dat HTTPS-tonnels ondersteun word nie. 'n 407 tydens CONNECT gebeur by die opstelling, voor 'n gewone bestemmingsrespons; die gekose integrasie moet verifikasie daar hanteer. Om die webwerf se aanmeldverwerker te verander, kan nie daardie vroeere uitdaging regstel nie.
Proxy-URL's met geloofsbriewe is 'n ander formaat wat in ouer voorbeelde voorkom. As dit gebruik word, kodeer URL-skeiers korrek en hou die resulterende geheimbelaaide URL uit logboeke.