c# winform实现网页上用户自动登陆(破解)

来源:互联网 发布:上瘾网络剧15集未减版 编辑:程序博客网 时间:2024/05/17 21:44

using System;  

using System.Collections.Generic;  

using System.Text;  

using System.Net;  

using System.IO; 

   

namespace Czt.Web  

{  

     /// <summary>  

     /// 实现网站登录类  

     /// </summary>  

     public class Post  

     {  

         /// <summary>  

         /// 网站Cookies  

         /// </summary>  

         private string _cookieHeader = string.Empty;  

         public string CookieHeader  

         {  

             get 

             {  

                 return _cookieHeader;  

             }  

             set 

             {  

                 _cookieHeader = value;  

             }  

         }  

         /// <summary>  

         /// 网站编码  

         /// </summary>  

         private string _code = string.Empty;  

         public string Code  

         {  

             get { return _code; }  

             set { _code = value; }  

         } 

   

    

         private string _pageContent = string.Empty;  

         public string PageContent  

         {  

             get { return _pageContent; }  

             set { _pageContent = value; }  

         } 

   

         private Dictionary<string, string> _para = new Dictionary<string, string>();  

         public Dictionary<string, string> Para  

         {  

             get { return _para; }  

             set { _para = value; }  

         } 

   

    

         /**/ 

         /// <summary>  

         /// 功能描述:模拟登录页面,提交登录数据进行登录,并记录Header中的cookie  

         /// </summary>  

         /// <param name="strURL">登录数据提交的页面地址</param>  

         /// <param name="strArgs">用户登录数据</param>  

         /// <param name="strReferer">引用地址</param>  

         /// <param name="code">网站编码</param>  

         /// <returns>可以返回页面内容或不返回</returns>  

         public string PostData(string strURL, string strArgs, string strReferer, string code, string method)  

         {  

             return  PostData(strURL,  strArgs,  strReferer,  code,  method, string.Empty);  

         }  

         public string PostData(string strURL, string strArgs, string strReferer, string code, string method, string contentType)  

         {  

             try 

             {  

                 string strResult = "";  

                 HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);  

                 myHttpWebRequest.AllowAutoRedirect = true;  

                 myHttpWebRequest.KeepAlive = true;  

                 myHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*";  

                 myHttpWebRequest.Referer = strReferer; 

   

    

                 myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)"; 

   

                 if (string.IsNullOrEmpty(contentType))  

                 {  

                     myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";  

                 }  

                 else 

                 {  

                     myHttpWebRequest.ContentType = "contentType";  

                 } 

   

                 myHttpWebRequest.Method = method; 

   

                 myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate"); 

   

                 if (myHttpWebRequest.CookieContainer == null)  

                 {  

                     myHttpWebRequest.CookieContainer = new CookieContainer();  

                 } 

   

                 if (this.CookieHeader.Length > 0)  

                 {  

                     myHttpWebRequest.Headers.Add("cookie:" + this.CookieHeader);  

                     myHttpWebRequest.CookieContainer.SetCookies(new Uri(strURL), this.CookieHeader);  

                 } 

   

   

   

                 byte[] postData = Encoding.GetEncoding(code).GetBytes(strArgs);  

                 myHttpWebRequest.ContentLength = postData.Length; 

   

                 System.IO.Stream PostStream = myHttpWebRequest.GetRequestStream();  

                 PostStream.Write(postData, 0, postData.Length);  

                 PostStream.Close(); 

   

                 HttpWebResponse response = null;  

                 System.IO.StreamReader sr = null;  

                 response = (HttpWebResponse)myHttpWebRequest.GetResponse(); 

   

    

   

                 if (myHttpWebRequest.CookieContainer != null)  

                 {  

                     this.CookieHeader = myHttpWebRequest.CookieContainer.GetCookieHeader(new Uri(strURL));  

                 } 

   

                 sr = new System.IO.StreamReader(response.GetResponseStream(), Encoding.GetEncoding(code));    //    //utf-8  

                 strResult = sr.ReadToEnd();  

                 sr.Close();  

                 response.Close();  

                 return strResult;  

             }  

             catch (Exception ex)  

             {  

                 Utilities.Document.Create("C:\\error.log", strArgs, true, Encoding.UTF8);  

             }  

             return string.Empty;  

         } 

   

         /**/  

         /// <summary>  

         /// 功能描述:在PostLogin成功登录后记录下Headers中的cookie,然后获取此网站上其他页面的内容  

         /// </summary>  

         /// <param name="strURL">获取网站的某页面的地址</param>  

         /// <param name="strReferer">引用的地址</param>  

         /// <returns>返回页面内容</returns>  

         public string GetPage(string strURL, string strReferer, string code)  

         {  

             return GetPage(strURL, strReferer,code,string.Empty);  

         }  

         public string GetPage(string strURL, string strReferer,string code,string contentType)  

         {  

             string strResult = "";  

             HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(strURL);  

             myHttpWebRequest.AllowAutoRedirect = true;  

             myHttpWebRequest.KeepAlive = false;  

             myHttpWebRequest.Accept = "*/*";  

             myHttpWebRequest.Referer = strReferer;  

             myHttpWebRequest.Headers.Add("Accept-Encoding", "gzip, deflate"); 

   

             myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 2.0.50727)";  

             if (string.IsNullOrEmpty(contentType))  

             {  

                 myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";  

             }  

             else 

             {  

                 myHttpWebRequest.ContentType = contentType;  

             }  

             myHttpWebRequest.Method = "GET"; 

   

             if (myHttpWebRequest.CookieContainer == null)  

             {  

                 myHttpWebRequest.CookieContainer = new CookieContainer();  

             } 

   

             if (this.CookieHeader.Length > 0)  

             {  

                 myHttpWebRequest.Headers.Add("cookie:" + this.CookieHeader);  

                 myHttpWebRequest.CookieContainer.SetCookies(new Uri(strURL), this.CookieHeader);  

             } 

   

    

             HttpWebResponse response = null;  

             System.IO.StreamReader sr = null;  

             response = (HttpWebResponse)myHttpWebRequest.GetResponse(); 

   

    

             Stream streamReceive;  

             string gzip = response.ContentEncoding; 

   

             if (string.IsNullOrEmpty(gzip) || gzip.ToLower() != "gzip")  

             {  

                 streamReceive = response.GetResponseStream();  

             }  

             else 

             {  

                 streamReceive = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress);  

             } 

   

             sr = new System.IO.StreamReader(streamReceive, Encoding.GetEncoding(code)); 

   

             if (response.ContentLength > 1)  

             {  

                 strResult = sr.ReadToEnd();  

             }  

             else 

             {  

                 char[] buffer=new char[256];  

                 int count = 0;  

                 StringBuilder sb = new StringBuilder();  

                 while ((count = sr.Read(buffer, 0, buffer.Length)) > 0)  

                 {  

                     sb.Append(new string(buffer));  

                 }  

                 strResult = sb.ToString();  

             }  

             sr.Close();  

             response.Close();  

             return strResult;  

         } 

   

     }  

}

原创粉丝点击