from scrapy.pipelines.images import ImagesPipeline

class ProxiedImagesPipeline(ImagesPipeline):
    def get_media_requests(self, item, info):
        for request in super().get_media_requests(item, info):
            request.meta['proxy'] = 'http://proxy.example:8080'
            yield request

สำหรับ Scrapy 2.13.3 ให้แทนที่รายการ ImagesPipeline มาตรฐานใน ITEM_PIPELINES ด้วยเส้นทาง import ของคลาสย่อยนี้ คง IMAGES_STORE และการตั้งค่าอื่นๆ ไว้

การเรียกคลาสแม่จะรักษาฟิลด์ URL รูปภาพและ callback ที่ตั้งค่าไว้ คลาสย่อยเพิ่มเฉพาะเส้นทางคำขอ ซึ่ง HttpProxyMiddleware ที่เปิดใช้งานจะใช้ URL รูปภาพแต่ละรายการยังคงเป็นปลายทางของมัน คำขอรูปภาพสาธารณะใหม่ที่ไม่มีข้อมูลรับรองพร็อกซีสามารถใช้รายการจาก รายการพร็อกซี HTTP เมื่อได้รับอนุญาตเส้นทางนั้น

คำขอหน้าเว็บมีนโยบายของตัวเอง ด้วยสภาพแวดล้อมพร็อกซีทั่วโลก meta={'proxy': None} ทำให้คำขอหน้าที่เลือกเป็นแบบตรงในรุ่นนี้

ตรวจสอบว่ามีการออกการดาวน์โหลดจริง การชนแคชของไปป์ไลน์อาจหลีกเลี่ยงคำขอเครือข่าย สำหรับการถ่ายโอนใหม่ ให้เปรียบเทียบรายการผลลัพธ์รูปภาพที่เสร็จแล้วกับ URL ที่ร้องขอ การดำเนินการที่สำเร็จจะปรากฏที่นั่น ขณะที่ความล้มเหลวอาจทิ้งฟิลด์ URL รูปภาพเดิมไว้เต็ม ติดตามผลลัพธ์ที่หายไปผ่านบันทึกของตัวดาวน์โหลดและพร็อกซีที่เลือก

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