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 bytar du ut standard ImagesPipeline-oppføringa i ITEM_PIPELINES med importstien til denne underklassa. Hald på IMAGES_STORE og andre innstillingar.

Kall på forelderen bevarar det konfigurerte bilete-URL-feltet og tilbakekallingane. Underklassa legg berre til førespurnadsruta, som den aktiverte HttpProxyMiddleware brukar. Kvar bilete-URL blir verande destinasjonen sin. Nye førespurnader om offentlege bilete utan proxy-legitimasjon kan bruke ei oppføring frå HTTP-proxylista når den ruta er tillaten.

Sideførespurnader held på sin eigen politikk. Med eit globalt proxy-miljø gjer meta={'proxy': None} ein vald sideførespurnad direkte i denne utgåva.

Kontroller at ei nedlasting faktisk vart send. Eit cachetreff i pipeline-en kan unngå ein nettverksførespurnad. For nye overføringar, samanlikn resultatoppføringane for fullførte bilete med dei førespurde URL-ane: vellukka operasjonar viser seg der, medan feil kan la det opphavlege bilete-URL-feltet stå fylt. Spor manglande resultat gjennom loggane til nedlastaren og den valde proxyen.

Relaterte artiklar