Здравствуйте! Пытаюсь залогиниться в блоге на wordpress, отправляю POST запрос, использую HttpClient Spoiler: КОД Code: var baseAddress = new Uri(url + @"/wp-admin/"); var cookieContainer = new CookieContainer(); using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer, AllowAutoRedirect = true }) using (var client = new HttpClient(handler) { BaseAddress = baseAddress }) { client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0;"); client.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br"); client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded"); client.DefaultRequestHeaders.TryAddWithoutValidation(":method", "POST"); var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("log", "admin"), new KeyValuePair<string, string>("pwd", "admin"), new KeyValuePair<string, string>("wp-submit", "Войти"), new KeyValuePair<string, string>("redirect_to", url+ @"/wp-admin/"), new KeyValuePair<string, string>("testcookie", "1"), }); var result = await client.PostAsync(url + @"/wp-admin/", content); result.EnsureSuccessStatusCode(); string contents = await result.Content.ReadAsStringAsync(); Получаю ответ: Code: < html > < head > < script > f unction set_cookie() { var now = new Date(); var time = now.getTime(); time += 19360000 * 1000; now.setTime(time); document.cookie = 'beget=begetok' + '; expires = '+now.toGMTString()+'; path =/ ';}set_cookie(); location.reload(); ;</ script > </ head > < body > </ body > </ html > Как я понимаю скрипт устанавливает куки "beget=begetok" и перезагружает страницу. Пробовал передать куки (не помогло): Code: cookieContainer.Add(baseAddress, new Cookie("beget", "begetok")); Какое может быть решение? Спасибо!
Взять ваершарк, перехватить запросы от Фаерфокса а потом запросы от этой твоей тулзы. Сравнить. Найти отличия. UPD: Может быть в самом деле не хватает expires, тогда его можно не считать а точно так же скопировать для пробы прямо из запроса Огнелиса.
По сути нужно максимально эмулировать запрос браузера, т.к. иначе полоучается как здесь, гадание на кофейной гуще, если нет желания эмулировать полностью запрос, то тут остаётся рулетка чего хватит, а ЧЕГО НЕ ХВАТАЕТ, смотри, что POST браузер отправляет, ищи где что генерируется, и вперёд. И будет счастье, не просто так, некоторые JS куки вешают, а ещё и генерющий код обфусцирут, не от сладкой жизни. Как говорится борьба инь-янь.