今天没事搞搞模拟登录的问题:
有人用控制台的写:static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
string url = "http://bjapp2.mail.tom.com/cgi/ldapapp?funcid=mails&sid=cAnaEFDLTEKAsbfq&checkmail=1";
//
string indata = url;
string outdata = "";
Cookie cookie = new Cookie("Info", "name0607=用户名[email protected]+用户名密码+自动登录0; Coremail=wedQwaQJWuaqc%cAnaEFDLTEKAsbfq; tom_test=ennDYf6VT!325!9!1305699915!1306202635!83!1306148651!http://bjapp2.mail.tom.com/cgi/ldapapp!; ad_-.-AD-.-=AKD4wATOr!5!3!1305701091!84!432748!2!13!3!null!!1306133839!!!; __utma=236937426.3563621251020157400.1305699981.1306199305.1306200456.9; __utmz=236937426.1306200456.9.8.utmcsr=mail.tom.com|utmccn=(referral)|utmcmd=referral|utmcct=/logout.html; __utmb=236937426.3.10.1306200456", "", "mail.tom.com");
CookieContainer myCookieContainer = new CookieContainer();
myCookieContainer.Add(cookie);
//新建一个CookieContainer来存放Cookie集合
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
//新建一个HttpWebRequest
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength = indata.Length;
myHttpWebRequest.Method = "POST";
myHttpWebRequest.CookieContainer = myCookieContainer;
//设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
Stream myRequestStream = myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
//把数据写入HttpWebRequest的Request流
myStreamWriter.Close();
myRequestStream.Close();
//关闭打开对象
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
//新建一个HttpWebResponse
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
//获取一个包含url的Cookie集合的CookieCollection
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
outdata = myStreamReader.ReadToEnd();
//把数据从HttpWebResponse的Response流中读出
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
//显示"登录"
//拿到了Cookie,再进行请求就能直接读取到登录后的内容了
myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer = myCookieContainer;//*
//刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
myResponseStream = myHttpWebResponse.GetResponseStream();
myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
outdata = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
Console.ReadLine();
//再次显示"登录"
//如果把*行注释调,就显示"没有登录"
}
那个system.net.Cookie不好设置成对的name+value进去,这样写Cookie cookie = new Cookie("Info", "name0607=用户名[email protected]...")总报错。
========================================一条华丽的分割线====================================
下面用简单的response设置HttpCookie方法,居然成功了十几次(肯定是成功的,排除各种浏览器的问题),至少可以看见收件箱中的一页,第二页翻页就提示超时了 public void getSingle(string url,string c)
{
HttpCookie cookie = new HttpCookie("Info", c);
Response.AppendCookie(cookie);
Response.Redirect(url);
}
pageload里面getSingle("http://bjapp2.mail.tom.com/cgi/ldapapp?funcid=mails&sid=dAWRSXEHFZOAEBgA&checkmail=1", "name0607=用户名[email protected]+用户名密码+自动登录0; tom_test=ennDYf6VT!348!9!1305699915!1306203408!106!1306148651!http://bjapp2.mail.tom.com/cgi/ldapapp!; ad_-.-AD-.-=AKD4wATOr!5!3!1305701091!84!432748!2!13!3!null!!1306133839!!!");==============================================再来一条猥琐的分割线==============================
有人说cookiecontainer可以实现,我的想法是从正常登录的页面提取封装cookiecontainer再模拟登录提交理论上应该可以。但是代码着手不顺畅,求各位大神给思路,贴代码。各种google没结果。。
另:cookie提取用的是HttpAnalyzer V3自己注册了个邮箱的cookie
有人用控制台的写:static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
string url = "http://bjapp2.mail.tom.com/cgi/ldapapp?funcid=mails&sid=cAnaEFDLTEKAsbfq&checkmail=1";
//
string indata = url;
string outdata = "";
Cookie cookie = new Cookie("Info", "name0607=用户名[email protected]+用户名密码+自动登录0; Coremail=wedQwaQJWuaqc%cAnaEFDLTEKAsbfq; tom_test=ennDYf6VT!325!9!1305699915!1306202635!83!1306148651!http://bjapp2.mail.tom.com/cgi/ldapapp!; ad_-.-AD-.-=AKD4wATOr!5!3!1305701091!84!432748!2!13!3!null!!1306133839!!!; __utma=236937426.3563621251020157400.1305699981.1306199305.1306200456.9; __utmz=236937426.1306200456.9.8.utmcsr=mail.tom.com|utmccn=(referral)|utmcmd=referral|utmcct=/logout.html; __utmb=236937426.3.10.1306200456", "", "mail.tom.com");
CookieContainer myCookieContainer = new CookieContainer();
myCookieContainer.Add(cookie);
//新建一个CookieContainer来存放Cookie集合
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
//新建一个HttpWebRequest
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.ContentLength = indata.Length;
myHttpWebRequest.Method = "POST";
myHttpWebRequest.CookieContainer = myCookieContainer;
//设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer
Stream myRequestStream = myHttpWebRequest.GetRequestStream();
StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312"));
myStreamWriter.Write(indata);
//把数据写入HttpWebRequest的Request流
myStreamWriter.Close();
myRequestStream.Close();
//关闭打开对象
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
//新建一个HttpWebResponse
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
//获取一个包含url的Cookie集合的CookieCollection
Stream myResponseStream = myHttpWebResponse.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
outdata = myStreamReader.ReadToEnd();
//把数据从HttpWebResponse的Response流中读出
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
//显示"登录"
//拿到了Cookie,再进行请求就能直接读取到登录后的内容了
myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
myHttpWebRequest.CookieContainer = myCookieContainer;//*
//刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证
myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
myResponseStream = myHttpWebResponse.GetResponseStream();
myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("gb2312"));
outdata = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
Console.WriteLine(outdata);
Console.ReadLine();
//再次显示"登录"
//如果把*行注释调,就显示"没有登录"
}
那个system.net.Cookie不好设置成对的name+value进去,这样写Cookie cookie = new Cookie("Info", "name0607=用户名[email protected]...")总报错。
========================================一条华丽的分割线====================================
下面用简单的response设置HttpCookie方法,居然成功了十几次(肯定是成功的,排除各种浏览器的问题),至少可以看见收件箱中的一页,第二页翻页就提示超时了 public void getSingle(string url,string c)
{
HttpCookie cookie = new HttpCookie("Info", c);
Response.AppendCookie(cookie);
Response.Redirect(url);
}
pageload里面getSingle("http://bjapp2.mail.tom.com/cgi/ldapapp?funcid=mails&sid=dAWRSXEHFZOAEBgA&checkmail=1", "name0607=用户名[email protected]+用户名密码+自动登录0; tom_test=ennDYf6VT!348!9!1305699915!1306203408!106!1306148651!http://bjapp2.mail.tom.com/cgi/ldapapp!; ad_-.-AD-.-=AKD4wATOr!5!3!1305701091!84!432748!2!13!3!null!!1306133839!!!");==============================================再来一条猥琐的分割线==============================
有人说cookiecontainer可以实现,我的想法是从正常登录的页面提取封装cookiecontainer再模拟登录提交理论上应该可以。但是代码着手不顺畅,求各位大神给思路,贴代码。各种google没结果。。
另:cookie提取用的是HttpAnalyzer V3自己注册了个邮箱的cookie
//新建一个html页,把这些粘进去,这是仿HAO123的,,,如果只要tom邮箱。。自己扒出来
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>仿HAO123邮箱切换-www.codefans.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body><FORM name=gomail onSubmit="return clickMail()" action="" method=post id=FrLgn><INPUT type=hidden name=url><INPUT type=hidden name=username><INPUT type=hidden name=type><INPUT type=hidden name=password><INPUT type=hidden name=domain><input name=.intl value=cn type=hidden><input value=ym name=.src type=hidden><INPUT type=hidden name=user><INPUT type=hidden name=pass><INPUT type=hidden value=true name=enterVip><INPUT type=hidden name=UserName><INPUT type=hidden name=Password><INPUT type=hidden name=u><INPUT type=hidden name=psw><INPUT type=hidden name=login><!--/--><INPUT type=hidden name=LoginName><INPUT type=hidden name=usr><INPUT type=hidden name=func><INPUT type=hidden name=login_name><INPUT type=hidden name=login_password><INPUT type=hidden name=BackURL><INPUT type=hidden value=http://mail.google.com/mail?ui=html&zy=l name=continue><INPUT type=hidden name=Email><INPUT type=hidden name=domainname><INPUT type=hidden value=false name=firstlogin><INPUT type=hidden name=starttime><INPUT type=hidden name=p2><INPUT type=hidden name=passwd><INPUT type=hidden name=id><INPUT type=hidden name=m><INPUT type=hidden name=mpass><INPUT type=hidden name=loginid><INPUT type=hidden name=appid><INPUT type=hidden name=ru><INPUT type=hidden name=eru><INPUT type=hidden name=fl><INPUT type=hidden name=ct><INPUT type=hidden name=vr><INPUT type=hidden name=sg><INPUT type=hidden name=vwriter><INPUT type=hidden name=email><INPUT type=hidden name=passport_51_user><!--/--><INPUT type=hidden name=passport_51_password><INPUT type=hidden name=gourl><INPUT type=hidden name=Passwd><INPUT type=hidden name=vpassword>用户名:<input tabIndex=1 size=15 name=uName> 邮箱:<select tabIndex=2 size=1 name=domainss><option selected >请选择邮箱</option><option value=163>@163.com 网易</option><option value=126>@126.com 网易</option><option value=sina>@sina.com 新浪</option><option value=yahoo>@yahoo.com.cn</option><option value=yahoocn>@yahoo.cn</option><!--/--><option value=gmail>@gmail.com</option><option value=sohu>@sohu.com 搜狐</option><option value=tom>@tom.com</option><option value=188>@188.com</option><option value=21cn>@21cn.com</option><option value=yeah>@yeah.net</option><option>-请选择其他服务-</option><option value=baidu>百度账号</option><option value=chinaren>ChinaRen校友录</option><option value=xiaonei>校内网</option><option value=51com>51.com</option></select> 密码:<input tabIndex=3 type=password size=12 name=uPw> <input tabIndex=4 type=submit value=" 登录 " name=sub style="height:1.67em;width:5.0em;font-size:13px"><INPUT type=hidden value=submit name=cmd>
<script>
function clickMail()
{var gm=document.gomail
var vDomain=gm.domainss
var vName=gm.uName
var vPw=gm.uPw
if(vDomain.value==""){alert("您没有选择邮箱!")
vDomain.focus()
return false}
if(vName.value==""){alert("用户名不能为空!")
vName.focus()
return false
}
if(vPw.value==""){alert("密码不能为空!")
vPw.focus()
return false}
switch(vDomain.value){
case "163":
gm.action="http://reg.163.com/CheckUser.jsp"
gm.url.value="http://fm163.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&style=15"
gm.username.value=vName.value
gm.password.value=vPw.value
gm.enterVip.value=''
break
case "126":
gm.action="https://reg.163.com/logins.jsp"
gm.domain.value="126.com"
gm.username.value=vName.value +"@126.com"
gm.password.value=vPw.value
gm.url.value="http://entry.mail.126.com/cgi/ntesdoor?lightweight%3D1%26verifycookie%3D1%26language%3D0%26style%3D-1";
break
case "yeah":
gm.action="https://reg.163.com/logins.jsp"
gm.domain.value="yeah.net";
gm.username.value=vName.value +"@yeah.net"
gm.password.value=vPw.value
gm.url.value="http://entry.mail.yeah.net/cgi/ntesdoor?lightweight%3D1%26verifycookie%3D1%26style%3D-1";
break
case "188":
gm.action="http://reg.mail.188.com/servlet/coremail/login?language=0&style=1"
gm.user.value=vName.value
gm.pass.value=vPw.value
break
case "sohu":
gm.action="http://passport.sohu.com/login.jsp"
gm.url.value=""
gm.UserName.value=vName.value
gm.Password.value=vPw.value
gm.id.value=vName.value
gm.username.value=vName.value
gm.password.value=vPw.value
gm.m.value=vName.value
gm.passwd.value=vPw.value
gm.mpass.value=vPw.value
gm.loginid.value=vName.value+"@sohu.com"
gm.fl.value="1"
gm.vr.value="1|1"
gm.appid.value="1000"
gm.ru.value="http://login.mail.sohu.com/servlet/LoginServlet"
gm.eru.value="http://login.mail.sohu.com/login.jsp"
gm.ct.value="1173080990"
gm.sg.value="5082635c77272088ae7241ccdf7cf062"
break
case "yahoo":
gm.action="https://edit.bjs.yahoo.com/config/login"
gm.login.value=vName.value
gm.passwd.value=vPw.value
break
case "yahoocn":
gm.action="https://edit.bjs.yahoo.com/config/login"
gm.login.value=vName.value+"@yahoo.cn"
gm.passwd.value=vPw.value
break
case "tom":
gm.action="http://bjweb.163.net/cgi/163/login_pro.cgi"
gm.user.value=vName.value
gm.pass.value=vPw.value
break
case "21cn":
gm.action="http://passport.21cn.com/maillogin.jsp"
gm.LoginName.value=vName.value
gm.passwd.value=vPw.value
gm.domainname.value="21cn.com"
gm.UserName.value=vName.value+'@21cn.com'
break
case "sina":
gm.action="http://mail.sina.com.cn/cgi-bin/login.cgi"
gm.u.value=vName.value
gm.psw.value=vPw.value
break
case "gmail":
gm.action="https://www.google.com/accounts/ServiceLoginAuth"
gm.Email.value=vName.value
gm.Passwd.value=vPw.value
break
case "chinaren":
gm.action="http://passport.sohu.com/login.jsp"
gm.loginid.value=vName.value+"@chinaren.com"
gm.passwd.value=vPw.value
gm.fl.value="1"
gm.vr.value="1|1"
gm.appid.value="1005"
gm.ru.value="http://profile.chinaren.com/urs/setcookie.jsp?burl=http://alumni.chinaren.com/"
gm.ct.value="1174378209"
gm.sg.value="84ff7b2e1d8f3dc46c6d17bb83fe72bd"
break
case "tianya":
gm.action="http://www.tianya.cn/user/loginsubmit.asp"
gm.vwriter.value=vName.value
gm.vpassword.value=vPw.value
break
case "baidu":
gm.action="http://passport.baidu.com/?login"
gm.u.value="http://passport.baidu.com/center"
gm.username.value=vName.value
gm.password.value=vPw.value
break
case "xiaonei":
gm.action="http://login.xiaonei.com/Login.do"
gm.email.value=vName.value
gm.password.value=vPw.value
break
case "51com":
gm.action="http://passport.51.com/login.5p"
gm.passport_51_user.value=vName.value
gm.passport_51_password.value=vPw.value
gm.gourl.value="http%3A%2F%2Fmy.51.com%2Fwebim%2Findex.php"
break
}
vPw.value=""
return true
}
</script>
</body>
</html>
程序是死的。。人是活的JS也能用cookies那就用你的方式吧。。你的这一堆:。name0607=用户名[email protected]...存入时进行一下编码
顺便可以看看这些cookies操作。嘿嘿
腾讯的拍拍网今日特价秒杀器--拍拍抢拍精灵实现过程--核心代码
使用cookie通过验证直接抢拍,不输入用户密码
和你的模拟登陆应该一样
public static CookieContainer GetCookieFromStr(string ck_str, string domain)
{
by/ http://blog.csdn.net/wyw308 CookieContainer myCookieContainer = new CookieContainer();
string cookieStr = ck_str;
string[] cookstr = cookieStr.Split(';');
foreach (string str in cookstr)
{
string[] cookieNameValue = str.Split('=');
if (cookieNameValue.Length > 1 )
{
Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), str.Substring(cookieNameValue[0].Trim().ToString().Length + 2));
ck.Domain = domain;
ck.Path = "/";
myCookieContainer.Add(ck);
} }
return myCookieContainer;
}这个方法貌似对我这个cookie不能用啊(name0607=用户名[email protected]+用户名密码+自动登录0; Coremail=wedQwaQJWuaqc%cAnaEFDLTEKAsbfq; tom_test=ennDYf6VT!325!9!1305699915!1306202635!83!1306148651!http://bjapp2.mail.tom.com/cgi/ldapapp!; ad_-.-AD-.-=AKD4wATOr!5!3!1305701091!84!432748!2!13!3!null!!1306133839!!!; __utma=236937426.3563621251020157400.1305699981.1306199305.1306200456.9; __utmz=236937426.1306200456.9.8.utmcsr=mail.tom.com|utmccn=(referral)|utmcmd=referral|utmcct=/logout.html; __utmb=236937426.3.10.1306200456)
哪能照搬呢
HttpAnalyzerStdV5 http抓包分析软件