Далучыце проксі да запытаў выяваў Scrapy
Аформіце аб'екты Requests, якія стварае ImagesPipeline, каб загрузкі выяваў атрымлівалі проксі без перабудовы логікі запытаў канвеера.
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 выявы запоўненым. Адсочвайце адсутныя вынікі праз журналы загрузчыка і абраны проксі.