GET ผ่านพร็อกซีอาจไปถึงเซิร์ฟเวอร์แล้วตามการเปลี่ยนเส้นทางจนกว่าความล้มเหลวสุดท้ายจะบดบังการตอบสนองแรก เปิดเผยการตอบสนองเริ่มต้นนั้นเพื่อการวินิจฉัย:

request = scrapy.Request(
    'https://service.example/page',
    callback=inspect_redirect,
    meta={
        'proxy': 'http://proxy.example:8080',
        'dont_redirect': True,
        'handle_httpstatus_list': [301, 302, 303, 307, 308],
    },
)

จัดตารางคำขอนี้ผ่านโฟลว์ start หรือ callback ที่มีอยู่ของสไปเดอร์ สำหรับการตรวจสอบหน้าเว็บสาธารณะที่ได้รับอนุญาต รายการพร็อกซี HTTP มีผู้สมัครสำหรับ URL พร็อกซีของคำขอ inspect_redirect ควรบันทึกสถานะการตอบสนองและส่วนหัว Location แทนที่จะตามไปอีกครั้งอย่างไม่ลืมหูลืมตา

dont_redirect หยุดการเปลี่ยนเส้นทางอัตโนมัติสำหรับคำขอนี้ handle_httpstatus_list อนุญาตให้สถานะที่ระบุไปถึง callback แทนที่จะถูกปฏิเสธโดยการกรองข้อผิดพลาด HTTP การตั้งค่าเหล่านี้เกี่ยวข้องกับความรับผิดชอบที่แตกต่างกันของมิดเดิลแวร์

ตรวจสอบว่าการเปลี่ยนเส้นทางเลือกอะไร: URL มาตรฐานที่ตั้งใจ สคีมาหรือชื่อโฮสต์อื่น หน้าเข้าสู่ระบบ หรือวงจรที่เกิดซ้ำ 302 ที่ได้รับหลังการขนส่งสำเร็จเป็นการสังเกตที่แตกต่างจากการเปิดการเชื่อมต่อพร็อกซีไม่สำเร็จ

เมื่อการจัดการการเปลี่ยนเส้นทางตามปกติกลับคืนมา Scrapy จะเปิดเผย redirect_urls และ redirect_reasons ในเมตาดาต้าของคำขอของการตอบสนอง สิ่งเหล่านี้สามารถรักษาเส้นทางไปยังผลลัพธ์สุดท้ายโดยไม่ต้องปิดการเปลี่ยนเส้นทางตลอดการรวบรวมข้อมูลทั้งหมด

การตอบสนองสุดท้ายไม่ใช่หน้าที่แอปพลิเคชันตั้งใจโดยอัตโนมัติ เก็บปลายทางและเนื้อหาของการตอบสนองไว้พร้อมกับการวินิจฉัยเส้นทาง

บทความที่เกี่ยวข้อง