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

Para Scrapy 2.13.3, substitúe a entrada estándar de ImagesPipeline en ITEM_PIPELINES pola ruta de importación desta subclase. Conserva IMAGES_STORE e os demais axustes.

Chamar ao pai preserva o seu campo de URL de imaxe e as súas devolucións de chamada configurados. A subclase só engade a ruta de solicitude, que consome HttpProxyMiddleware habilitado. Cada URL de imaxe segue sendo o seu destino. As solicitudes novas de imaxes públicas sen credenciais de proxy poden usar unha entrada da lista de proxies HTTP cando se permite esa ruta.

As solicitudes de páxina manteñen a súa propia política. Cun ambiente de proxy global, meta={'proxy': None} fai directa unha solicitude de páxina seleccionada nesta versión.

Comproba que a descarga se emitise realmente. Un acerto da caché do pipeline pode evitar unha solicitude de rede. Para transferencias novas, compara as entradas de resultado de imaxe completada coas URL solicitadas: as operacións correctas aparecen alí, mentres que os fallos poden deixar o campo de URL de imaxe orixinal cuberto. Rastrexa os resultados ausentes nos rexistros do descargador e no proxy escollido.

Artigos relacionados