Пытаюсь написать код авторизации на ru.grepolis.com Но застрял на втором шаге. Первым отправляю Get запрос, получаю куки: Code: request = (HttpWebRequest)HttpWebRequest.Create("http://ru.grepolis.com"); //request.Proxy = new WebProxy("127.0.0.1", 8888); request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); request.KeepAlive = true; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string sCookies = ""; if (!String.IsNullOrEmpty(response.Headers["Set-Cookie"])) { sCookies = response.Headers["Set-Cookie"]; } Затем, используя полученные куки отправляю Post запрос: Code: request = (HttpWebRequest)HttpWebRequest.Create("http://ru.grepolis.com/start/index?action=login_from_start_page"); request.Method = "POST"; request.Referer = "http://ru.grepolis.com"; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0"; request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; request.Headers.Add("Accept-Language", "ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3"); request.KeepAlive = true; request.ContentType = "application/x-www-form-urlencoded"; // передаем куки, полученные в предыдущем запросе if (!String.IsNullOrEmpty(sCookies)) { request.Headers.Add(HttpRequestHeader.Cookie, sCookies); } request.AllowAutoRedirect = true; // Формируем строку с параметрами string secondStepForm = "json={\"name\":\"*********\",\"password\":\"***********\",\"passwordhash\":\"\",\"autologin\":false,\"window_size\":\"1263x535\"}"; // передаем параметры byte[] EncodedPostParams = Encoding.ASCII.GetBytes(secondStepForm); request.ContentLength = EncodedPostParams.Length; // Записываем данные в поток request.GetRequestStream().Write(EncodedPostParams, 0, EncodedPostParams.Length); request.GetRequestStream().Close(); // делаем запрос response = (HttpWebResponse)request.GetResponse(); Но он не проходит. В чем может быть причина? Неправильные параметры Post или куки или еще что? Самому не получается разобраться. Заголовки вроде идентичные с браузером передаю. Мои куки почему то имеют другой вид, нежели чем передает браузер... Может в этом проблема? Вот куки которые передает браузер: PHPSESSID=JoHVf8NpzGf-uhyY8FXS91; cid=954932142; portal_tid=1355466714195-86254; portal_data=portal_tid=1355466714195-86254 А вот мои куки: PHPSESSID=ssuvQVWUBcQqSlViFw-SE2; path=/,cid=308647358; expires=Sun, 14-Dec-2014 06:35:43 GMT; path=/ Почему так?
Ты не правильно используешь Cookie, не нужно передавать path, expires - это дополнительная инфа, которую использует браузер. Вместо того что бы вручную определять Cookie использую свойства CookieContainer. Cookie portal_tid и portal_data формируются с помощью javascript-a, но скорей всего они нужны для трекинга(1355466714195 - время в UNIX timestamp - new Date().getTime()) или показа рекламы, а не для логина.