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

For Scrapy 2.13.3 skal du erstatte standardposten ImagesPipeline i ITEM_PIPELINES med denne underklasses importsti. Behold IMAGES_STORE og andre indstillinger.

Kald af forælderen bevarer det konfigurerede billed-URL-felt og callbacks. Underklassen tilføjer kun anmodningsruten, som den aktiverede HttpProxyMiddleware forbruger. Hver billed-URL forbliver sin destination. Nye offentlige billedanmodninger uden proxy-legitimationsoplysninger kan bruge en post fra HTTP-proxylisten, når ruten er tilladt.

Sideanmodninger beholder deres egen politik. Med et globalt proxy-miljø gør meta={'proxy': None} en valgt sideanmodning direkte i denne udgivelse.

Kontroller, at en download faktisk blev sendt. Et cachehit i pipelinen kan undgå en netværksanmodning. For nye overførsler skal du sammenligne resultatposterne for færdige billeder med de anmodede URL'er: vellykkede handlinger vises der, mens fejl kan efterlade det oprindelige billed-URL-felt udfyldt. Spor manglende resultater via downloaderlogfiler og den valgte proxy.

Relaterede artikler