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-ын хувьд ITEM_PIPELINES доторх стандарт ImagesPipeline бичлэгийг энэ дэд классын импортын замаар соль. IMAGES_STORE болон бусад тохиргоог хадгал.

Эх классыг дуудах нь түүний тохируулсан зургийн URL талбар болон буцаан дуудлагыг хадгална. Дэд класс зөвхөн хүсэлтийн замыг нэмдэг бөгөөд үүнийг идэвхжсэн HttpProxyMiddleware ашигладаг. Зургийн URL бүр өөрийн очих газар хэвээр байна. Прокси итгэмжлэлгүй шинэ нийтийн зургийн хүсэлтүүд тухайн зам зөвшөөрөгдсөн үед HTTP прокси жагсаалтаас бичлэг ашиглаж болно.

Хуудасны хүсэлтүүд өөрийн бодлогыг хадгална. Глобал прокси орчинд meta={'proxy': None} энэ хувилбарт сонгосон хуудасны хүсэлтийг шууд болгоно.

Татан авалт үнэхээр гарсан эсэхийг шалга. Дамжуулах хоолойн кэш онох нь сүлжээний хүсэлтээс зайлсхийж болно. Шинэ дамжуулалтын хувьд дууссан зургийн үр дүнгийн бичлэгүүдийг хүссэн URL-тай харьцуул: амжилттай үйлдлүүд тэнд харагдана, харин алдаа нь анхны зургийн URL талбарыг дүүргэсэн хэвээр үлдээж болно. Алга болсон үр дүнг татан авагчийн лог болон сонгосон проксигоор хяна.

Холбоотой нийтлэлүүд