ການເອີ້ນ install_opener() ສອງເທື່ອບໍ່ໄດ້ເພີ່ມ opener ທີສອງເຂົ້າໃນອັນທຳອິດ. ມັນປ່ຽນ opener ຄ່າເລີ່ມຕົ້ນຂອງ module. ຖ້າວັດຖຸໜຶ່ງຮູ້ proxy ແລະ ອີກອັນໜຶ່ງຮູ້ການເຂົ້າສູ່ເວັບໄຊ, ສ້າງ opener ດຽວທີ່ມີ handlers ທີ່ຕ້ອງການ.

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 ສາທາລະນະ, ລາຍການ proxy HTTP ໃຫ້ endpoints ຜູ້ສະໝັກສຳລັບ handler ການກຳນົດເສັ້ນທາງ. opener ນີ້ສົ່ງຄຳຮ້ອງ HTTPS ຜ່ານ HTTP proxy ແລະ ຈັດການການທ້າທາຍ Basic ຂອງປາຍທາງ. ມັນບໍ່ຕັ້ງຄ່າການພິສູດຢືນຢັນ proxy.

ຖ້າ proxy ຕ້ອງການການເຂົ້າສູ່ລະບົບນຳ, ເລືອກການຈັດການພິສູດຢືນຢັນ proxy ທີ່ຮອງຮັບແຍກຕ່າງຫາກ. 407 ໃນເວລາ CONNECT ເກີດຂຶ້ນກ່ອນປາຍທາງຈະສາມາດອອກການທ້າທາຍຂອງຕົນເອງ. ການເພີ່ມຂໍ້ມູນປະຈຳຕົວຂອງເວັບໄຊໃສ່ຕົວຈັດການລະຫັດຜ່ານບໍ່ສາມາດຕອບສະໜອງການແລກປ່ຽນກ່ອນໜ້ານັ້ນໄດ້.

ການເອີ້ນ opener.open() ໂດຍກົງຮັກສາ ການຕັ້ງຄ່າກັບການປະຕິບັດ. ບໍ່ຈຳເປັນຕ້ອງປ່ຽນຄ່າເລີ່ມຕົ້ນທົ່ວ module ເວັ້ນແຕ່ແອັບພລິເຄຊັນຕ້ອງການໂດຍເຈດຕະນາໃຫ້ການເອີ້ນສະດວກທັງໝົດແບ່ງປັນ opener ນີ້.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ