大家应该都知道Cookie,在我看来Cookie分两种,一种是存储数据,另外一种是保持连接状态,我们主要谈第二种。
先说第一种:这就是简单的存储数据了,比如我们做了一个搜索框,每次都要在搜索框下面显示出用户以前搜索过的关键词,这种情况下我们就可以把用户每次搜索的值存入cookie,然后每次读取cookie显示出来就可以了。
第二种cookie:此类cookie是为了保持和服务器的通信连接,这种cookie一般都是服务器返回cookie,cookie里有唯一标识。然后客户端每次请求都会带有这个cookie,服务器就能由此得到是哪个客户端请求的,由此而来的一系列问题就产生了。
举例:
比如某一网站需要登录,然后一用户登录之后,我们只需要拿到该客户端此网页下的cookie,我们就可以在别处使用获取到的cookie登录此网站。
然后我们用C#代码来通过例子说明下:
首先我们先编写一个Get请求的函数
/// <summary>
/// Get请求函数
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="data">cookie</param>
/// <returns></returns>
static string GetContent(string url,string data)
{
string content;
HttpWebRequest httpRequest = (HttpWebRequest)HttpWebRequest.Create(url);
httpRequest.Headers.Add("Cookie",data);
httpRequest.Referer = url;
httpRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko";
httpRequest.Accept = "text/html, application/xhtml+xml, */*";
httpRequest.ContentType = "application/x-www-form-urlencoded";
httpRequest.Method = "GET";
HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse();
using (Stream responsestream = httpResponse.GetResponseStream())
{
using (StreamReader sr = new StreamReader(responsestream, System.Text.Encoding.UTF8))
{
content = sr.ReadToEnd();
}
}
return content;
}
函数只有两个参数,第一个为请求地址,第二个就是cookie。然后我们获取这个地址的网页源代码返回。
string data = "__guid=108592272.1970508205390738000.1540350263873.1567; ASP.NET_SessionId=uz3pqatk454p0zjl5bzcxxxx";
string url1 = "http://code.sammh.com/Center/index.html";//此地址最好为需要登录过后的地址,这样才可以看出来测试效果
Response.Write(GetContent(url1,data));
大家可以试试,这样就可以直接进入需要登录进入的地址,然后获取网页源代码输出,当然,cookie肯定是登录过后所获取的cookie。
然后我教大家如何获取这个cookie,当然肯定是获取自己的cookie,如果大家想入非非想去获取别人网站的cookie,这个大家自行学习,这里不多阐述。
大家登录了某个网站,进入了页面,然后按F12,选择Network菜单,找到当前的请求,然后点击出现下图:
在红框里的就是cookie,只要拿到此cookie,就可以实现无账号密码登录了,当然这是最简单的cookie,很多大网站对cookie做了很多操作,即使我们拿到了cookie,也不能实现直接登录。
----------End-------------