Прокситой 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-ыг ил болгоно. Эдгээр нь бүх шалгалтын турш дахин чиглүүлэлтийг идэвхгүй орхихгүйгээр эцсийн үр дүн рүү хүрэх замыг хадгалж чадна.

Эцсийн хариу нь програмын зорьсон хуудас автоматаар биш. Очих газрыг болон хариуны агуулгыг чиглүүлэлтийн диагностиктой хамт хадгал.

Холбоотой нийтлэлүүд