Реально ли программно авторизоваться на сайте? - 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/")); // в итоге мы не авторизованы(((( }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д