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 заменіце стандартны запіс ImagesPipeline у ITEM_PIPELINES шляхам імпарту гэтага падкласа. Захавайце IMAGES_STORE і іншыя налады.

Выклік базавага класа захоўвае яго наладжанае поле URL выявы і зваротныя выклікі. Падклас дадае толькі маршрут запыту, які спажывае ўключаны HttpProxyMiddleware. Кожны URL выявы застаецца яго прызначэннем. Новыя запыты публічных выяваў без уліковых даных проксі могуць ужыць запіс з спісу HTTP-проксі, калі гэты маршрут дазволены.

Запыты старонак захоўваюць уласную палітыку. Пры глабальным асяроддзі проксі meta={'proxy': None} робіць выбраны запыт старонкі прамым у гэтым выпуску.

Праверце, што загрузка сапраўды адбылася. Трапленне ў кэш канвеера можа пазбегнуць сеткавага запыту. Для новых перадач параўнайце запісы вынікаў завершаных выяваў з запытанымі URL: паспяховыя аперацыі з'яўляюцца там, а збоі могуць пакінуць зыходнае поле URL выявы запоўненым. Адсочвайце адсутныя вынікі праз журналы загрузчыка і абраны проксі.

Падобныя артыкулы