Авторизация на сайте через программу - C#

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

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

Всем доброго времени суток. Уважаемые участники cyberforum.ru , я с недавних пор занимаюсь программированием на C# и у меня возникла проблема и я не знаю как ее решить. Мне нужно сделать что бы в моём лаунчере была авторизация, а то есть: Логин: Пароль: и кнопка вход. Но вот самое интересное, мне надо что бы данные логин и пароль которые ввёл человек ввелись на сайте к примеру lala.ru и если всё хорошо, то у человека там открывается ещё 1 форма [Форму я сделаю], а если не авторизовалось там на сайте, то в программе человеку выдаёт ошибку.) Если можете помочь, то вот Skype: Я человек адекватный.

Решение задачи: «Авторизация на сайте через программу»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using System.Net;
  11. using System.IO;
  12. using System.Text.RegularExpressions;
  13.  
  14. namespace WindowsFormsApplication1
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public static CookieContainer container;
  19.         public Form1()
  20.         {
  21.             InitializeComponent();
  22.         }
  23.         public static string getToken(string html)
  24.         {
  25.             string pattern = "name=\"csrf_token_name\" value=\"(.*)\"";
  26.              Match res;
  27.             res = Regex.Match(html, pattern);
  28.             return res.Groups[1].ToString();
  29.         }
  30.  
  31.         public static string Post(string url, string data, bool clearCookie, ref CookieContainer container, bool allow_redirect = true, WebProxy proxy = null)
  32.         {
  33.             string output = null;
  34.             try
  35.             {
  36.                 HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  37.                 if (clearCookie) WebReq.CookieContainer = new CookieContainer();
  38.                 else WebReq.CookieContainer = container;
  39.                 //byte[] buffer = Encoding.ASCII.GetBytes(data);
  40.                 byte[] buffer = Encoding.UTF8.GetBytes(data);
  41.  
  42.  
  43.                 WebReq.Method = "POST";
  44.                 WebReq.AllowAutoRedirect = allow_redirect;
  45.                 WebReq.ContentType = "application/x-www-form-urlencoded";
  46.                 WebReq.ContentLength = buffer.Length;
  47.                 Stream PostData = WebReq.GetRequestStream();
  48.                 PostData.Write(buffer, 0, buffer.Length);
  49.                 PostData.Close();
  50.                 HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  51.                                 Stream Answer = WebResp.GetResponseStream();
  52.                 container = WebReq.CookieContainer;
  53.                 StreamReader _Answer = new StreamReader(Answer, Encoding.UTF8);
  54.                 output = _Answer.ReadToEnd();
  55.                 return output.Trim() + "\n";
  56.             }
  57.             catch (Exception ex)
  58.             {
  59.                 return ex.Message;
  60.             }
  61.         }
  62.  
  63.         public static string Get(string url, bool clearCookie, ref CookieContainer container, WebProxy proxy = null)
  64.         {
  65.             string output = null;
  66.             try
  67.             {
  68.                 HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
  69.                 if (clearCookie) WebReq.CookieContainer = new CookieContainer();
  70.                 else WebReq.CookieContainer = container;
  71.                 WebReq.Method = "GET";
  72.                 WebReq.AllowAutoRedirect = true;
  73.                 WebReq.ContentType = "application/x-www-form-urlencoded";
  74.  
  75.                 HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
  76.                 Stream Answer = WebResp.GetResponseStream();
  77.                 container = WebReq.CookieContainer;
  78.                 StreamReader _Answer = new StreamReader(Answer, Encoding.UTF8);
  79.                 output = _Answer.ReadToEnd();
  80.                 return output.Trim() + "\n";
  81.             }
  82.             catch (Exception ex)
  83.             {
  84.                 return ex.Message;
  85.             }
  86.         }
  87.  
  88.         private void button1_Click(object sender, EventArgs e)
  89.         {
  90.             string page = Get("http://scarius.ru/wow/login", false, ref container);
  91.             string token = getToken(page);
  92.             string data = "csrf_token_name="+token+"&login_username={тут логин}&login_password={тут пароль}&login_remember=on&login_submit=%D0%92%D0%BE%D0%B9%D1%82%D0%B8%21";
  93.             //MessageBox.Show(token);
  94.             string result = Post("http://scarius.ru/wow/login", data, false, ref container);
  95.            
  96.  
  97.         }
  98.     }
  99. }

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


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

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

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут