Программный вход на сайт

Как войти на сайт программно?

Я просто хочу проверить правильность предоставленного имени пользователя и пароля веб-сайта.

Спасибо.


person xtremist    schedule 28.07.2010    source источник
comment
Отредактировано, чтобы немного очистить тон.   -  person Robert Harvey    schedule 28.07.2010
comment
@ Роберт, спасибо - намного чище.   -  person ConsultUtah    schedule 29.07.2010


Ответы (1)


Самый простой способ сделать это из .NET — Watin. Вы бы сделали что-то вроде:

 using (var browser = new IE("http://mysite.com"))
 {
  browser.TextField(Find.ByName("email")).TypeText("[email protected]");
  browser.TextField(Find.ByName("password")).TypeText("password");
  browser.Button(Find.ByName("login")).Click();

  if (browser.ContainsText("Welcome [email protected]!"))
  {
    // Success
  } 
 }

Чтобы сделать это с помощью HttpWebRequest, вы должны:

var req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentLength = postContent.Length;
req.ContentType = "application/x-www-form-urlencoded";

using (var streamWriter = new StreamWriter(req.GetRequestStream()))
{
    streamWriter.Write(postContent);
}

using (var res = (HttpWebResponse)req.GetResponse())
{
  _status = res.StatusCode;
  using (var streamReader = new StreamReader(res.GetResponseStream()))
  {
    response = streamReader.ReadToEnd();
  }
}       

Чтобы добавить третий способ, вы также можете использовать WebClient:

var nvc = new NameValueCollection();
nvc.Add("email", "[email protected]");
nvc.Add("password", "password");

var wc = new WebClient();
byte[] responseArray = wc.UploadValues("http://mysite.com",nvc);
string responseText = Encoding.ASCII.GetString(responseArray));
person ConsultUtah    schedule 28.07.2010
comment
Выполните этот код слишком много раз с неправильными учетными данными, и пользователь наверняка будет заблокирован из своей учетной записи. - person Jeroen; 28.07.2010
comment
но как я могу узнать, что пользователь успешно вошел в систему в коде ....? можно ли это сделать через HTTP-запрос? (я думаю, что это хорошо для новичков, таких как я) Спасибо в ожидании !!! - person xtremist; 28.07.2010
comment
С Watin вы должны проверить browser.ContainsText(Welcome [email protected]!) или что-то в этом роде. Вы вполне могли бы сделать это с помощью HttpWebRequest, но код намного сложнее. Я отредактирую свой ответ и добавлю код выше. - person ConsultUtah; 28.07.2010
comment
Я не буду делать это за вас - я не хочу, чтобы меня обвинили во взломе их сайта. Но я могу сказать вам, что все 3 работают нормально. Я бы на вашем месте удалил комментарий с вашей регистрационной информацией. - person ConsultUtah; 29.07.2010
comment
спасибо за вашу большую помощь !!! я удалил свой последний запрос, как вы предложили ... в основном я просто хочу выйти из этой ситуации :( я уже потратил слишком много времени на это, но все напрасно .... В любом случае, еще раз спасибо, Consultutah - person xtremist; 29.07.2010