zoukankan      html  css  js  c++  java
  • C#模拟登录Discuz论坛 附代码 Discuz X1.5

    本方法通过将账号和密码提交到登录页面,返回一个CookieContainer类型的COOKIE容器,需要模拟登录访问的时候带着这个CookieContainer访问指定地址便可。
     
      1 #region Discuz论坛登录
      2  
      3         /// <summary>
      4  
      5         /// Discuz论坛登录
      6  
      7         /// </summary>
      8  
      9         /// <param name="UserName">账号</param>
     10  
     11         /// <param name="PassWord">密码</param>
     12  
     13         /// <param name="domain">论坛地址(末尾加斜线),如 http://www.njxsw.com/</param>
     14  
     15         /// <returns></returns>
     16  
     17         protected CookieContainer DiscuzLogin(string UserName, string PassWord, string domain)
     18  
     19         {            #region 取得登录表单页源代码
     20  
     21             string loginPageUrl = domain + "member.php?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login";
     22  
     23             string loginPageHtml = ForSunSoft.Net.Url.Post(new NameValueCollection(),
     24  
     25                 loginPageUrl,
     26  
     27                 System.Text.Encoding.GetEncoding("GBK"),
     28  
     29                 new CookieContainer(),
     30  
     31                 "*/*",
     32  
     33                 domain + "forum.php",
     34  
     35                 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2)");
     36  
     37             #endregion            #region 获取验证页面地址
     38  
     39             Match match_UserValidateUrl = new Regex(";\" action=\"(?<key>.*?)\">", RegexOptions.None).Match(loginPageHtml);
     40  
     41             string UserValidateUrl = match_UserValidateUrl.Groups["key"].Value.ToS();
     42  
     43             #endregion            #region 获取表单哈希码
     44  
     45             Match match_FormHash = new Regex("<input type=\"hidden\" name=\"formhash\" value=\"(?<key>.*?)\" />", RegexOptions.None).Match(loginPageHtml);
     46  
     47             string FormHash = match_FormHash.Groups["key"].Value.ToS();
     48  
     49             #endregion            #region 创建登录表单
     50  
     51             NameValueCollection loginForm = new NameValueCollection();
     52  
     53             loginForm.Add("formhash", FormHash);
     54  
     55             loginForm.Add("referer", domain + "forum.php");
     56  
     57             loginForm.Add("loginfield""username");
     58  
     59             loginForm.Add("username", UserName);
     60  
     61             loginForm.Add("password", PassWord);
     62  
     63             loginForm.Add("questionid""0");
     64  
     65             loginForm.Add("answer""");
     66  
     67             loginForm.Add("cookietime""2592000");
     68  
     69             #endregion            #region 获得Auth和Sid
     70  
     71             CookieCollection userCookie = new CookieCollection();            CookieCollection ResCookie = ForSunSoft.Net.Url.PostAndGetCookie(loginForm, domain + UserValidateUrl.Replace("&amp;""&"), System.Text.Encoding.GetEncoding("GBK"));
     72  
     73             foreach (Cookie c in ResCookie)
     74  
     75             {
     76  
     77                 if (c.Name == "8TcA_2132_auth" || c.Name == "8TcA_2132_sid")
     78  
     79                 {
     80  
     81                     userCookie.Add(c);
     82  
     83                 }
     84  
     85             }
     86  
     87             #endregion
     88  
     89             CookieCollection cookieResult = ForSunSoft.Net.Url.PostAndGetCookie(new NameValueCollection(), domain + "forum.php", System.Text.Encoding.GetEncoding("GBK"), userCookie.ToCookieContainer());
     90  
     91             foreach (Cookie c in userCookie)
     92  
     93             {
     94  
     95                 cookieResult.Add(c);
     96  
     97             }             return cookieResult.ToCookieContainer();         }
     98  
     99         #endregion
    100  
    代码中有部分自定义方法,需要的留下邮箱。
     
  • 相关阅读:
    System.arraycopy用法
    Springmvc Get请求Tomcat、WebLogic中文乱码问题
    Rails内存的问题 Java内存情况
    Java 执行系统命令
    搭建Cocos2d-JS开发环境
    xcode 6 改动组织及开发人员
    poj
    hdu 4869 Turn the pokers (思维)
    【剑指offer】扑克牌的顺子
    NYOJ 480 Fibonacci Again!
  • 原文地址:https://www.cnblogs.com/kuibono/p/CSharpLoginDiscuz.html
Copyright © 2011-2022 走看看