前言
本文文字篇幅略多,需要有一定耐心才能拿看完哟!
在学习爬虫的过程中,一般都会遇到登录的情况!在github上参考了一个开源项目的代码,网址如下:https://github.com/mtianyan/FunpySpiderSearch, 此项目是慕课网实战《Python分布式爬虫打造搜索引擎》__bobby 老师开源的源代码 😄 …
结合__bobby老师源码内容,本文将总结一下cookie和session。心里默默地膜拜一波大神!
理解cookie和session
要说模拟登录,一定要弄明白两个概念!其一是cookie,其二session!
cookie
一说到cookie,中文是小饼干的意思。。
劳资要吃饼干!!
回归正题,cookie呢。。。。Cookie是当你浏览某网站时,网站存储在你机器上的一个小文本文件,它记录了你的用户ID,密码、浏览过的网页、停留的时间等信息,当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等。在python里,它的样子长的就跟dict一样(键值对的形式, “key”:“value”)!!而在浏览器中呢,其实就是一段文本。。。。
那么问题来了,cookie当初设计的意义在哪里呢?
这要回溯到http协议来说了,做web开发的同学一定知道,http协议本身就是一种无状态的协议。
无状态是指服务器在接受到浏览器的请求的时候,直接将服务器的内容返回给浏览器,它是不管浏览器是谁请求的!这样就牵扯出一个问题,比如像咱们在京东上买东西的时候,如果你要买东西,打开页面,请求了京东的服务端,然后它将物品内容返回给你了,你妈妈也要买东西,结果服务器也将她要买的东西返回她了。但是上文说到了,http是无状态的,按理来说应该内容杂乱的返回到客户端了(此处杂乱是指服务端分不清应该将内容返回给谁…)所以聪明的人类创建出了cookie!
“Cookie”是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。这是很有用的,让浏览器记住这位访客的特定信息,如上次访问的位置、花费的时间或用户首选项(如样式表)。Cookie 是个存储在浏览器目录的文本文件,当浏览器运行时,存储在 RAM 中。一旦你从该网站或网络服务器退出,Cookie 也可存储在计算机的硬驱上。当访客结束其浏览器对话时,即终止的所有 Cookie。
在浏览器中,我们可以通过开发者工具来进行相关的查看!访问度娘,然后F12下,请看下图:
而此处会有一个安全问题(老式web,通过cookie进行登录),就那用户登录的例子来说,老式的登录通过cookie直接进行登录,你的用户名和密码也会在这里显示出来,一旦你的电脑被别人拿走,通过此方法便可以轻松看到你的密码。。。所以呢,新式的方法诞生了,session由此而生!
session
session :中文是会话的意思,它存储需要在整个用户会话过程中保持其状态的信息,例如登录信息或用户浏览 Web应用程序时需要的其它信息。
像上面看到的cookie,如果我们清空:
然后再次刷新,会看到相关信息再次回来!因为现在绝大多数网站已经采用了session的方式!
下面画了一张从请求到session再到cookie的有状态请求图,相信可以很容易帮助理解:
session是服务器生成的,它是在服务端的!从安全的角度来考虑,session是配有失效时间的,因为session也存在可能被黑客拦截的情况,若没有失效时间,黑客最终可以一直使用。
小结
了解session 和 cookie是做web服务用户登录时必不可少的知识点,以上呢就总结这么多,文章欠缺了源码展示,多为文字原理,可能会比较枯燥吧…若有错误,还望指出!