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 için ITEM_PIPELINES içindeki standart ImagesPipeline girdisini bu alt sınıfın içe aktarma yoluyla değiştirin. IMAGES_STORE ve diğer ayarları koruyun.

Üst sınıfı çağırmak, yapılandırılmış görsel URL alanını ve geri çağrıları korur. Alt sınıf yalnızca istek rotasını ekler; bunu etkinleştirilmiş HttpProxyMiddleware tüketir. Her görsel URL kendi hedefi olarak kalır. Proxy kimlik bilgileri olmayan yeni genel görsel istekleri, o rotaya izin verildiğinde HTTP proxy listesindeki bir girdiyi kullanabilir.

Sayfa istekleri kendi politikalarını korur. Global bir proxy ortamında, bu sürümde meta={'proxy': None} seçilen bir sayfa isteğini doğrudan yapar.

Bir indirmenin gerçekten gönderildiğini doğrulayın. İşlem hattı önbellek isabeti bir ağ isteğinden kaçınabilir. Yeni aktarımlar için tamamlanan görsel sonuç girdilerini istenen URL'lerle karşılaştırın: başarılı işlemler orada görünür, başarısızlıklar ise özgün görsel URL alanını dolu bırakabilir. Eksik sonuçları indirici günlükleri ve seçilen proxy aracılığıyla izleyin.

İlgili makaleler