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

W Scrapy 2.13.3 zastąp standardowy wpis ImagesPipeline w ITEM_PIPELINES ścieżką importu tej podklasy. Zachowaj IMAGES_STORE i pozostałe ustawienia.

Wywołanie klasy nadrzędnej zachowuje skonfigurowane pole URL obrazu i wywołania zwrotne. Podklasa dodaje tylko trasę żądania, którą wykorzystuje włączony HttpProxyMiddleware. Każdy URL obrazu pozostaje jego celem. Nowe żądania publicznych obrazów bez poświadczeń proxy mogą użyć wpisu z listy proxy HTTP, gdy ta trasa jest dozwolona.

Żądania stron zachowują własną politykę. W globalnym środowisku proxy meta={'proxy': None} czyni wybrane żądanie strony bezpośrednim w tym wydaniu.

Sprawdź, czy pobieranie rzeczywiście zostało wysłane. Trafienie w pamięć podręczną potoku może zapobiec żądaniu sieciowemu. W przypadku nowych transferów porównaj wpisy wyników ukończonych obrazów z żądanymi URL: udane operacje pojawiają się tam, a niepowodzenia mogą pozostawić wypełnione pierwotne pole URL obrazu. Śledź brakujące wyniki w logach pobierającego i wybranym proxy.

Powiązane artykuły