Программная авторизация на сайте. - C#

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

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

Здравствуйте.Мне нужно программно залогиниться до одного сайта.Уже мучаюсь неделю,застрял на одном месте. Код программы ниже:
public HttpWebResponse GetPage(string url, CookieCollection cookies)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
            request.Headers.Add("Accept-Language", "ru-RU");
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
            request.AllowAutoRedirect = false;
            request.CookieContainer = new CookieContainer();
            if (cookies != null)
            {
                request.CookieContainer.Add(cookies);
            }
            return (HttpWebResponse)request.GetResponse();
        }
 
        public HttpWebResponse PostPage(string url, byte[] postData, CookieCollection cookies)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "POST";
            request.Accept = "image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, */*";
            request.Headers.Add("Accept-Language", "ru-RU");
            request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)";
            request.ContentType = "application/x-www-form-urlencoded";
            //request.AllowAutoRedirect = false;
            request.ContentLength = postData.Length;
            request.GetRequestStream().Write(postData, 0, postData.Length);
            request.CookieContainer = new CookieContainer();
            if (cookies != null)
            {
                request.CookieContainer.Add(cookies);
            }
            return (HttpWebResponse)request.GetResponse();
        }
 
        public HttpWebResponse PostPage(string url, string postString, CookieCollection cookies)
        {
            byte[] byteArr = System.Text.Encoding.GetEncoding(1251).GetBytes(postString);
            return PostPage(url, byteArr, cookies);
        }
 
        public HttpWebResponse PostPage(string url, string postString)
        {
            return PostPage(url, postString, null);
        }
 
        public HttpWebResponse GetPage(string url)
        {
 
            return GetPage(url, null);
        }
 
        public string GetResponseContent(HttpWebResponse response)
        {
            StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(65001));
            string result = reader.ReadToEnd();
            reader.Close();
            return result;
        }
 
        private void VKLogin(string mail, string password)
{
            HttpUtility http = new HttpUtility();
            // Формируем данные POST-запроса
            StringBuilder query = new StringBuilder();
 
            query.Append("user=" + mail);
            query.Append("&password=" + password);
            query.Append("&a=2&ajax=1&rnd=673&_tp_=xml");
            // Отправляем запрос и получаем ответ
            logAppend("Loading http://clubtone.net...");
            HttpWebResponse response = tryPostPage("http://clubtone.net", query.ToString());
            string result_s = http.GetResponseContent(response);
.........
.........
........
Как я понимаю в респонсе должна быть уже авторизованная страницы с моим логином, но в result_s получаю не авторизованную страницу, с кнопками "Вход" и "Регистрация". В чем может быть проблема ? Может проблема в постройке POST Запроса или Куки ? Очень нужен ответ.Спасибо!

Решение задачи: «Программная авторизация на сайте.»

textual
Листинг программы
 private void LoginOnSite()
        {
            string login = "Логин на сайте";
            string pass = "Пароль на сайте";
            string html = "";
 
            webBrowser.Navigate(urlMySite);
            while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
                Application.DoEvents();
            webBrowser.Document.All["LoginTxt"].InnerText = login;
            webBrowser.Document.All["PasswordTxt"].InnerText = pass;
            webBrowser.Document.All["LoginImgBtn"].InvokeMember("click");
 
 
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(urlMySite);
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            StreamReader myStreamReader = new StreamReader(myHttpWebResponse.GetResponseStream());
 
            html += myStreamReader.ReadToEnd();
}

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


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

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

13   голосов , оценка 4 из 5