Python urllib: HTTP суроолору үчүн Basic прокси аутентификациясы
Basic HTTP прокси чакырыгы үчүн ачык urllib opener түзүп, бул кадимки HTTP алмашууну HTTPS CONNECT аутентификациясынан ажыратыңыз.
HTTP проксиден келген Basic чакырыгы үчүн 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 туннелине колдоо бар деп жыйынтык чыгарбаңыз. CONNECT учурундагы 407 жөндөө учурунда, барар жердин кадимки жообунан мурун болот; тандалган интеграция аутентификацияны ошол жерде иштетүүгө тийиш. Сайттын кирүү иштетүүчүсүн алмаштыруу ошол мурунку чакырыкты оңдой албайт.
Күбөлүктөрдү алып жүргөн прокси URL'лери эски мисалдарда кездешкен башка формат. Эгер колдонсоңуз, URL бөлгүчтөрүн туура коддоп, пайда болгон сырды алып жүргөн URL'ди журналдардан сырткары кармаңыз.