Scrapy може да покаже пренасочването, преди да го последва
Временно разкрийте първоначалния статус на пренасочване и Location на проксиран GET чрез метаданни на заявката, като държите обработката на пренасочванията отделно от филтрирането на HTTP грешки.
Проксиран GET може да достигне сървър и след това да следва пренасочвания, докато евентуалният отказ не скрие първия отговор. Разкрийте този първоначален отговор за диагностика:
request = scrapy.Request(
'https://service.example/page',
callback=inspect_redirect,
meta={
'proxy': 'http://proxy.example:8080',
'dont_redirect': True,
'handle_httpstatus_list': [301, 302, 303, 307, 308],
},
)
Планирайте тази заявка през съществуващия поток за стартиране или callback на паяка. За разрешена проверка на публична страница списъкът с HTTP прокси сървъри предоставя кандидати за прокси URL на заявката. inspect_redirect трябва да записва статуса на отговора и заглавката Location, вместо отново да го следва сляпо.
dont_redirect спира автоматичното пренасочване за тази заявка. handle_httpstatus_list позволява на посочените статуси да достигнат до callback, вместо да бъдат отхвърлени от филтрирането на HTTP грешки. Настройките засягат различни отговорности на middleware.
Проверете какво избира пренасочването: желан каноничен URL, друга схема или име на хост, страница за вход или повтарящ се цикъл. Получен 302 след успешен трансфер е различно наблюдение от неуспеха да се отвори прокси връзката.
Когато нормалната обработка на пренасочвания е възстановена, Scrapy показва redirect_urls и redirect_reasons в метаданните на заявката на отговора. Те могат да запазят пътя към краен резултат, без да оставят пренасочванията изключени за цялото обхождане.
Крайният отговор не е автоматично страницата, която приложението е имало предвид. Пазете дестинацията и съдържанието на отговора заедно с диагностиката на маршрутизирането.