Реально ли программно авторизоваться на сайте? - 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/")); // в итоге мы не авторизованы((((
}