Requests库02|Cookie和Session

目录

四、Cookie

1、Cookie简介

2、Cookie+Session认证方式

3、案例:代码理解即可

五、Session(重要)

1、Session简介

2、Session自动管理Cookie

3、案例

六、Cookie和Session的区别

七、获取指定响应数据(重要)


四、Cookie

1、Cookie简介

简介:是工程师针对 http协议是无连接、无状态特性,所设计的 一种技术。 该技术可以在浏览器端存储用户的信息。

特性:

  • cookie 用于存储用户临时的、不敏感的信息。
  • cookie 位于浏览器(客户端)端。默认大小 4k(可以调整)
  • cookie 中的数据,可以随意被访问,没有安全性可言。
  • cookie 中存储的数据类型, 受浏览器限制。

2、Cookie+Session认证方式

在计算机中,认证用户身份的方式有多种!课程中接触2种:

3、案例:代码理解即可

完整实现 TPshop商城登录。

(针对tpshop商城:获取cookie的途径是,在登录界面,也就是首页,每次点击验证码图片,响应回来的数据会携带session_id, 之后登录时携带存储session_id的cookie就可以登录成功了)

  • 获取验证码:http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify
  •                     该url可以通过抓包获取:开发者工具-点击验证码图片-抓到get请求
  • 登录:http://demo6.tp-shop.cn/index.php?m=Home&c=User&a=do_login&
  • 我的订单:http://tpshoptest.itheima.net/Home/Order/order_list.html
注意,获取登录请求的时候,代码中data中verify的值为8888,代表验证码的值,但是由于现在tpshop商城改版了,验证码不是固定的8888了,所以这段代码现在运行还是会显示验证码错误。如果能获取每次响应回来的验证码内容,运行结果应该显示登录成功。

五、Session(重要)

1、Session简介

简介:也叫 会话。通常出现在网络通信中,从客户端借助访问终端登录上服务器,直到退出登录 所产生的通信数据,保存在会话中。

特性:

  • Session 用于存储用户的信息。
  • Session 位于服务端。大小直接使用服务器存储空间。
  • Session 中的数据,不能随意被访问,安全性较高。
  • Session 中存储的数据类型,受服务器影响,几乎能支持所有的数据类型。

2、Session自动管理Cookie

因为 Cookie 中的数据,都是 Session 传递的。因此,Session 可以直接自动管理cookie

3、案例

  • 创建一个 Session 实例。
  • 使用 Session 实例,调 get方法,发送 获取验证码请求。(不需要获取cookie)
  • 使用 同一个 Session 实例,调用 post方法,发送 登录请求。(不需要携带 cookie)
  • 使用 同一个 Session 实例,调用 get方法,发送 查看我的订单请求。(不需要携带 cookie)
import requests
 
# 1. 创建一个 Session 实例。
session = requests.Session()
 
# 2. 使用 Session 实例,调 get方法,发送 获取验证码请求。(不需要获取cookie)
resp_v = session.get(url="http://tpshop-test.itheima.net/index.php?
m=Home&c=User&a=verify&r=0.21519623710645064")
 
# 3. 使用 同一个 Session 实例,调用 post方法,发送 登录请求。(不需要携带 cookie)
resp = session.post(url="http://tpshop-test.itheima.net/index.php?
m=Home&c=User&a=do_login&t=0.7094195931397276",
 data={"username": "13012345678", "password": "12345678", "verify_code": 
"8888"})
print(resp.json())
 
# 4. 使用 同一个 Session 实例,调用 get 方法,发送 查看我的订单请求。(不需要携带 cookie)
resp_o = session.get(url="http://tpshop-test.itheima.net/Home/Order/order_list.html")
print(resp_o.text)

六、Cookie和Session的区别

1. 数据存储位置: cookie存储在浏览器;session存储在服务器。

2. 安全性: cookie中的数据可以随意获取,没有安全性可言。Session的数据多为加密存储,安全较高!

3. 数据类型: cookie支持的数据类型受浏览器限制,较少;Session直接使用服务器存储,支持所有数据类型。

4. 大小: cookie大小默认 4k; Session 大小约为服务器存储空间大小。

七、获取指定响应数据(重要)

常用:

获取 URL:resp.url

获取 响应状态码:resp.status_code

获取 Cookie:resp.cookies

获取 响应头:resp.headers

获取 响应体:

        文本格式:resp.text

        json格式:resp.json()                                           

import requests
 
resp = requests.get(url="http://www.baidu.com")
 
# - 获取 URL:resp.url
print("url =", resp.url)
 
# - 获取 响应状态码:resp.status_code
print("status_code =", resp.status_code)
 
# - 获取 Cookie:resp.cookies
print("cookies =", resp.cookies)
 
# - 获取 响应头:resp.headers
print("headers =", resp.headers)
 
# - 获取 响应体:
# - 文本格式:resp.text
print("body_text =", resp.text)
 
# - json格式:resp.json() 当显示 JSONDecodeError 错误时,说明 resp 不能转换为 json格式数据。
print("body_json =", resp.json())

全部内容:

Requests库01|使用Requests库发送 get/post/put/delete请求-优快云博客

Requests库02|Cookie和Session-优快云博客

Requests库03|Unittest框架集成Requests库-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值