天涯论坛网SSO自动登录的c#实现.付源代码!!!
public class Tianya : Base
{
public override void Init()
{
log.GroupID = "Tianya//"+name;
log.ID = "log4net";
log.Init();
}
public string name;
public string pwd;
string cookies;
string uid;
string ukey;
string msg = @"上海专业软件开发、网站开发、搜索引擎开发、网页数据采集、网站推广、产品营销推广、电子商务策略营销----联 系QQ 1163551688 上海,谢谢支持!";
/// <summary>
/// 登录
/// </summary>
public void Login()
{
cookies = "";
Zfr.Common.Helper.AllowAutoRedirect = false;
string url = "http://login.tianya.cn/user/loginsubmit.asp";
string data = string.Format("vwriter={0}&vpassword={1}&returnURL=http%3A%2F%2Fwww.tianya.cn%2Ffocus%2Findex.shtml&fowardURL=http%3A%2F%2Fwww.tianya.cn%2Ffocus%2Findex.shtml", name, pwd);
string rtn; Match m;
rtn = Zfr.Common.Helper.PostForm(url, data, false, null, Encoding.GetEncoding("gbk"), "http://www.tianya.cn/", null);//
Zfr.Common.Helper.AllowAutoRedirect = true;
int i1, i2; string location;
if (rtn.IndexOf("cookies") != -1)
{
i1 = rtn.IndexOf("<cookies>") + 9;
i2 = rtn.IndexOf("</cookies>");
if (i2 > i1)
{
cookies += rtn.Substring(i1, i2 - i1);//
}
i1 = rtn.IndexOf("<location>") + 10;
i2 = rtn.IndexOf("</location>");
if (i2 > i1)
{
location= rtn.Substring(i1, i2 - i1);//
location = Regex.Replace(location, "strWriter=(.*?)&", "strWriter=" + System.Web.HttpUtility.UrlEncode(name, Encoding.GetEncoding("gb2312")) + "&");
rtn = Zfr.Common.Helper.GetPage(location, cookies, Encoding.GetEncoding("gbk"), url, null);
m = Regex.Match(rtn, @"javascript"">(.*?)</script>");
string js="";
if (m.Success)
{
js = m.Groups[1].Value;
js = Regex.Replace(js, "document.cookie =(.*?);", "");
}
//JS计算Cookies值
cookies += ";user=" + Zfr.Common.Helper.JsEval(js + " var rtn=baseCookieValue;");
cookies += ";temp=" + Zfr.Common.Helper.JsEval(js + " var rtn=cookieValue;");
cookies += ";right=" + Zfr.Common.Helper.JsEval(js + " var rtn=cookieValue_right;");
cookies += ";sso=" + Zfr.Common.Helper.JsEval(js + " var rtn=cookieValue_sso;");
m=Regex.Match(rtn,@"href=""(.*?)""<");
if(m.Success)
{
location = m.Groups[1].Value;
location = Regex.Replace(location, "strWriter=(.*?)&", "strWriter=" + System.Web.HttpUtility.UrlEncode(name, Encoding.GetEncoding("gb2312")) + "&");
rtn = Zfr.Common.Helper.GetPage(location, cookies, Encoding.GetEncoding("gbk"), url, null);
}
}
string refer = "http://my.tianya.cn/user/userInfoGadget.jsp?ownerId={0}&style=http://my.tianya.cn/style/blue/style.css";
rtn = Zfr.Common.Helper.GetPage("http://my.tianya.cn/portal.jsp", cookies, Encoding.UTF8, refer, null);
m = Regex.Match(rtn, @"""id"": ""(.*?)""");
if (!m.Success)
return;
uid = m.Groups[1].Value;
m = Regex.Match(rtn, @"""key"": ""(.*?)""");
if (!m.Success)
return;
ukey = m.Groups[1].Value;
log.Show(string.Format("Login-->{0} {1} {2} {3}",this.name,this.uid,this.ukey,this.cookies));
}
url = null; data = null; m = null; rtn = null; location = null;
Zfr.Common.Helper.AllowAutoRedirect = true;
DelMsg();//
}