HttpClient не отправляет куки из CookieContainer, даже если secure=false

Пытаюсь авторизоваться через веб-версию ВКонтакте. Для этого я гружу страницу авторизации и отправляю POST-запрос, в котором должен быть логин-пароль, некоторые хеши, а также куки. Если с параметрами проблем нет, то куки не хотят отправляться.

static HttpResponseMessage sendRequest(HttpClient client, Uri url)
{
    var response = new HttpResponseMessage();
    client.GetAsync(url).ContinueWith(responseTask =>
    {
        response = responseTask.Result;
    }).Wait();
  return response;
}

static void Main(string[] args)
{
    var baseAddress = new Uri("https://vk.com");
    Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    var cookieContainer = new CookieContainer();
    var handler = new HttpClientHandler { CookieContainer = cookieContainer };
    HttpClient httpClient = new HttpClient(new LoggingHandler(handler));
    httpClient.DefaultRequestHeaders.Accept.ParseAdd(accept);
    httpClient.DefaultRequestHeaders.UserAgent.ParseAdd(uagent);
    var hresponse = sendRequest(httpClient, baseAddress);
    Console.WriteLine("Response: {0}", hresponse.Headers);
    
    var cookies = handler.CookieContainer.GetCookies(baseAddress);
    Console.WriteLine("Cookie count: {0}", cookies.Count);
                
    string content = "";
    hresponse.Content.ReadAsStringAsync().ContinueWith(_content =>
    {
        content = _content.Result;
    }).Wait();
    cookies = handler.CookieContainer.GetCookies(new Uri("https://login.vk.com/?act=login"));
    
    foreach (Cookie cookie in cookies)
    {
        handler.CookieContainer.Add(new Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain)); // Пересоздать куки для Secure = false
    }
                
    Console.WriteLine("Cookie count: {0}", cookies.Count); // Выводит нормальное число куки
    
    httpClient.PostAsync("https://login.vk.com/?act=login", new FormUrlEncodedContent(postcontent.ToArray())).ContinueWith(_content =>
    {
        Console.WriteLine("test: {0}", _content.Result);
        hresponse = _content.Result;
    }).Wait();
}

Upd. Нашёл полу-решение добавить заголовок Cookie со всеми куками.

string cookieheader = "";
foreach (Cookie cookie in cookies)
{
    cookieheader += String.Format("{0}={1}; ", cookie.Name, cookie.Value);
}
httpClient.DefaultRequestHeaders.Add("Cookie", cookieheader);

upd2. Посмотрел трафик через BurpSuite, оказалось, что куки отправляются, а логгер этого не пишет.


Ответы (0 шт):