天涯论坛网SSO自动登录的c#实现.付源代码!!!

天涯论坛网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();//
        }

你可能感兴趣的:(天涯论坛网SSO自动登录的c#实现.付源代码!!!)