Python urllib: прокси маршруттоосун сайттын Basic Authentication менен айкалыштыруу
urllib маршруттоосун жана багыттын Basic authentication ын глобалдык opener ди эки жолу алмаштырбастан бир ачык opener де айкалыштырыңыз.
install_opener() эки жолу чакыруу экинчи opener-ди биринчисине кошпойт. Ал модулдун демейки opener-ин алмаштырат. Эгер бир объект proxy-ни, экинчиси сайтка кирүүнү билсе, керектүү handler-лери бар бир opener куруңуз.
import os
from urllib.request import (ProxyHandler, HTTPBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener)
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(None, 'https://example.com/private/',
os.environ['SITE_USER'], os.environ['SITE_PASSWORD'])
opener = build_opener(
ProxyHandler({'https': 'http://203.0.113.10:8080'}),
HTTPBasicAuthHandler(passwords),
)
with opener.open('https://example.com/private/report', timeout=10) as response:
body = response.read()Proxy жана багыт мисалдар. Коомдук HTTP proxy аркылуу жетүүгө боло турган коомдук кызмат үчүн HTTP proxy тизмеси маршруттоо handler-ине талапкер endpoint-дерди берет. Бул opener HTTPS суроосун HTTP proxy аркылуу жөнөтөт жана багыттын Basic чакырыгын иштетет. Ал proxy аутентификациясын конфигурациялабайт.
Эгер proxy да кирүүнү талап кылса, колдоого алынган proxy-аутентификация схемасын өзүнчө тандаңыз. CONNECT учурундагы 407 багыт өзүнүн чакырыгын чыгарардан мурун болот. Сайттын маалыматтарын сырсөз менеджерине кошуу ошол эртерек алмашууну канааттандыра албайт.
opener.open() түз чакыруу конфигурацияны операция менен сактайт. Колдонмо бардык ыңгайлуу чакыруулар ушул opener-ди бөлүшүүнү атайын каалабаса, модулдук деңгээлдеги демейкини өзгөртүүнүн кереги жок.