ਪ੍ਰਾਕਸੀ ਰਾਹੀਂ ਸਾਪੇਖ ਰੀਡਾਇਰੈਕਟ ਦੀ ਪਾਲਣਾ ਕਰੋ
ਮੌਜੂਦਾ ਟਾਰਗਿਟ URL ਦੇ ਸਾਪੇਖ ਸਾਪੇਖ Location ਨੂੰ ਹੱਲ ਕਰੋ, ਪ੍ਰਾਕਸੀ ਪਤੇ ਨੂੰ URL ਹੱਲ ਤੋਂ ਬਾਹਰ ਰੱਖਦੇ ਹੋਏ।
ਪ੍ਰਾਕਸੀ ਰਾਹੀਂ ਪ੍ਰਾਪਤ ਹੋਇਆ ਜਵਾਬ ਸਾਪੇਖ Location ਵਾਪਸ ਕਰ ਸਕਦਾ ਹੈ:
Location: ../new/
ਆਧੁਨਿਕ HTTP ਇੱਥੇ URI ਹਵਾਲੇ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਸਨੂੰ ਉਸ URL ਦੇ ਸਾਪੇਖ ਹੱਲ ਕਰੋ ਜਿਸਨੇ ਜਵਾਬ ਪੈਦਾ ਕੀਤਾ। ਜੇ ਉਹ URL https://docs.example/catalog/old/ ਸੀ, ਤਾਂ ਉੱਪਰਲਾ ਹਵਾਲਾ https://docs.example/catalog/new/ ਦਰਸਾਉਂਦਾ ਹੈ। ਪ੍ਰਾਕਸੀ ਦਾ ਹੋਸਟਨਾਮ ਅਧਾਰ ਨਹੀਂ ਹੈ।
ਆਮ Python urllib ਬੇਨਤੀਆਂ ਲਈ ਪ੍ਰਾਕਸੀ ਐਂਡਪੁਆਇੰਟ ਦੁਆਲੇ ਸਤਰਾਂ ਜੋੜਨ ਦੀ ਬਜਾਏ ਇਸਦੇ ਰੀਡਾਇਰੈਕਟ ਹੈਂਡਲਰ ਦੀ ਵਰਤੋਂ ਕਰੋ:
opener = build_opener(ProxyHandler({
"https": "http://proxy.example:8080",
}))
with opener.open("https://docs.example/catalog/old/",
timeout=15) as response:
final_url = response.geturl()
ਪ੍ਰਾਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਤੋਂ ਬਿਨਾਂ ਇਸ ਜਨਤਕ ਦਸਤਾਵੇਜ਼ ਬੇਨਤੀ ਲਈ, ਜਦੋਂ ਮਾਰਗ ਦੀ ਆਗਿਆ ਹੋਵੇ ਤਾਂ HTTP ਪ੍ਰਾਕਸੀ ਸੂਚੀ ਤੋਂ HTTP ਉਮੀਦਵਾਰ ਉਦਾਹਰਨ ਐਂਡਪੁਆਇੰਟ ਦੀ ਥਾਂ ਲੈ ਸਕਦਾ ਹੈ। ਕਲਾਸਾਂ urllib.request ਤੋਂ ਆਉਂਦੀਆਂ ਹਨ। ਇਸਦਾ ਆਮ ਹੈਂਡਲਰ ਆਪਣੀਆਂ ਸੀਮਾਵਾਂ ਵਿੱਚ ਸਮਰਥਿਤ ਰੀਡਾਇਰੈਕਟਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ। final_url ਅੰਤਿਮ ਸਰੋਤ URL ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ, ਉੱਥੇ ਪਹੁੰਚਣ ਲਈ ਵਰਤੇ ਵਿਚੋਲੇ ਦਾ ਨਹੀਂ।
ਪਹਿਲਾਂ ਹੱਲ ਕਰੋ, ਫਿਰ ਅਗਲਾ ਮਾਰਗ ਚੁਣੋ
ਰੀਡਾਇਰੈਕਟ ਟਾਰਗਿਟ ਹੋਸਟ ਜਾਂ ਸਕੀਮ ਬਦਲ ਸਕਦਾ ਹੈ। ਇਸ ਲਈ ਟਾਰਗਿਟ-ਅਧਾਰਿਤ ਪ੍ਰਾਕਸੀ ਨੀਤੀ ਨੂੰ ਉਹ ਨਵਾਂ URL ਵੀ ਮੁਲਾਂਕਣ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਪਹਿਲੇ ਹੋਸਟ ਲਈ ਕੰਮ ਕਰਨ ਵਾਲਾ ਮਾਰਗ ਅਗਲੇ ਲਈ ਨਹੀਂ ਹੋ ਸਕਦਾ।
ਜਦੋਂ ਤੁਸੀਂ ਖੁਦ ਰੀਡਾਇਰੈਕਟ ਸੰਭਾਲਣਾ ਲਾਗੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਡਾਟ-ਸੈਗਮੈਂਟ ਸੰਭਾਲਣ ਸਮੇਤ URI-ਹਵਾਲਾ ਹੱਲ ਵਰਤੋ। ਅਸਲ ਸਥਿਤੀ ਕੋਡ ਦੇ ਵਿਧੀ ਨਿਯਮ ਬਣਾਈ ਰੱਖੋ ਅਤੇ ਰੀਡਾਇਰੈਕਟ ਸੀਮਾ ਲਾਗੂ ਕਰੋ। ਹੋਸਟਨਾਮ ਨਾਲ Location ਜੋੜਨਾ ਉਸ ਹੱਲ ਐਲਗੋਰਿਦਮ ਦਾ ਬਦਲ ਨਹੀਂ ਹੈ।
ਜੇ ਰੀਡਾਇਰੈਕਟ ਫੇਲ੍ਹ ਹੋਵੇ, ਤਾਂ ਬੇਨਤੀ ਕੀਤਾ URL, ਜਵਾਬ ਸਥਿਤੀ, Location ਮੁੱਲ ਅਤੇ ਹੱਲ ਕੀਤਾ ਅਗਲਾ URL ਰੱਖੋ। ਇਹ ਚਾਰ ਮੁੱਲ ਆਮ ਤੌਰ 'ਤੇ ਦਿਖਾਉਂਦੇ ਹਨ ਕਿ ਅਸਫਲਤਾ URL ਬਣਾਉਣ ਦੀ ਹੈ ਜਾਂ ਬਾਅਦ ਵਿੱਚ ਕੋਸ਼ਿਸ਼ ਕੀਤੇ ਕਨੈਕਸ਼ਨ ਦੀ।