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 erstatter du standard ImagesPipeline-oppføringen i ITEM_PIPELINES med importstien til denne underklassen. Behold IMAGES_STORE og andre innstillinger.

Kall på forelderen bevarer det konfigurerte bilde-URL-feltet og tilbakeringingene. Underklassen legger bare til forespørselsruten, som den aktiverte HttpProxyMiddleware bruker. Hver bilde-URL forblir sin destinasjon. Nye forespørsler om offentlige bilder uten proxy-legitimasjon kan bruke en oppføring fra HTTP-proxylisten når den ruten er tillatt.

Sideforespørsler beholder sin egen policy. Med et globalt proxy-miljø gjør meta={'proxy': None} en valgt sideforespørsel direkte i denne utgivelsen.

Kontroller at en nedlasting faktisk ble sendt. En cachetreff i pipeline-en kan unngå en nettverksforespørsel. For nye overføringer, sammenlign resultatoppføringene for fullførte bilder med de forespurte URL-ene: vellykkede operasjoner vises der, mens feil kan la det opprinnelige bilde-URL-feltet stå fylt. Spor manglende resultater gjennom loggene til nedlasteren og den valgte proxyen.

Relaterte artikler