Pievienojiet starpniekserveri Scrapy attēlu pieprasījumiem
Izrotājiet ImagesPipeline veidotos Requests, lai attēlu lejupielādes saņemtu starpniekserveri, nepārbūvējot konveijera pieprasījumu loģiku.
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ī.