Оставить сеанс в живых для x количества запросов, а затем закрыть его? - PullRequest
1 голос
/ 09 апреля 2019

Я использую прокси-сервис, который позволяет мне получать новый IP-адрес при каждом запросе, который я делаю через их прокси-систему. Он работает нормально, но мне нужно установить keepalive в false в моем HttpWebRequest, иначе c # будет использовать соединение, которое было создано ранее, что приводит к использованию одного и того же соединения / прокси снова и снова. Я хотел бы отправить 3 запроса через один «сеанс / прокси», а затем закрыть его, чтобы следующий HttpWebRequest больше не использовал то же соединение, но я не слишком уверен, как мне это понять.

Приведенный ниже код будет открывать новое соединение с прокси-системой каждый раз, когда я вызываю функцию:

Uri site = new Uri("https://randomsitehere/");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(site);
request.CookieContainer = cookies;
request.Proxy = new WebProxy(proxyURI, true, null, credentials);
request.UserAgent = "";
request.KeepAlive = false;
request.Timeout = 5000;
request.Method = "GET";
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) {
    Stream dataStream = response.GetResponseStream();
    StreamReader streamreader = new StreamReader(dataStream, Encoding.UTF8);
    string responsex = streamreader.ReadToEnd();
    dataStream.Close();
    response.Close();
    dataStream.Close();
    string tokens = responsex.Split(new[] { @"""ip"": """ }, StringSplitOptions.None)[1].Split('"')[0];
    Console.WriteLine("Thread " + i +": "+tokens);
}

То, что я пытаюсь архивировать, выглядит так:

запрос № 1 с новым прокси
запрос № 2 с прокси, использованным выше / соединение
запрос № 3 с тем же прокси, использованным выше / соединение
закрыть соединение с прокси начать заново с начала

Есть ли способ осознать это?

...