码迷,mamicode.com
首页 > 其他好文 > 详细

模拟登录

时间:2015-06-04 19:21:15      阅读:304      评论:0      收藏:0      [点我收藏+]

标签:

1.基础帮助类

public class WebAutoLogin
{
#region 属性
/// <summary>
/// 登陆后返回的Html
/// </summary>
public static string ResultHtml
{
get;
set;
}
/// <summary>
/// 下一次请求的Url
/// </summary>
public static string NextRequestUrl
{
get;
set;
}
/// <summary>
/// 若要从远程调用中获取COOKIE一定要为request设定一个CookieContainer用来装载返回的cookies
/// </summary>
public static CookieContainer CookieContainer
{
get;
set;
}
/// <summary>
/// Cookies 字符创
/// </summary>
public static string CookiesString
{
get;
set;
}
#endregion

#region 方法
/// <summary>
/// 用户登陆指定的网站
/// </summary>
/// <param name="loginUrl"></param>
/// <param name="account"></param>
/// <param name="password"></param>
public static void PostLogin(string loginUrl, string account, string password)
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
string postdata = "email=" + account + "&password=" + password + "&origURL=" + "http://www.renren.com/home" + "&domain=renren.com";//模拟请求数据,数据样式可以用FireBug插件得到。
// string LoginUrl = "http://www.renren.com/PLogin.do";
request = (HttpWebRequest)WebRequest.Create(loginUrl);//实例化web访问类
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "POST";//数据提交方式为POST
request.ContentType = "application/x-www-form-urlencoded"; //模拟头
request.AllowAutoRedirect = false; // 不用需自动跳转
//必须设置CookieContainer存储请求返回的Cookies
if (CookieContainer != null)
{
request.CookieContainer = CookieContainer;
}
else
{
request.CookieContainer = new CookieContainer();
CookieContainer = request.CookieContainer;
}
request.KeepAlive = true;
//提交请求
byte[] postdatabytes = Encoding.UTF8.GetBytes(postdata);
request.ContentLength = postdatabytes.Length;
Stream stream;
stream = request.GetRequestStream();
//设置POST 数据
stream.Write(postdatabytes, 0, postdatabytes.Length);
stream.Close();
//接收响应
response = (HttpWebResponse)request.GetResponse();
//保存返回cookie
response.Cookies = request.CookieContainer.GetCookies(request.RequestUri);
CookieCollection cook = response.Cookies;
string strcrook = request.CookieContainer.GetCookieHeader(request.RequestUri);
CookiesString = strcrook;
//取下一次GET跳转地址
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string content = sr.ReadToEnd();
sr.Close();
request.Abort();
response.Close();
//依据登陆成功后返回的Page信息,求出下次请求的url
//每个网站登陆后加载的Url和顺序不尽相同,以下两步需根据实际情况做特殊处理,从而得到下次请求的URL
string[] substr = content.Split(new char[] { ‘"‘ });
NextRequestUrl = substr[1];
}
catch (WebException ex)
{
MessageBox.Show(string.Format("登陆时出错,详细信息:{0}", ex.Message));
}
}
/// <summary>
/// 获取用户登陆后下一次请求返回的内容
/// </summary>
public static string GetPage()
{
HttpWebRequest request = null;
HttpWebResponse response = null;
try
{
request = (HttpWebRequest)WebRequest.Create(NextRequestUrl);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "GET";
request.KeepAlive = true;
request.Headers.Add("Cookie:" + CookiesString);
request.CookieContainer = CookieContainer;
request.AllowAutoRedirect = false;
response = (HttpWebResponse)request.GetResponse();
//设置cookie
CookiesString = request.CookieContainer.GetCookieHeader(request.RequestUri);
//取再次跳转链接
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string ss = sr.ReadToEnd();
sr.Close();
request.Abort();
response.Close();
//依据登陆成功后返回的Page信息,求出下次请求的url
//每个网站登陆后加载的Url和顺序不尽相同,以下两步需根据实际情况做特殊处理,从而得到下次请求的URL
string[] substr = ss.Split(new char[] { ‘"‘ });
NextRequestUrl = substr[1];
ResultHtml = ss;
return ss;
}
catch (WebException ex)
{
MessageBox.Show(string.Format("获取页面HTML信息出错,详细信息:{0}", ex.Message));
}
return "";
}
#endregion
}

2.调用方法(模拟登录人人网)

WebAutoLogin.PostLogin("http://www.renren.com/PLogin.do", "人人网账号", "人人网密码");
WebAutoLogin.GetPage();
WebAutoLogin.GetPage();

3. 2345看图王刷票

用上篇文章的帮组类(模拟登录人人网),下面是调用方法

WebAutoLogin1.CookieContainer = new System.Net.CookieContainer();
WebAutoLogin1.NextRequestUrl = "http://pic.2345.com/huodong/children/action.php?act=vote&&id=412&_=1433212086433";
WebAutoLogin1.CookiesString = "";
WebAutoLogin1.ResultHtml = "";
responseHtml = WebAutoLogin1.GetPage();

模拟登录

标签:

原文地址:http://www.cnblogs.com/smallcosmos/p/4552454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!