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

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

        } 

  • 相关阅读:
    mui 点击输入框软键盘弹起解决
    Vue中form表单常用rules校验规则
    ios new Date('yyyy-MM-dd HH-mm-ss').getTime() 方法获取不到时间戳
    uni-app运行到手机报错 Component constructors should be called while initialization. A constructor call has been ignored.
    vue-element-admin后台 点击侧边栏 刷新当前路由
    vue 防抖和节流
    vue data数据变化 页面数据不更新问题
    uni-app中页面部分内容使用索引列表(uni-indexed-list),动态数据
    css 文本单行显示溢出时出现省略号 多行显示溢出时出现省略号 首行缩进
    css实现两个div并排等高(一个div高度随另一个高度变化而变化)
  • 原文地址:https://www.cnblogs.com/top5/p/1728842.html
Copyright © 2011-2022 走看看