Проксиран 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 в метаданните на заявката на отговора. Те могат да запазят пътя към краен резултат, без да оставят пренасочванията изключени за цялото обхождане.

Крайният отговор не е автоматично страницата, която приложението е имало предвид. Пазете дестинацията и съдържанието на отговора заедно с диагностиката на маршрутизирането.

Подобни статии