C#自动填写用户名、密码,自动提交登录网页(你懂的!)

C#自动填写用户名、密码,自动提交登录网页(你懂的!)_第1张图片在学校上网是通多Dr.com网页的形式登录,
由于账号流量限制,一个账号很快就用完了,幸运的是我们手上有一个EXCEl表,里面的账号足够多。但是每次用的时候都要打开表查找一个可用的账号,不仅耗时,而且还容易出错,于是就想能不能自己写个程序能够自动读取这些账号并且自动提交?

具体步骤

一、开发工具

这里我们采用VS2010,通过C#编写了一个Form程序,在Form程序中打开需要用到webBrowser这个控件。
首先,我们新建一个Form程序,然后从工具箱中拖拽一个webBrowser控件到窗体上,如下图所示:
C#自动填写用户名、密码,自动提交登录网页(你懂的!)_第2张图片
界面已经做好,接下来就要实现具体的功能了。

二、功能实现

要实现自动登录网页,首先我们需要找到页面上输入账号和密码的input标签,以及提交buttun。
这里我们可以打开登录界面,右键“查看源代码”或者通过“开发人员工具”查看页面的元素。(查找页面元素可以通过id或者name来查找)`

C#自动填写用户名、密码,自动提交登录网页(你懂的!)_第3张图片

登录代码如下:
“DDDDD”是登录窗口中账号文本框的name
“upass”是密码文本框的name
“0MKKey”是登录Buttun的name

HtmlDocument doc = webBrowser1.Document;
HtmlElement btn = null;
foreach (HtmlElement em in doc.All) //轮循
{
string str = em.Name;
if ((str == “DDDDD”) || str == “upass” || str == “0MKKey”) //减少处理
{
switch (str)
{
case “DDDDD”:
em.SetAttribute(“value”, student[i].Sno);//账号,保存在序列化的student类中
break; //填表
case “upass”:
em.SetAttribute(“value”, student[i].Id);//密码,保存在序列化的student类中
break; //填表
case “0MKKey”:
btn = em;
break;
default: break;
}
try
{
btn.InvokeMember(“click”); //触发submit事件
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

登录用户名和密码通过经过处理之后保存在txt文件中,格式为:密码,账号。
读取账号密码的txt文件的代码如下:
FileStream fs = new FileStream(“D:\write.txt”, FileMode.OpenOrCreate, FileAccess.ReadWrite);
StreamReader m_streamReader = new StreamReader(fs);
//用StreamReader类来读取文件
m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin);
//从数据流中读取每一行,直到文件的最后一行
string strLine = m_streamReader.ReadLine();
while (strLine != null)
{
// 这里处理每一行
strLine = m_streamReader.ReadLine();
student.Add(fillStu(strLine));
}
m_streamReader.Close();

你可能感兴趣的:(C#)