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

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

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

Господа продвинутые Программеры! Я прошу вас помочь мне разобраться в одном вопросе, который тревожит меня уже несколько недель: реально ли программно авторизоваться на сайте, если авторизация проходит в виде POST-запроса, но в теле запроса идут не стандарные логин и пароль, а некий каждый раз меняющийся набор данных? То есть текст вроде этого: __EVENTTARGET=&__EVENTARGUMENT=&__CVIEWSTATE=7V3dcxvXdSdAgCL4IdKyRDuxTa5pxaIiEthdLBaAJDuhKcuWI8mKJSttmg5miV2SG4ELegFIpmf a6COOk8ax5I8kHkWRKDfutNNpSkukTZMiNcPpU58Wb51p%2BpBMM5120j%2BgT%2Bk55y6AxRcJUJRtRSCJ8zk5kprxdaoRvAwgOsUS8aI0DUSMMxfkqD9Me JaIH5PLkdW%2FbG0wmej7HjYW0sPZI00lD2uK5qRzQjE5vMn2mvpofj8aSpQsWYcAdFu0sTwrXTUpzlOouuegoCBRGf1uNaKpBJpbxjSiKlqU6tGENBtcceP 5TWJkeSGSPtbu5psdVoh6dbDPv5oF%2FkBYkT%2BL08%2F1CBsKGdSQVO69qZQDQaeMtlvZ89b61YN60FzlqB04%2FgeNaa5ax tentLogin%24ctl00%24Login1%24UserName=

LOGIN

&ctl00%24ctl00%24LeftContentLogin%24ctl00%24Login1%24Password=

PASSWORD

&ctl00%24ctl00%24LeftContentLogin%24ctl00%24Login1%24Login=%D0%92%D0%BE%D0%B9%D1%82%D0%B8&ctl00%24ctl00%24LeftContentSid eMenu%24mSideMenu%24extAccordionMenu_AccordionExtender_ClientState=0&ctl00%24ctl00%24MainExpandableArea%24phExpandCollap se%24scPurchaseAllSearch%24vPurchaseLot_lotNumber_%D0%BB%D0%BE%D1%82%D0%B0=&ctl00%24ctl00%24MainExpandableArea%24phExpan dCollapse%24scPurchaseAllSearch%24vPurchaseLot_purchaseNumber_%D1%82%D0%BE%D1%80%D0%B3%D0%B0=&ctl00%24ctl00%24MainExpand ableArea%24phExpandCollapse%24scPurchaseAllSearch%24vPurchaseLot_procurementClassifierID_%D0%9A%D0%B0%D1%82%D0%B5%D0%B3% D0%BE%D1%80%D0%B8%D1%8F%D0%BB%D0%BE%D1%82%D0%B0=&ctl00%24ctl00%24MainExpandableArea%24phExpandCollapse%24scPurchaseAllSe arch%24vPurchaseLot_procurementClassifierID_%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F%D0%BB%D0%BE%D1%82%D0% B0_desc=&ctl00%24ctl00%24MainExpandableArea%24phExpandCollapse%24scPurchaseAllSearch%24vPurchaseLot_fullTitle_%D0%9D%D0% B0%D0%B8%D0%BC%D0%B5%D0%BD%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D1%82%D0%BE%D1%80%D0%B3%D0%B0=&ctl00%24ctl00%24MainExpand ableArea%24phExpandCollapse%24scPurchaseAllSearch%24Party_contactName_AliasFullOrganizerTitle=&ctl00%24ctl00%24MainExpan dableArea%24phExpandCollapse%24scPurchaseAllSearch%24vPurchaseLot_initialContractPriceValue_%D0%9D%D0%B0%D1%87%D0%B0%D0% BB%D1%8C%D0%BD%D0%B0%........ и так далее, причём в нём на определённом месте среди это белиберды в открытом виде можно увидеть свои логин и пароль. Или это какая-то специальная шифровка, чтобы не могли зайти программно как раз? Всем заранее спасибо за ответы!!!

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

textual
Листинг программы
string Kuki;
private void Authoriz()
        {
            string username = "fiorianin85";
            string password = "Qwerty123!";
            string loginAdress = "http://utender.ru/supplier/services/lotsubscribeinfo/GetPriceInfo";
            string authString = File.ReadAllText(@"C:\2.txt"); // в блокнот скопировал просто всё то же, что увидел анализатор трафика
            MD5CryptoServiceProvider x = new MD5CryptoServiceProvider();
            UTF8Encoding encoding = new UTF8Encoding();
            byte[] buffer = encoding.GetBytes(authString);
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(loginAdress);
            request.Method = "POST";
            request.KeepAlive = true;
            request.ContentLength = buffer.Length;
            request.ContentType = "application/json; charset=UTF-8";
            request.UserAgent = @"Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36";
            request.Accept = @"*/*";
            request.Headers.Add(HttpRequestHeader.AcceptLanguage, @"ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
            request.Headers.Add(HttpRequestHeader.AcceptEncoding, @"gzip,deflate,sdch");
            //request.Headers.Add(HttpRequestHeader.AcceptCharset, @"Accept-Charset: utf-8;q=0.7,*;q=0.3");
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            CookieContainer cookie = new CookieContainer(); request.CookieContainer = cookie; Uri CookieHostname = new Uri("http://utender.ru");
            Stream newStream = request.GetRequestStream();
            newStream.Write(buffer, 0, authString.Length);
            newStream.Close();
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            CookieCollection cookies = new CookieCollection();
            cookies = response.Cookies;
            Encoding responseEncoding = Encoding.GetEncoding(response.CharacterSet);
            StreamReader strReader = new StreamReader(response.GetResponseStream(), responseEncoding);
            string htmlText = strReader.ReadToEnd();
            response.Close();
            cookie.Add(CookieHostname, cookies); Kuki = cookie.GetCookieHeader(CookieHostname);
            MessageBox.Show(Kuki); // кое-что получаем, но неполные куки, не такие же, как в анализаторе
            // и далее:
            WebClient wc = new WebClient(); wc.Headers.Add("Cookie", Kuki); wc.Encoding = Encoding.UTF8;
            MessageBox.Show(wc.DownloadString(@"http://utender.ru/")); // в итоге мы не авторизованы((((
        }

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


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

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

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