利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录

利用HttpWebRequest和HttpWebResponse获取Cookie并实现模拟登录

tring cookie = response.Headers.Get("Set-Cookie");

       通常在响应的头信息里就包含了Cookie,它就是Set-Cookie的值。如果想要知道HTTP的头信息有哪些,可以在谷歌浏览器中按F12进行查看,但记得,要想捕捉这些信息,必须在未登录前就按F12,否则谷歌浏览器是不会跟踪这些信息的。
       然后我们就可以利用该Cookie登录网站并且得到登录后的网站内容:

复制代码
        string html = getHtml(GetCookieName(cookie), GetCookieValue(cookie));

        private string GetCookieValue(string cookie)
        {
            Regex regex = new Regex("=.*?;");
            Match value = regex.Match(cookie);
            string cookieValue = value.Groups[0].Value;
            return cookieValue.Substring(1, cookieValue.Length - 2);
        }

        private string GetCookieName(string cookie)
        {
            Regex regex = new Regex("sulcmiswebpac.*?");
            Match value = regex.Match(cookie);
            return value.Groups[0].Value;
        }

        private string getHtml(string name, string value)
        {
            CookieCollection cookies = new CookieCollection();
            cookies.Add(new Cookie(name, value));
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://222.200.98.171:81/user/bookborrowed.aspx");
            request.Method = "GET";
            request.Headers.Add("Cookie", name + "=" + value);

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream stream = response.GetResponseStream();
            StreamReader reader = new StreamReader(stream, Encoding.UTF8);
            return reader.ReadToEnd();
        }
复制代码

     我们之前得到的cookie字符串中其实就是一个键值对字符串,我们还是需要根据正则表达式提取出cookie的name和value,然后我们定义一个CookieContainer,往里面添加我们捕捉到的Cookie,接着就是需要Cookie的网页发送一个带有该Cookie的HTTP请求。
     方法很简单,只要合理的使用正则表达式,我们就可以方便的对网页进行处理,而不需要什么第三方的库。

     每个程序员都需要学会自己造轮子而不是一味的追求轮子,就算是其他语言的轮子,我们依然可以用自己熟悉的语言实现出来,毕竟所有的语言背后的实现思想都是一样的,尤其是面向对象语言,它们都是相互借鉴的,交叉处实在是太多了,C#更是在参考java的基础上创造出来的,有什么理由是java可以C#不可以呢?(有是有,但我们可以模拟)

 
 
 
标签:  ASP.NET MVC C# Web

你可能感兴趣的:(Web,mvc,C#,asp.net)