首页 > dotnet, web, 技术, 灌水 > C# WebRequest发起Http Post请求模拟登陆并cookie处理示例

C# WebRequest发起Http Post请求模拟登陆并cookie处理示例

2009年9月27日 9,400 人浏览 发表评论 阅读评论

嗯,直接看代码:

CookieContainer cc=new CookieContainer();
string url = “http://mailbeta.263.net/xmweb”;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = “POST”;
request.ContentType = “application/x-www-form-urlencoded”;
request.CookieContainer=cc;
string user=”user”; //用户名
string pass=”pass”; //密码
string data = “func=login&usr=” + HttpUtility.UrlEncode(user) + “&sel_domain=263.net&domain=263.net&pass=” + HttpUtility.UrlEncode(pass) + “&image2.x=0&image2.y=0&verifypcookie=&verifypip=”;
request.ContentLength = data.Length;
StreamWriter writer = new StreamWriter(request.GetRequestStream(),Encoding.ASCII);
writer.Write(data);
writer.Flush();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
string encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1) {
    encoding = "UTF-8"; //默认编码
}
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
data = reader.ReadToEnd();
Console.WriteLine(data);
response.Close();

int index=data.IndexOf("sid=");
string sid=data.Substring(index+4,data.IndexOf("&",index)-index-4);
Console.WriteLine(sid);

url = "http://wm11.263.net/xmweb?func=mlst&act=show&usr="+user+"&sid="+sid+"&fid=1&desc=1&pg=1&searchword=&searchtype=&searchsub=&searchfd=&sort=4";
request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = cc;
foreach(Cookie cookie in response.Cookies) {
    cc.Add(cookie);
}
response = (HttpWebResponse)request.GetResponse();
encoding = response.ContentEncoding;
if (encoding == null || encoding.Length < 1) {
    encoding = "UTF-8"; //默认编码
}
reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding));
data = reader.ReadToEnd();
Console.WriteLine(data);
response.Close();

这段代码的意思是,模拟登陆263邮箱,别列出收件箱内容(html代码)

Related posts:

  1. C# WebRequest处理Https请求
  2. C# WebRequest处理Https请求之使用客户端证书
分类: dotnet, web, 技术, 灌水 标签: ,
1 Star2 Stars3 Stars4 Stars5 Stars 来给这篇文章评分吧!
Loading ... Loading ...
  1. ThomasLin
    2010年3月14日07:33 | #1

    請教你使用 c# HttpWebRequest及HttpWebResponse 要如何登入 Facebook ?
    我的代碼如下
    string responString = “”;
    CookieContainer cc = new CookieContainer();
    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(“https://www.facebook.com/login.php”);
    request.UserAgent = “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)”;
    HttpWebResponse respone = (HttpWebResponse)request.GetResponse();

    StreamReader sr = new StreamReader(respone.GetResponseStream(), Encoding.UTF8);

    responString = sr.ReadToEnd();

    string email = “email=xxx@xxx.com”;
    string pass = “pass=yyy”;

    request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(“https://login.facebook.com/login.php?login_attempt=1″);
    request.Method = “POST”;
    string postdata = email + “&” + pass + “&version=1.0″;
    byte[] b = Encoding.UTF8.GetBytes(email);
    request.ContentType = “application/x-www-form-urlencoded”;
    request.CookieContainer = cc;
    request.ContentLength = b.Length;

    Stream s = request.GetRequestStream();
    s.Write(b, 0, b.Length);

    respone = (HttpWebResponse)request.GetResponse();
    sr = new StreamReader(respone.GetResponseStream(), Encoding.UTF8);
    responString = sr.ReadToEnd();

    respone.ResponseUri 總是得到 http://www.facebook.com/common/borwser.php

  1. 本文目前尚无任何 trackbacks 和 pingbacks.