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

Scrapy 2.13.3 gadījumā aizstājiet standarta ImagesPipeline ierakstu ITEM_PIPELINES ar šīs apakšklases importa ceļu. Saglabājiet IMAGES_STORE un citus iestatījumus.

Vecākklases izsaukšana saglabā konfigurēto attēla URL lauku un atzvanīšanas funkcijas. Apakšklase pievieno tikai pieprasījuma maršrutu, ko izmanto iespējotais HttpProxyMiddleware. Katrs attēla URL paliek tā galamērķis. Jauni publisku attēlu pieprasījumi bez starpniekservera akreditācijas datiem var izmantot ierakstu no HTTP starpniekserveru saraksta, ja šis maršruts ir atļauts.

Lapas pieprasījumi saglabā savu politiku. Ar globālu starpniekservera vidi meta={'proxy': None} šajā laidienā padara izvēlēto lapas pieprasījumu tiešu.

Pārbaudiet, vai lejupielāde patiešām tika izsūtīta. Konveijera kešatmiņas trāpījums var izvairīties no tīkla pieprasījuma. Jauniem pārsūtījumiem salīdziniet pabeigtu attēlu rezultātu ierakstus ar pieprasītajiem URL: veiksmīgas darbības tur parādās, savukārt kļūmes var atstāt sākotnējo attēla URL lauku aizpildītu. Izsekojiet trūkstošos rezultātus lejupielādētāja žurnālos un izvēlētajā starpniekserverī.

Saistītie raksti