ສຳລັບການກວດພຣັອກຊີ urllib3 ຂະໜາດນ້ອຍ ໃຊ້ ProxyManager ໂດຍປິດການລອງໃໝ່. ມັນລາຍງານຄັ້ງທຳອິດ ແທນການໃຊ້ເວລາລອງຊ້ຳລາຍການທີ່ເຊົາໃຊ້ໄດ້. ໃນໂຄງການຄຸ້ມຄອງໂດຍ uv:

uv add urllib3

ແທນຈຸດປາຍເອກະສານດ້ວຍ HTTP ພຣັອກຊີຈາກບໍລິການຂອງທ່ານ ຫຼື ລາຍການພຣັອກຊີ HTTP ແລ້ວສົ່ງຄຳຂໍຜ່ານຕົວຈັດການນັ້ນ:

import urllib3

proxy = urllib3.ProxyManager(
    "http://203.0.113.10:8080",
    timeout=urllib3.Timeout(connect=5, read=10),
    retries=False,
)

try:
    response = proxy.request("GET", "https://example.com/")
    print(response.status)
    print(response.data.decode("utf-8", errors="replace")[:200])
finally:
    proxy.clear()

ອ່ານ response.status ກ່ອນ ແລ້ວກວດ response.data. ນີ້ແມ່ນຊ່ອງຂອງ urllib3; status_code ແລະ text ແບບ Requests ບໍ່ແມ່ນຕົວແທນ. ການປະຕິເສດເວັບໄຊອາດມາຜ່ານພຣັອກຊີທີ່ໃຊ້ໄດ້. ຂໍ້ຍົກເວັ້ນກ່ອນຄຳຕອບກັບຊີ້ວ່າຄຳຂໍບໍ່ສຳເລັດ.

retries=False ເປັນທາງເລືອກກວດຫາບັນຫາ ບໍ່ແມ່ນນະໂຍບາຍລອງໃໝ່ສຳລັບໃຊ້ງານຈິງ. ການຕັ້ງເຊື່ອມຕໍ່ 5 ວິນາທີ ແລະ ອ່ານ 10 ວິນາທີຈຳກັດແຕ່ລະຂັ້ນ ບໍ່ໄດ້ລວມເປັນຂີດຈຳກັດເວລາ 15 ວິນາທີທີ່ຮັບປະກັນ. DNS ແລະ ຄວາມຄືບໜ້າຂອງຄຳຕອບອາດກະທົບເວລາລໍຖ້າລວມ.

ຕົວຢ່າງໂຫຼດເນື້ອຫາລ່ວງໜ້າ ແລະ ລ້າງກຸ່ມການເຊື່ອມຕໍ່ຂອງຕົວຈັດການໃນຕອນຈົບ. ສຳລັບຄຳຂໍຊ້ຳຜ່ານຈຸດປາຍດຽວກັນ ຮັກສາຕົວຈັດການຈົນວຽກສຳເລັດເພື່ອໃຊ້ການເຊື່ອມຕໍ່ຊ້ຳ. ປ່ຽນໄປ preload_content=False ຈະປ່ຽນວົງຈອນ: ຜູ້ເອີ້ນຕ້ອງອ່ານ ແລະ ປ່ອຍຄຳຕອບແບບສະຕຣີມ.

ເລືອກຕົວຈັດການໃຫ້ກົງກັບບໍລິການທີ່ຟັງ. PoolManager ທົ່ວໄປບໍ່ໄດ້ຮູ້ຈັກພຣັອກຊີເພາະມີ URL ເກັບຢູ່ບ່ອນອື່ນ; SOCKS ໃຊ້ urllib3.contrib.socks.SOCKSProxyManager ແລະ ສ່ວນເພິ່ງພາທາງເລືອກ. ໂຄດຂ້າງເທິງໃຊ້ເສັ້ນທາງ HTTP ProxyManager.

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