由于通过校园网访问外部网络要输入用户名和密码,觉得比较麻烦,所以参照了网上部分资料,用C#写了个自动填写网页表单的小程序:
class ConnectToNetWork
{
static void Main(string[] args)
{
System.Net.WebClient WebClientObj = new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection PostVars = new System.Collections.Specialized.NameValueCollection(); //需要填写的数据
PostVars.Add("DDDDD", "user1");
PostVars.Add("upass", "1234");
PostVars.Add("0MKKey","%B5%C7%C2%BC+Login");
try
{
byte[] byRemoteInfo = WebClientObj.UploadValues("http://10.0.5.1/", "POST", PostVars);
//这是获取返回信息
//string sRemoteInfo = System.Text.Encoding.Default.GetString(byRemoteInfo);
//Console.WriteLine(sRemoteInfo);
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
Console.WriteLine("登录成功");
}
}
代码本身比较简单,但确定需要填写哪些数据却比较麻烦。原来在网页上手工输入用户名及密码,点击登陆按钮即可。改用程序自动提交用户名及密码却不行。我用EtherPeek捕获数据包进行了分析,发现除了用户名及密码,还需要提交信息0MKKey。捕获的部分数据如下:
DDDDD=user1&upass=1234&0MKKey=%B5%C7%C2%BC+Login
以上代码可以提交ASP或JSP生成的表单,如果需要自动提交ASP.NET表单请另行参考资料。