Python urllib: ປິດພຣັອກຊີສຳລັບ opener ດຽວ
ສ້າງ urllib opener ທີ່ເຊື່ອມຕໍ່ໂດຍກົງດ້ວຍ ProxyHandler({}) ໂດຍບໍ່ປ່ຽນລູກຂ່າຍອື່ນ ຫຼືສະພາບແວດລ້ອມຂອງໂປຣເຊສ.
ສົ່ງການຈັບຄູ່ຫວ່າງໃຫ້ 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 ເຫຼົ່ານີ້ບໍ່ປ່ຽນລູກຂ່າຍຂອງຫ້ອງສະໝຸດອື່ນ, ໂປຣເຊສທີ່ມີຢູ່ ຫຼືການຕັ້ງຄ່າພຣັອກຊີຂອງບຣາວເຊີ.