Session与Cookie
(一)什么是Session
服务器为了保存用户状态而创建的一个特殊的对象。
(二)什么是Cookie
其实cookies是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关,所以存储在你电脑上的cookies就好像你的一张身份证,你电脑上的cookies和其他电脑上的cookies是不一样的;cookies不能被视作代码执行,也不能成为病毒,所以它对你基本无害。
(三)Session和Cookie的区别与联系
- session是存放在服务器上的,cookie是存放在用户的客户端上的
- session比cookie更安全
- session如果过多会对服务器的性能造成影响,因此,重要的数据一般放在session中,不重要的数据放在cookie中
- cookie存放的数据是有大小限制的不超过3k
- cookie与session存放都是有时间限制的
(四)案例场景
在生活中,我们经常碰到这样的情况:
当你第一次登录一个网站的时候,你需要输入密码或是手机验证码才能登录,但是当你再打开这个网站的时候就不需要输入密码了(在一段时间内),如果你很长时间不登录这个网站,你会发现你又要重新输入密码了;又或者是你清理了浏览器的缓存(包括cookies),那么即使你刚刚登录完这个网站,再次进入这个网站时,你还需要输入密码登录。
这是怎么回事呢?
原来,在第一次登录的时候(登录的过程实质就是你用你的浏览器访问服务器的过程),服务器会创建一个session对象,session对象会有一个唯一的sessionId,而这个sessionId会保存在你自己电脑的cookie中;
当你再次访问这个网站的时候,发送请求的时候,会自动带上你的cookies(包括sessionId)如果你的cookie还没有过期,你就不需要输入密码直接登录了。
但是如果你的cookies过期了,或者你清理了缓存(包括cookies),那么你就又要重新输入密码了。
扩展与延申
有些爬虫就是利用cookie的方式伪装登录,比如:你想要爬取某个网站的图片,但是这个网站却需要登录才能下载图片,你自然可以人工登录一个一个图片下载,但是你也可以利用爬虫一个for循环全部爬取下来(我全都要),但是要登录,怎么办呢?可以先用账号登录这个网站,此时,你电脑上就有个sessionid,分析本地的cookies获取sessionid,然后你就可以伪装成登录的样子去爬取了。当然现在很多网站都有反爬虫的机制,实现起来有难度就是了。
(五)优点与弊端
优点:
好处显而易见了,他会使生活更加方便,同时,cookie不仅仅用于存储sessionid,同时还可以存储你的喜好,比如你去视频网站看视频,登录发送请求的时候也会发送你的个人喜好,这样你首页推荐的信息也会根据你个人的喜好产生。
缺点:
这也会泄露我们的个人隐私,在你用网络访问的网站的时候,你的每一次鼠标的点击都会被记录下来(为了更好的商品推荐等等),细思极恐。