Dołącz proxy do żądań obrazów Scrapy
Udekoruj Requests tworzone przez ImagesPipeline, aby pobieranie obrazów otrzymywało proxy bez przebudowywania logiki żądań potoku.
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.