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的缺陷
- 不安全,保存在客户端
- cookie本身最大支持4kb,存储大小受限
5. session的工作原理
-
正是因为 cookie的缺陷,所以产生了另外一种保持状态的方法—session
-
服务器存储session,基于http的无状态特征,所以服务器不知道这个访问者是谁.为了解决这个问题,cookie就起到桥的作用.在cookie中存入一个sessionid字段,将来服务器可以通过这个id字段找到对应哪个用户的session.
-
session的生命周期—当用户第一次登录时到session有效期结束.
6.当我们浏览器关闭,session是否就失效了呢?
- 不失效,原因是session失效是由生命周期决定的.
7. cookie的组成
- name: cookie名称,一旦创建不可更改.
- value: 该cookie的值
- domain 该cookie可以访问的网站域名.
- maxage: 该cookie的失效时间,负数是永不失效.
- path: 可以访问该cookie的路径
- http字段:cookie的httponly,若此属性为True,则只有在HTTP头中会带有此Cookie的信息,而不能通过document.cookie来访问此Cookie。
- secrue: 该cookie是否仅被使用安全传输协议
- size: cookie的大小
8. 会话cookie和持久cookie
-
持久化: 将内存中的数据存储到硬盘(文件中,数据库)上的过程.
-
序列化: 将对象保存到硬盘上.
-
会话cookie: 保存在内存中的cookie,浏览器关闭,cookie失效
-
持久cookie: 保存在硬盘上的cookie.
9.用requests实现登录
(1) 只需要将登录后的cookie字段封装在请求头中.
(2) 使用requests的Session对象登录
Session对象可以记录登录状态.
使用步骤:
import requests
base_url = "http://www.renren.com/PLogin.do"
headers = {
'User-Agent': '******',
'Referer': '******',
}
# Session 记录登录状态
se = requests.Session()
data={
'email':'******',
'password':'123456789',
}
se.post(base_url, data=data,headers=headers)