WebProxy का URI कंस्ट्रक्टर एक एंडपॉइंट चुनता है; वह उस URI की उपयोगकर्ता जानकारी से Credentials नहीं भरता। ऐप्लिकेशन द्वारा सत्यापित HTTP प्रॉक्सी URL के लिए:

var uri = new Uri(proxyUrl);
var endpoint = new UriBuilder(uri)
{
    UserName = "",
    Password = ""
};

var proxy = new System.Net.WebProxy(endpoint.Uri);

if (uri.UserInfo.Length > 0)
{
    var parts = uri.UserInfo.Split(new[] { ':' }, 2);
    var username = Uri.UnescapeDataString(parts[0]);
    var password = parts.Length == 2
        ? Uri.UnescapeDataString(parts[1])
        : "";

    proxy.Credentials =
        new System.Net.NetworkCredential(username, password);
}

proxyUrl दिया गया प्रॉक्सी URL है, वेबसाइट URL नहीं। Uri उसके authority को पार्स करता है, जबकि UriBuilder WebProxy में संग्रहीत एंडपॉइंट से उपयोगकर्ता जानकारी हटा देता है।

घटकों को डिकोड करने से पहले पहले शाब्दिक कोलन पर विभाजित करें। इससे उपयोगकर्ता नाम के भीतर एन्कोड किया गया कोलन सुरक्षित रहता है और पासवर्ड के अतिरिक्त कोलन पासवर्ड में ही रहते हैं। हर घटक को एक बार डिकोड करें; पासवर्ड को Base64 में एन्कोड न करें, बल्कि URL एस्केपिंग करें।

अंत में, हैंडलर के अनुरोध शुरू करने से पहले proxy को इच्छित HTTP हैंडलर को सौंपें। केवल ऑब्जेक्ट बनाने से किसी दूसरे क्लाइंट की रूटिंग नीति नहीं बदलती।

संबंधित लेख