C# WinForm Webbrowser 模拟登陆 打卡
2011-12-03 04:49
183 查看
根据需求,完成了自动登录打卡的功能,现分享主要代码。
有不足的地方请指教!
读取配置文件,获取要登录考勤的帐户和密码,为了防止自己的用户名和密码是明文,做了加密解密处理。
由于使用了WebBrowser,所以有以下代码。
画面上有加密的点击按钮,可以根据需求加密生成的配置文件。
有不足的地方请指教!
读取配置文件,获取要登录考勤的帐户和密码,为了防止自己的用户名和密码是明文,做了加密解密处理。
private void Form1_Load(object sender, EventArgs e) { _strFlag = ConfigurationManager.AppSettings[_strConfigPar1] as string; _strNetUserName = ConfigurationManager.AppSettings[_strConfigPar2] as string; _strNetPassword = ConfigurationManager.AppSettings[_strConfigPar3] as string; if (_strNetUserName != null && _strNetPassword != null) { doDecrypt(_strNetUserName, _strNetPassword); webBrowser1.Navigate(_strLoginUrl); _blFlg = false; } else { MessageBox.Show(_strErrorMessage); Close(); } }
由于使用了WebBrowser,所以有以下代码。
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { HtmlDocument doc = webBrowser1.Document; try { if (doc.Url.ToString() != "" && _strLoginUrl.Equals(doc.Url.ToString())) { string strName = string.Empty; string strPass = string.Empty; HtmlElement heForm = doc.GetElementById("LoginForm"); HtmlElement heSubmit = doc.All["loginButton"]; strName = heForm.Children[2].GetElementsByTagName("INPUT")[0].Name; strPass = heForm.Children[2].GetElementsByTagName("INPUT")[1].Name; HtmlElement heUsername = doc.All[strName]; HtmlElement hePassword = doc.All[strPass]; heUsername.SetAttribute("value", _strNetUserName); hePassword.SetAttribute("value", _strNetPassword); heSubmit.InvokeMember("click"); } else if (!_blFlg && doc.Url.ToString() != "" && _strPressUrl.Equals(doc.Url.ToString())) { HtmlElement heLink = doc.GetElementsByTagName("A")[0]; heLink.InvokeMember("onclick"); _blFlg = true; } } catch { return; } }
画面上有加密的点击按钮,可以根据需求加密生成的配置文件。
private static void SaveConfig(string ConnenctionString, string strKey) { XmlDocument doc = new XmlDocument(); //获得配置文件的全路径 string strFileName = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; doc.Load(strFileName); //找出名称为“add”的所有元素 XmlNodeList nodes = doc.GetElementsByTagName("add"); for (int i = 0; i < nodes.Count; i++) { //获得将当前元素的key属性 XmlAttribute att = nodes[i].Attributes["key"]; //根据元素的第一个属性来判断当前的元素是不是目标元素 if (att.Value == strKey) { //对目标元素中的第二个属性赋值 att = nodes[i].Attributes["value"]; att.Value = ConnenctionString; break; } } //保存上面的修改 doc.Save(strFileName); }
相关文章推荐
- 模拟浏览器登陆的基本思路与做法
- struts2自定义拦截器一——模拟登陆权限验证
- 新浪微博自动(模拟)登陆详解及实现
- [置顶] CSDN爬虫(三)——网络爬虫模拟登陆两种策略
- 一下内容纯属转载(C#模拟http登陆)
- 模拟登陆 302 重定向
- python模拟网站登陆
- python模拟登陆和发布信息
- URL模拟登陆出现的小问题(新手)
- PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询
- C# webBrowser 模拟登陆填充操作等(写网页注册机之类的时候要用到)
- 利用cookie持续会话(模拟登陆)
- Amazon后台模拟登陆
- 如何用Python,C#等语言去实现抓取静态网页+抓取动态网页+模拟登陆网站
- ssh跳板登陆太麻烦,使用expect每次自动登录 利用expect 模拟键盘动作,在闲置时间之内模拟地给个键盘响应
- 某高校校园卡网站模拟登陆(php)
- selenium3.7+ python3 添加cookie模拟登陆
- 校园网GiWiFi模拟登陆
- Python爬虫学习(简单的模拟登陆(二))
- 使用C#发送Http 请求实现模拟登陆(以博客园为例)