Python爬虫番外篇之Cookie和Session详解


Posted in Python onDecember 27, 2017

关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解

什么是Cookie

其实简单的说就是当用户通过http协议访问一个服务器的时候,这个服务器会将一些Name/Value键值对返回给客户端浏览器,并将这些数据加上一些限制条件。在条件符合时,这个用户下次再访问服务器的时候,数据又被完整的带给服务器。

因为http是一种无状态协议,用户首次访问web站点的时候,服务器对用户一无所知。而Cookie就像是服务器给每个来访问的用户贴的标签,而这些标签就是对来访问的客户端的独有的身份的一个标识,这里就如同每个人的身份证一样,带着你的个人信息。而当一个客户端第一次连接过来的时候,服务端就会给他打一个标签,这里就如同给你发了一个身份证,当你下载带着这个身份证来的时候,服务器就知道你是谁了。所以Cookie是存在客户端的,这里其实就是在你的浏览器中。

Cookie中包含了一个由名字=值(name=value)这样的信息构成的任意列表,通过Set-Cookie或Set-Cookie2HTTP响应(扩展)首部将其贴到客户端身上。如下图例子所示:

Python爬虫番外篇之Cookie和Session详解

其实这里有一个非常典型的应用,就是关于你登录很多网站的账号信息,你让记住密码之后,一段时间内,不需要输入密码,每次都是登录状态

Cookie的分类

这里Cookie主要分为两种:

会话Cookie:不设置过期时间,保存在浏览器的内存中,关闭浏览器,Cookie便被销毁

普通Cookie:设置了过期时间,保存在硬盘上

Cookie属性

因为最开始的cookie是网景公司定义的,后来又有了RFC版本所以当前的Cookie有两个版本:Version0Version1他们有两种设置响应头的标识,分别是:Set-Cookie和Set-Cookie2,这也造成了一些属性的不同,这里需要注意:常用的为Version0

Version0的属性

NAME=Value:键值对设置要保存的Name/Value,这里的name不能喝其他属性的名字一样

Expires:过期时间

Domain:生成该Cookie的域名

Path:该Cookie是在当前的哪个路径下生成

Secure:如果设置了这个属性,那么只会在SSH连接时才会回传该Cookie

Version1的属性

Name=VALUE:键值对设置要保存的Name/Value,这里的name不能喝其他属性的名字一样

Comment:主是想,用于说明该Cookie有什么用途

CommentURL:该服务器为此COokie提供URI注释

Discard:是否在回话结束丢弃该Cookie,默认为false

Domain:生成该Cookie的域名

Max-Age:最大失效时间,与Version0不同的是这里设置的是在多少秒后失效

Path:该Cookie是在当前的哪个路径下生成

Port:该Cookie在什么端口下可以回传服务端,如果有多个端口,以逗号隔开

Secure:如果设置了这个属性,那么只会在SSH连接时才会回传该Cookie

关于Session

上面我们知道了Cookie可以让服务器端跟踪每个客户端的访问,但是每次客户端的访问都必须传回这些Cookie,如果Cookie很多,这无形地增加了客户端与服务端的数据传输量,而Session的出现正是为了解决这个问题。

同一个客户端每次和服务端交互时,不需要每次都传回所有的Cookie值,而是只要传回一个ID这个ID是客户端第一次访问服务器的时候生成的,而且每个客户端是唯一的。这样每个客户端就有了一个唯一的ID,客户端只要传回这个ID就行了,这个ID通常是NANE为JSESIONID的一个Cookie。所以Session其实是利用Cookie进行信息处理的。

cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式。

cookie和session的区别是:cookie数据保存在客户端,session数据保存在服务器端。

cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,如果主要考虑到安全应当使用session,当然也没有绝对的安全,只是相对cookie,session更加安全

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用COOKIE

cookie和session各有优缺点,所以将登陆信息等重要信息存放为SESSION;其他信息如果需要保留,可以放在COOKIE中

总结

以上就是本文关于Python爬虫番外篇之Cookie和Session详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
在Django中创建动态视图的教程
Jul 15 Python
Python常用内置模块之xml模块(详解)
May 23 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
Python实现破解12306图片验证码的方法分析
Dec 29 Python
java中两个byte数组实现合并的示例
May 09 Python
python实现任意位置文件分割的实例
Dec 14 Python
PyCharm设置每行最大长度限制的方法
Jan 16 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
如何在Django配置文件里配置session链接
Aug 06 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python处理RSTP视频流过程解析
Jan 11 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 #Python
利用 python 对目录下的文件进行过滤删除
Dec 27 #Python
python中使用%与.format格式化文本方法解析
Dec 27 #Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 #Python
python中的迭代和可迭代对象代码示例
Dec 27 #Python
python并发编程之线程实例解析
Dec 27 #Python
Python实现连接postgresql数据库的方法分析
Dec 27 #Python
You might like
ezSQL PHP数据库操作类库
2010/05/16 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
百度地图API使用方法详解
2015/08/25 PHP
基于php实现的验证码小程序
2016/12/13 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JS 面向对象的5钟写法
2009/07/31 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
[44:40]Serenity vs Pain 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
革命先烈的英雄事迹材料
2014/02/15 职场文书
技能比武方案
2014/05/21 职场文书
土建专业毕业生自荐书
2014/07/04 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
Python何绘制带有背景色块的折线图
2022/04/23 Python