Python urllib: ການຢືນຢັນ Basic ຂອງ proxy ສຳລັບຄຳຮ້ອງ HTTP
ສ້າງ urllib opener ທີ່ຊັດເຈນສຳລັບການທ້າທາຍ Basic ຈາກ HTTP proxy ແລະ ແຍກການແລກປ່ຽນ HTTP ປົກກະຕິນີ້ອອກຈາກການຢືນຢັນ HTTPS CONNECT.
ສຳລັບການທ້າທາຍ Basic ຈາກ HTTP proxy ໃຫ້ໃຊ້ 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)ໃຊ້ຈຸດສິ້ນສຸດທີ່ແທ້ຈິງແລະບັນຊີທີ່ຜູ້ປະກອບການສະໜອງໃຫ້. ຕົວຈັດການນີ້ ໃຊ້ຕົວຈັດການລະຫັດຜ່ານສຳລັບການທ້າທາຍຂອງ proxy; ຈັບຄູ່ URI ແລະ realm ຂອງ proxy ທີ່ຕັ້ງໃຈ. ການຢືນຢັນ Basic ຢູ່ປາຍທາງໃຊ້ຕົວຈັດການອື່ນ.
ການເອີ້ນ opener ໂດຍກົງເຮັດໃຫ້ການຕັ້ງຄ່ານີ້ຢູ່ໃນທ້ອງຖິ່ນ. URL ຂອງຄຳຮ້ອງຍັງເປັນເວັບໄຊ ບໍ່ແມ່ນຕົວກາງ. ເສັ້ນທາງ HTTP ແບບເປີດເຜີຍນີ້ບໍ່ເຂົ້າລະຫັດການແລກປ່ຽນ Basic.
ຢ່າສະຫຼຸບຈາກຕົວຢ່າງນີ້ວ່າມີການຮອງຮັບອຸໂມງ HTTPS. 407 ລະຫວ່າງ CONNECT ເກີດຂຶ້ນຕອນຕັ້ງຄ່າ ກ່ອນການຕອບສະໜອງປົກກະຕິຈາກປາຍທາງ; ການເຊື່ອມຕໍ່ທີ່ເລືອກຕ້ອງຈັດການການຢືນຢັນຢູ່ຈຸດນັ້ນ. ການປ່ຽນຕົວຈັດການເຂົ້າສູ່ລະບົບຂອງເວັບໄຊບໍ່ສາມາດແກ້ໄຂການທ້າທາຍກ່ອນໜ້ານັ້ນໄດ້.
URL proxy ທີ່ມີຂໍ້ມູນຢືນຢັນເປັນຮູບແບບອື່ນທີ່ພົບໃນຕົວຢ່າງເກົ່າ. ຖ້າໃຊ້ ໃຫ້ເຂົ້າລະຫັດຕົວຂັ້ນ URL ຢ່າງຖືກຕ້ອງ ແລະ ເກັບ URL ທີ່ມີຄວາມລັບໄວ້ນອກບັນທຶກ.