Авторизоваться на сайте программно - C#
Формулировка задачи:
В общем, нужно проверить успешна ли была авторизация и авторизоваться на одном сайте, ниже привожу код: прочитал много информации, как на вашем сайте, так и на других, но что-то пока никак, использую fiddler, я авторизовался на сайте отловил запрос, мне нужно вытащить оттуда куки, которые передаются при успешной авторизации, но их чот там много, не могу понять что и как, помогите разобраться, если надо, приведу код запросов, только скажите что нужно выложить. Заранее спасибо
using (var Request = new HttpRequest()) { HttpResponse Response; Request.AllowAutoRedirect = false; Request.UserAgent = HttpHelper.RandomUserAgent(); Response = Request.Post("сайт/login.php?do=login", "do=login&vb_login_md5password=7d8912cc12047dd56d61298887ae89b2&vb_login_md5password_utf=7d8912cc12047dd56d61298887ae89b2&vb_login_username=" + login + "&vb_login_password=" +password); if (Response.Cookies.ContainsKey("куки")) { return "True"; } else { return "False"; } }
Решение задачи: «Авторизоваться на сайте программно»
textual
Листинг программы
using System.IO; using System.Net; using System.Security.Cryptography; using System.Text; namespace ConsoleApplication17 { class Program { static void Main() { const string password = "qwerty12"; const string login = "qwertysgu@yandex.ru"; var request = PW.Login(login, password); } } public class PW { private const string SiteUrl = "http://pw.mail.ru"; public static string Login(string login, string password) { const string loginUrl = SiteUrl + "/login.php?do=login"; const string postDataMask = "s=&do=login&vb_login_md5password={2}&vb_login_md5password_utf={2}&vb_login_username={0}&vb_login_password={1}"; var pwMD5 = CalculateMD5(password); string postData = string.Format(postDataMask, WebUtility.UrlEncode(login), password, pwMD5); return PostMethod(loginUrl, postData); } private static string CalculateMD5(string input) { MD5 md5Hasher = MD5.Create(); var sb = new StringBuilder(); byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)); foreach (byte b in data) { sb.Append(b.ToString("x2")); } return sb.ToString(); } private static string PostMethod(string url, string postData) { ServicePointManager.Expect100Continue = false; try { var request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Credentials = CredentialCache.DefaultCredentials; request.KeepAlive = true; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36"; request.CookieContainer = new CookieContainer(); //request.CookieContainer.Add(uri, new Cookie("b", "Iz8BACD4AA8AD0MMPgAAAQAA")); //request.CookieContainer.Add(uri,new Cookie("mrcu", "D7D5533D72F8010453693801030A")); //request.CookieContainer.Add(uri,new Cookie("p", "TBUAAJr+ZgAA")); //request.CookieContainer.Add(uri,new Cookie("mc1", "1397377009")); //request.CookieContainer.Add(uri,new Cookie("mc2", "pw.mail.ru")); //request.CookieContainer.Add(uri,new Cookie("VID", "3V57iC0VhGXD")); //request.CookieContainer.Add(uri, new Cookie("n_js", "4082312435")); //request.CookieContainer.Add(uri,new Cookie("s", "rt=1|dpr=1.75")); var bytes = Encoding.UTF8.GetBytes(postData); request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = bytes.Length; using (var requestStream = request.GetRequestStream()) { requestStream.Write(bytes, 0, bytes.Length); requestStream.Close(); } var response = (HttpWebResponse)request.GetResponse(); using (var responseStream = response.GetResponseStream()) { if (responseStream == null || response.StatusCode != HttpStatusCode.OK) throw new WebException("Ошибка при получении ответа, код ответа = " + response.StatusCode); using (var sr = new StreamReader(responseStream, Encoding.UTF8)) return sr.ReadToEnd(); } } finally { ServicePointManager.Expect100Continue = true; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д