Я использую класс HttpWebRequest для реализации веб-сканера. Я хотел бы использовать с ним прокси-сервер, который обычно может быть реализован следующим образом:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://www.example.com/");
webRequest.Proxy = new WebProxy(proxyUrl, proxyPort);
webRequest.Proxy.Credentials = new NetworkCredential(proxyPassword, proxyPassword);
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
using (Stream stream = webResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
Console.WriteLine(reader.ReadToEnd());
}
Однако мне необходимо передать дополнительный параметр прокси-серверу. Поскольку целевой сайт использует HTTPS, параметры должны быть отправлены в начальном запросе CONNECT, который устанавливает безопасный туннель HTTPS. В противном случае прокси-сервер не сможет прочитать их из-за сквозного шифрования.
Заголовок для первоначального запроса CONNECT должен выглядеть следующим образом:
CONNECT example.com:443 HTTP/1.1
X-CustomProperty: 12345
Пока я не смог чтобы найти решение для достижения этой цели ни с классом HttpWebRequest , ни с классом WebClient из. NET Framework. Есть ли возможность передать дополнительные заголовки в начальном запросе CONNECT? Я также доволен решением, в котором используется дополнительная библиотека.