day3 第二讲
一、cookie和session
1,什么是cookie?
cookie是指网站为了鉴别用户身份,进行会话跟踪而存储在客户端本地的数据。
2、什么是session?
本来的含义是指有始有终的一系列动作,而在web中,session对象用来服务器存储特定用户会话所需要的属性及信息。
3、cookie和session产生的原因:
cookie和session他们不属于http协议范围,忧郁http协议是无状态,但实际情况,我们有需要保持一些信息,作为下次请求的条件,所有就产生了cookie和session。
4、cookie的原理:
由服务器产生,当浏览器第一次发送请求到服务器,服务器返回数据,同时生成一个cookie返回客户端,客户端将这个cookie保存下来。
当浏览器再次访问,浏览器就会自动带上cookie信息,这样服务器就能通过cookie判断是哪个用户在操作。
cookie的缺陷:
1,不安全----保存在客户端
2,cookie本身最大支持4096(4kb)---存储大小受限。
5,session的工作原理。
正是因为cookie的缺陷,所以产生了另外一种保持状态的方法–session。
服务器存储session,基于http协议的无状态特征,服务器就不知道这个访问是谁。为了解决这个问题,cookie就起到了桥的作用。cookie在使用的过程中,将一个叫做session的字段放到cookie中,将来服务器可以通过这个id字段来查找到地上那个用户的session。
session的生命周期,当用户第一次登陆时创建(生命开始),到session有限期结束(30min)。
6,当我们浏览器关闭,session是否就失效了?
否,当第一次登录后(生命开始),生命周期决定的
7,cookie组成:
name:cookie名称,一旦创建,不可更改。
value:该cookie的值
domain:这cookie可以访问网站域名。
maxage:cookie的失效时间。负数是永不失效。
path:这个使用路径
http字段:cookie的httponly,若此属性为true,则只有http头中会带此cookie。
secrue:该cookie是否仅被使用安全传输协议。
size:cookie的大小。
8,会话cookie和持久cookie。
持久化:将内存中的数据存储到硬盘(文件中,数据)上的过程。
序列化:将对象保存到硬盘上
会话cookie:保存在内存中cookie,浏览器关闭,cookie失效。
持久cookie:保存在硬盘上的cookei。
9、用requests实现登陆:
(1)只需要将【登陆后的】cookie字段封装在请求头中。(第一种容易被封)
(2)使用requests的session对象登陆
session对象可以记录登陆状态。
使用步骤:
#session:记录登陆状态
se = requests.Session()
data = {
‘email’:‘13016031459’,
‘password’:‘12345678’,
}
#此时se对象就保存了登陆信息
se.post(base_url,data = data,headers = headers)
index_url = ‘http://www.renren.com/971682585/profile’
#用se对象来进行个人首页的访问,就可以了
response = se.get(index_url,headers=headers)
if ‘鸣人’ in response.text:
print(‘登陆成功!’)
else:
print(‘登陆失败!’)