ສົ່ງການຈັບຄູ່ຫວ່າງໃຫ້ ProxyHandler ເມື່ອ urllib opener ໜຶ່ງຕ້ອງເຊື່ອມຕໍ່ໂດຍກົງ:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))

with direct.open("https://example.com/", timeout=10) as response:
    print(response.status)

dictionary ທີ່ຫວ່າງບໍ່ສະໜອງເສັ້ນທາງພຣັອກຊີໃດ. ການບໍ່ສົ່ງການຈັບຄູ່ຈະໃຫ້ handler ຄົ້ນຫາພຣັອກຊີຈາກສະພາບແວດລ້ອມແລະການຕັ້ງຄ່າແພລດຟອມແທນ. ສອງວິທີສ້າງນີ້ສະແດງນະໂຍບາຍຕ່າງກັນ.

ຕົວຢ່າງໃຊ້ຫ້ອງສະໝຸດມາດຕະຖານຂອງ Python ແລະຮັກສາການກວດສອບ HTTPS ປົກກະຕິ. ບລັອກ with ປິດຄຳຕອບ ລວມທັງເມື່ອອອກຈາກບລັອກຍ້ອນ exception.

ຄຳຮ້ອງຂໍໂດຍກົງແລະຜ່ານພຣັອກຊີໃນແອັບດຽວກັນ

opener ສອງອັນສາມາດຖືສອງນະໂຍບາຍ ໂດຍບໍ່ປ່ຽນຕົວແປສະພາບແວດລ້ອມລະຫວ່າງການເອີ້ນ:

from urllib.request import ProxyHandler, build_opener

direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}))

with proxied.open("https://example.com/", timeout=10) as response:
    print(response.status)

ແທນທີ່ຢູ່ loopback ດ້ວຍພຣັອກຊີ HTTP ຂອງທ່ານ ຫຼືເລືອກຈາກລາຍການພຣັອກຊີ HTTPເພື່ອປຽບທຽບຜ່ານພຣັອກຊີ. ມັນສາມາດຂົນສົ່ງການເຊື່ອມຕໍ່ຫາເປົ້າໝາຍ HTTPS ຜ່ານ CONNECT ເມື່ອບໍລິການອະນຸຍາດ. ໂປຣໂຕຄອນແລະການຮອງຮັບການຢືນຢັນຕົວຕົນຂອງຝ່າຍຮັບຟັງຕ້ອງກົງກັບ handler.

ປ່ອຍ opener ເລີ່ມຕົ້ນໄວ້ຄືເກົ່າ

ເອີ້ນ direct.open ຫຼື proxied.open ຜ່ານອອບເຈັກທີ່ຮັບຜິດຊອບເສັ້ນທາງ. install_opener ປ່ຽນຄ່າເລີ່ມຕົ້ນສຳລັບໂປຣເຊສທັງໝົດທີ່ຟັງຊັນອຳນວຍຄວາມສະດວກຂອງ urllib ໃຊ້; ຫ້ອງສະໝຸດທີ່ໃຊ້ມັນຈຶ່ງອາດກະທົບໂຄດທີ່ບໍ່ກ່ຽວຂ້ອງ. ບໍ່ຈຳເປັນສຳລັບ opener ທີ່ແຍກຕ່າງຫາກຂ້າງເທິງ.

ອາກິວເມນ timeout ເປັນການຕັ້ງຄ່າຂອງປະຕິບັດການ ບໍ່ແມ່ນກຳນົດເວລາຈິງສຳລັບການໂອນທັງໝົດແຕ່ລະຄັ້ງ. ອ່ານພຽງຂໍ້ມູນທີ່ວຽກຕ້ອງການ ແລະໃຊ້ກຳນົດເວລາລະດັບສູງກວ່າ ຖ້າມີຂີດຈຳກັດເວລາລວມທີ່ເຄັ່ງຄັດ.

ອອບເຈັກ opener ເຫຼົ່ານີ້ບໍ່ປ່ຽນລູກຂ່າຍຂອງຫ້ອງສະໝຸດອື່ນ, ໂປຣເຊສທີ່ມີຢູ່ ຫຼືການຕັ້ງຄ່າພຣັອກຊີຂອງບຣາວເຊີ.

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