zoukankan      html  css  js  c++  java
  • c# winform实现网页上用户自动登陆,模拟网站登录

    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; 
            }
    
        } 
    } 
    
    

  • 相关阅读:
    leetcode 268. Missing Number
    DBSCAN
    python二维数组初始化
    leetcode 661. Image Smoother
    leetcode 599. Minimum Index Sum of Two Lists
    Python中的sort() key含义
    leetcode 447. Number of Boomerangs
    leetcode 697. Degree of an Array
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月3日)
    北京Uber优步司机奖励政策(1月2日)
  • 原文地址:https://www.cnblogs.com/jayleke/p/1799702.html
Copyright © 2011-2022 走看看