`

哈哈(1),小试牛刀之-------C# WebClient实现登录126邮箱。

阅读更多

     今天公司也没什么事,又要开始学习了。其实我写这篇文章,说不定技术是很低级的,而且很多东东也是学习人家的,不过,就当做事我学习的见证。毕竟刚一出来的学生,还不懂得那么多,让大家见证我的成长历程了。

      好了,废话不多说了,尽管这也是废话。

      WebClient类,在C#和Delphi中都存在,可以实现post数据提交到服务端,就是模拟你手工输入到表单,然后登陆。这里我比较关心的问题是,java自带的没有这么好的类,不过不用悲观,原来common是下有个httpClient类,可以借用这个类来实现类似的功能。

       首先来进行一步步解析吧:

       1.找个http/https抓包工具。我这里使用了HttpWatch。先打开www.126.com这个登录页面,你可以先用一个正确的账号登录,然后通过HttpWatch来查看一些信息:如:

 

我们可以提取,post的地址和请求参数的格式。这里分别为:

POST地址:

http://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1

请求参数格式:

domain=126.com&language=0&bCookie=&username=jiangshan@126.com&savelogin=&url2=http%3A%2F%2Fmail.126.com%2Ferrorpage%2Ferr_126.htm&user=jiangshan_111&password=4444444&style=-1&secure=&enter.x=%B5%C7%A1%A1%C2%BC

 

下一步使用WebClient类吧:

namespace MySpace 
{
	using System;
	using System.Collections.Generic;
	using System.Linq;
	using System.Text;
	using System.Net;
	using System.IO;
	public class TestLogin
	{
			public static void Main(string[] args)
			{
				string postUrl = @" @"http://reg.163.com/logins.jsp?type=1&product=mail126&url=http://entry.mail.126.com/cgi/ntesdoor?hid%3D10010102%26lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1";";
				string  postVal = @"";//自己写吧
				 byte[] postData = System.Text.Encoding.ASCII.GetBytes(postVal);
				byte[] returnVal = _client.UploadData(url, postData);
				Console.WriteLine("Return:" + System.Text.Encoding.UTF8.GetString(returnVal));
				Console.ReadLine();
			}
	}
}

 

结果:

 

下次讲 java的实现,88

  • 大小: 56.3 KB
  • 大小: 15.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics