powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблемы с программным логином на сайт
3 сообщений из 3, страница 1 из 1
Проблемы с программным логином на сайт
    #33839515
papaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна ваша помощь, мастера asp.
Вот код:
static private void LoginToGotDotNetRu()
{
string siteURL = @"http://www.gotdotnet.ru/";//например
string login = "papaP";
string passw = "мой пароль";
// Контейнер для кук, пригодится
System.Net.CookieContainer _cookies = new System.Net.CookieContainer();
// Для начала получим с дефолтовой страницы вьюстейт
string responseData = GetUrlContent(siteURL, null, ref _cookies, true);
// извлекаем вьюстейт и строим запрос
string viewState = ExtractViewState(responseData);
// Сформируем строку параметров
// магические значения параметров берутся из исходного кода страницы (через ViewSource
// в браузере) и представляют собой значения атрибутов name (а не id!) //Исправлено 25.04.2005, слово value заменено на name
string req = String.Format(
@"_ctl0:_ctl0:_ctl0:txtUsername={0}&_ctl0:_ctl0:_ctl0:txtPassword={1}&__VIEWSTATE={2}",
System.Web.HttpUtility.UrlEncode(login),
System.Web.HttpUtility.UrlEncode(passw),
viewState);
// и перегоним ее в массив байт
byte[] buffer = System.Text.Encoding.GetEncoding(1251).GetBytes(req);
string _response = GetUrlContent(siteURL, buffer, ref _cookies, false);
// Скинем все полученное в файл
using ( StreamWriter sr = new StreamWriter(
@"c:\resp.htm",
false,
System.Text.Encoding.GetEncoding(1251)))
{
sr.WriteLine(_response);
}
}

static private string GetUrlContent(
string url,
byte[] paramString,
ref CookieContainer cooks,
bool useGet)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.40607)";
//WebProxy myProxy = new WebProxy();
//myProxy = (WebProxy)req.Proxy;
//string proxyAddress = "http://192.168.1.2:3128";
//Uri newUri = new Uri(proxyAddress);
//myProxy.Address = newUri;
//req.Proxy = myProxy;
if (!useGet)
{
req.Method = "POST";
// укажем серверу, что мы будем передавать параметры
req.ContentType = "application/x-www-form-urlencoded";
// добавим наши параметры в запрос
using (System.IO.Stream reqst = req.GetRequestStream())
{
reqst.Write(paramString, 0, paramString.Length);

}
// отправляем запрос, получаем ответ
string _response;
try
{
req.CookieContainer = cooks;
using (System.IO.Stream resst = ((HttpWebResponse)req.GetResponse()).GetResponseStream())
{
_response = new StreamReader(resst, Encoding.GetEncoding(1251)).ReadToEnd();
}
}
catch (Exception ex)
{
_response = ex.ToString();
}
return _response;
}

static private string ExtractViewState(string content)
{
System.Text.RegularExpressions.Regex _regex =
new System.Text.RegularExpressions.Regex(@"<input[\s\S]+?name=""__VIEWSTATE""[\s\S]+?value=""(?<value>[\s\S]+?)\""[\s\S]*?/>",
System.Text.RegularExpressions.RegexOptions.IgnoreCase | System.Text.RegularExpressions.RegexOptions.Compiled);
System.Text.RegularExpressions.Match _match = _regex.Match(content);
return System.Web.HttpUtility.UrlEncodeUnicode(
_match.Success
? _match.Groups["value"].Value
: string.Empty);
}
Однако, после его віполнения, результируящая страница представляет собой ту же страницу логина, только с заполненным полем логин, т.е. как я понимаю просто не происходит программного нажатия на кнопку "вход".
Посоветуйте как решить эту проблему.
Спасибо
...
Рейтинг: 0 / 0
Проблемы с программным логином на сайт
    #33839683
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Находишь в html кнопку логина и в строку @"_ctl0:_ctl0:_ctl0:txtUsername={0}&_ctl0:_ctl0:_ctl0:txtPassword={1}&__VIEWSTATE={2}" подставляешь name_кнопки=value_кнопки

Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Проблемы с программным логином на сайт
    #33840723
papaP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Находишь в html кнопку логина и в строку @"_ctl0:_ctl0:_ctl0:txtUsername={0}&_ctl0:_ctl0:_ctl0:txtPassword={1}&__VIEWSTATE={2}" подставляешь name_кнопки=value_кнопки

СПАСИБО!!! Заработало! Еще раз огромное человеческое СПАСИБО!!! )))))С
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Проблемы с программным логином на сайт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]