ອ່ານຈຸດສິ້ນສຸດ proxy ແລະ IP ການເຊື່ອມຕໍ່ຂອງ Scrapy
ໃຊ້ metadata ຂອງຄຳຮ້ອງສຳລັບ proxy ທີ່ເລືອກ, ຖື response.ip_address ເປັນຂໍ້ມູນ peer ທີ່ handler ໃຫ້, ແລະ ກວດ IP ອອກຢູ່ປາຍທາງ.
ເມື່ອກວດເສັ້ນທາງທີ່ເລືອກ, ໃຊ້ Request ທີ່ຕິດກັບການຕອບສະໜອງທີ່ສຳເລັດແລ້ວ. ເກັບການສັງເກດສາມຢ່າງແຍກກັນ:
| ຊ່ອງ | ຄວາມໝາຍ |
|---|---|
response.request.meta.get('proxy') | URL proxy ທີ່ເລືອກສຳລັບຄຳຮ້ອງນີ້, ເມື່ອມີ |
response.ip_address | ທີ່ຢູ່ທີ່ handler ດາວໂຫຼດໃຫ້, ອາດເປັນ None |
| ລາຍງານແຫຼ່ງຈາກປາຍທາງທີ່ໄວ້ວາງໃຈ | ແຫຼ່ງສາທາລະນະທີ່ສັງເກດເຫັນຢູ່ນັ້ນ |
ພາຍໃນ callback, ຍົກເວັ້ນພາກສ່ວນ URL ທີ່ມີຂໍ້ມູນຢືນຢັນອອກຈາກການວິເຄາະປົກກະຕິ:
from urllib.parse import urlsplit
proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
'target_host=%s proxy_host=%s peer_ip=%s',
urlsplit(response.url).hostname, proxy_host, response.ip_address,
)ໃນ handler HTTP/1.1 ຂອງ Scrapy 2.13.3 ທີ່ຢູ່ມາຈາກ peer ຂອງການເຊື່ອມຕໍ່ຂອງການຕອບສະໜອງ, ບໍ່ແມ່ນຈາກບໍລິການ IP ອອກ. ບາງເສັ້ນທາງ, ລວມທັງການຕອບສະໜອງຄວາມຍາວສູນ, ອາດເຮັດໃຫ້ມັນເປັນ None. handler ອື່ນອາດເຕີມມັນຕ່າງກັນ. None ເອງບໍ່ໄດ້ພິສູດການເສັ້ນທາງໂດຍກົງ.
ສຳລັບການກວດອອກ, ຖາມຈຸດສິ້ນສຸດທີ່ໄວ້ວາງໃຈພາຍໃຕ້ນະໂຍບາຍ proxy ທີ່ຕັ້ງໃຈ ແລະ ເກັບຕົວຕົນຂອງຄຳຮ້ອງກັບການສັງເກດ. middleware ທີ່ໝູນວຽນອາດໃຫ້ຈຸດສິ້ນສຸດອື່ນສຳລັບການກວດຕໍ່ໄປ.
ການປ່ຽນເສັ້ນທາງກໍ່ສ້າງຄຳຮ້ອງອີກອັນໜຶ່ງ. metadata ສຸດທ້າຍອະທິບາຍຂັ້ນນັ້ນ; ກວດປະຫວັດການປ່ຽນເສັ້ນທາງ ແລະ ການເລືອກຄືນໃໝ່ໃດໆຂອງ middleware ແທນທີ່ຈະຖືວ່າເປັນຫຼັກຖານຂອງເສັ້ນທາງ URL ທຳອິດ.