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

Pre Scrapy 2.13.3 nahraďte štandardnú položku ImagesPipeline v ITEM_PIPELINES cestou importu tejto podtriedy. Zachovajte IMAGES_STORE a ostatné nastavenia.

Volanie rodiča zachováva nakonfigurované pole URL obrázka a spätné volania. Podtrieda pridáva iba trasu požiadavky, ktorú spotrebúva povolený HttpProxyMiddleware. Každá URL obrázka zostáva jej cieľom. Nové požiadavky na verejné obrázky bez prihlasovacích údajov k proxy môžu použiť položku zo zoznamu HTTP proxy, ak je táto trasa povolená.

Požiadavky na stránky si zachovávajú vlastnú politiku. S globálnym proxy prostredím robí meta={'proxy': None} vybranú požiadavku na stránku v tomto vydaní priamou.

Overte, že sťahovanie skutočne prebehlo. Zásah do cache pipeline môže zabrániť sieťovej požiadavke. Pri nových prenosoch porovnajte položky výsledkov dokončených obrázkov s požadovanými URL: úspešné operácie sa tam objavia, zatiaľ čo zlyhania môžu nechať pôvodné pole URL obrázka vyplnené. Chýbajúce výsledky sledujte v protokoloch sťahovača a vo zvolenom proxy.

Súvisiace články