Заклиниться на сайт, не используя веббраузер - C#
Формулировка задачи:
Здравствуйте. Вот, есть такой старинный быдлокод, хотел переписать на что-нибудь стоящее:
Хотелось бы что-нибудь поуниверсальней, например, какие-нибудь POST-запросы. Как это можно сделать? А то я в этом не очень разбираюсь ))
Блин, не заклиниться, а залогиниться
using System; using System.Linq; using System.Windows.Forms; namespace FatLog_in { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void Form1Load(object sender, EventArgs e) { var random = new Random(); while (true) { using (var wb = new WebBrowser()) { wb.Navigate("http://gladiators.ru/"); while (wb.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); int timeToSleep; if (wb.Document != null) { var loginElm = wb.Document.GetElementById("auth_name"); if (loginElm != null) { loginElm.SetAttribute("value", "mylogin"); var passwordElm = wb.Document.GetElementById("auth_pass1"); if (passwordElm != null) { passwordElm.SetAttribute("value", "mypassword"); wb.Document.GetElementsByTagName("input").Cast<HtmlElement>(). First(element => element.GetAttribute("value") == "Войти").InvokeMember("click"); while (wb.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents(); timeToSleep = 86200000 + random.Next(400000); } else timeToSleep = 3600000; } else timeToSleep = 3600000; } else timeToSleep = 3600000; System.Threading.Thread.Sleep(timeToSleep); } } } } }
Решение задачи: «Заклиниться на сайт, не используя веббраузер»
textual
Листинг программы
using System.Threading; using xNet.Net; using xNet.Collections; using System.IO; using System.Windows.Forms; namespace POSTLogin { public class Launcher : ApplicationContext { private const int SecondsInHour = 3600, SecondsToMilliseconds = 1000; public Launcher() { var postLoginer = new POSTLoginer(@"http://gladiators.ru/", "QWERTY", "qwerty"); postLoginer.Execute(); postLoginer.SaveToFile(); Thread.Sleep(6*SecondsInHour*SecondsToMilliseconds); Application.Restart(); } } public class POSTLoginer { private readonly string sitename, login, password; private string result; public POSTLoginer(string sitename, string login, string password) { this.sitename = sitename; this.login = login; this.password = password; } public string Execute() { var cookies = new CookieDictionary(); string agent = HttpHelper.RandomUserAgent(); using (var req = new HttpRequest()) { req["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; req.Cookies = cookies; req["DNT"] = "1"; req.UserAgent = agent; string text = req.Get("http://gladiators.ru/").ToString(); using (var sw = new StreamWriter("page_home.html")) sw.Write(text); } using (var req = new HttpRequest()) { req["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; req.Cookies = cookies; req["DNT"] = "1"; req.UserAgent = agent; req.Referer = "http://gladiators.ru/"; var part = new StringDictionary(); part["step"] = "1"; part["login"] = "1"; part["url"] = ""; part["auth_name"] = login; part["auth_pass"] = password; part["auth_domain"] = ""; part["auth_pass1"] = ""; part["auth_remember"] = "on"; result = req.Post(sitename, part).ToString(); } return result; } public void SaveToFile() { File.WriteAllText("page_login.html", result); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д