Proxy üzerinden gelen bir yanıt göreli bir Location döndürebilir:

Location: ../new/

Modern HTTP burada URI başvurusuna izin verir. Yanıtı üreten URL'ye göre çözümleyin. Bu URL https://docs.example/catalog/old/ idiyse, yukarıdaki başvuru https://docs.example/catalog/new/ adresini belirtir. Proxy'nin ana bilgisayar adı temel değildir.

Sıradan Python urllib istekleri için proxy uç noktası çevresinde dize birleştirmek yerine yönlendirme işleyicisini kullanın:

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()

Proxy kimlik doğrulaması olmayan bu genel belge isteği için, yol izinli olduğunda HTTP proxy listesinden bir HTTP adayı örnek uç noktanın yerini alabilir. Sınıflar urllib.request'ten gelir. Normal işleyicisi desteklenen yönlendirmeleri kendi sınırları içinde izler. final_url, kaynağın son URL'sini tanımlar; ona ulaşmak için kullanılan aracıyı değil.

Önce çözümleyin, sonra sonraki rotayı seçin

Bir yönlendirme hedef ana bilgisayarı veya şemayı değiştirebilir. Bu nedenle hedef tabanlı proxy ilkesi bu yeni URL'yi de değerlendirmelidir. İlk ana bilgisayar için çalışan rota, sonraki için rota olmayabilir.

Yönlendirme işlemeyi kendiniz uygularken nokta segmentlerini işleyen URI başvurusu çözümlemesini kullanın. Gerçek durum kodunun yöntem kurallarını koruyun ve bir yönlendirme sınırı koyun. Location'ı bir ana bilgisayar adına eklemek o çözümleme algoritmasının yerini tutmaz.

Bir yönlendirme başarısız olursa istenen URL'yi, yanıt durumunu, Location değerini ve çözümlenmiş sonraki URL'yi saklayın. Bu dört değer genellikle hatanın URL oluşturmaya mı yoksa sonrasında denenen bağlantıya mı ait olduğunu gösterir.

İlgili makaleler