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 со тајна надвор од записите.