Проксиленген 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],
    },
)

Бұл сұрауды өрмекшінің бар start немесе callback ағыны арқылы жоспарлаңыз. Рұқсат етілген жалпыға ашық бетті тексеру үшін HTTP проксилер тізімі сұраудың прокси URL-іне үміткерлер ұсынады. inspect_redirect жауап күйі мен Location тақырыбын жазып алуы керек, оны қайтадан соқыр түрде ұстанудың орнына.

dont_redirect осы сұрау үшін автоматты қайта бағыттауды тоқтатады. handle_httpstatus_list аталған күйлердің HTTP қателерін сүзу арқылы қабылданбауының орнына callback-ке жетуіне мүмкіндік береді. Бұл параметрлер middleware-дің түрлі жауапкершіліктеріне қатысты.

Қайта бағыттаудың нені таңдайтынын тексеріңіз: көзделген канондық URL, басқа схема немесе хост атауы, кіру беті немесе қайталанатын цикл. Сәтті тасымалдан кейін алынған 302 прокси қосылымын аша алмаудан өзгеше бақылау болып табылады.

Қалыпты қайта бағыттауды өңдеу қалпына келтірілгенде, Scrapy жауаптың сұрау метадеректерінде redirect_urls және redirect_reasons көрсетеді. Олар бүкіл шарлау барысында қайта бағыттауларды өшірулі қалдырмай, түпкі нәтижеге апарар жолды сақтай алады.

Соңғы жауап қосымша көздеген бет емес. Межелі орын мен жауап мазмұнын маршруттау диагностикасымен бірге сақтаңыз.

Қатысты мақалалар