Python urllib: основна аутентификација проксија за HTTP захтеве
Направите експлицитни urllib opener за Basic изазов HTTP проксија и разликујте ту обичну HTTP размену од HTTPS CONNECT аутентификације.
За Basic изазов са HTTP проксија користите 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 тунел подржан. 407 током CONNECT настаје при подешавању, пре обичног одговора одредишта; изабрана интеграција мора ту да обради аутентификацију. Промена руковаоца за пријаву на сајту не може да поправи тај ранији изазов.
Прокси URL-ови који носе акредитиве други су формат који се среће у старијим примерима. Ако се користе, исправно кодирајте разделнике URL-а и држите добијени URL са тајном изван записа.