ਪ੍ਰੌਕਸੀ 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 ਦਿਖਾਉਂਦਾ ਹੈ। ਇਹ ਪੂਰੀ ਕ੍ਰਾਲ ਲਈ ਰੀਡਾਇਰੈਕਟ ਅਯੋਗ ਛੱਡੇ ਬਿਨਾਂ ਅੰਤਿਮ ਨਤੀਜੇ ਤੱਕ ਦਾ ਰਾਹ ਸੰਭਾਲ ਸਕਦੇ ਹਨ।

ਅੰਤਿਮ ਪ੍ਰਤੀਕਿਰਿਆ ਆਪਣੇ-ਆਪ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਲੋੜੀਂਦਾ ਪੰਨਾ ਨਹੀਂ ਹੁੰਦੀ। ਮੰਜ਼ਿਲ ਅਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਰਾਊਟਿੰਗ ਨਿਦਾਨ ਨਾਲ ਰੱਖੋ।

ਸੰਬੰਧਿਤ ਲੇਖ