Я пытаюсь войти на сайт. Для этого мне нужно загрузить его домашнюю страницу, а затем отправить запрос POST с некоторыми параметрами (включая логин + пароль) и куки, которые я получаю в первом ответе. Но файлы cookie не отправляются обратно на сервер. Я обнаружил, что безопасные файлы cookie не могут быть отправлены обратно. Но они не отправляют, даже если они небезопасны.
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.ReadAsByteArrayAsync().ContinueWith(_content =>
{
content = Encoding.GetEncoding("windows-1251").GetString(_content.Result, 0, _content.Result.Length);
}
).Wait();
cookies = handler.CookieContainer.GetCookies(new Uri("https://login.website.com/?act=login"));
foreach (Cookie cookie in cookies)
{
handler.CookieContainer.Add(new Cookie(cookie.Name, cookie.Value, cookie.Path, cookie.Domain)); // Make cookies unsecure
}
Console.WriteLine("Cookie count: {0}", cookies.Count); // Writes right number
httpClient.PostAsync("https://login.website.com/?act=login", new FormUrlEncodedContent(postcontent.ToArray())).ContinueWith(_content =>
{
Console.WriteLine("test: {0}", _content.Result);
hresponse = _content.Result;
}).Wait();