WebProxy-дің URI конструкторы тек соңғы нүктені таңдайды; ол Credentials-ті сол URI-дің пайдаланушы ақпаратымен толтырмайды. Қолданба тексерген 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 өңдеушісіне тағайындаңыз. Тек нысанды құру басқа клиенттің маршруттау саясатын өзгертпейді.

Қатысты мақалалар