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, sustituye la entrada estándar de ImagesPipeline en ITEM_PIPELINES por la ruta de importación de esta subclase. Conserva IMAGES_STORE y los demás ajustes.

Llamar al padre preserva su campo de URL de imagen y sus callbacks configurados. La subclase solo añade la ruta de solicitud, que consume HttpProxyMiddleware habilitado. Cada URL de imagen sigue siendo su destino. Las solicitudes nuevas de imágenes públicas sin credenciales de proxy pueden usar una entrada de la lista de proxies HTTP cuando se permite esa ruta.

Las solicitudes de página mantienen su propia política. Con un entorno de proxy global, meta={'proxy': None} hace directa una solicitud de página seleccionada en esta versión.

Comprueba que la descarga se haya emitido realmente. Un acierto de la caché del pipeline puede evitar una solicitud de red. Para transferencias nuevas, compara las entradas de resultado de imagen completada con las URL solicitadas: las operaciones correctas aparecen ahí, mientras que los fallos pueden dejar el campo de URL de imagen original relleno. Rastrea los resultados ausentes en los registros del descargador y en el proxy elegido.

Artículos relacionados