Авторизоваться на сайте программно - C#

Узнай цену своей работы

Формулировка задачи:

В общем, нужно проверить успешна ли была авторизация и авторизоваться на одном сайте, ниже привожу код:
                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";
                    }
                }
прочитал много информации, как на вашем сайте, так и на других, но что-то пока никак, использую fiddler, я авторизовался на сайте отловил запрос, мне нужно вытащить оттуда куки, которые передаются при успешной авторизации, но их чот там много, не могу понять что и как, помогите разобраться, если надо, приведу код запросов, только скажите что нужно выложить. Заранее спасибо

Решение задачи: «Авторизоваться на сайте программно»

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;
            }
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы