首页 > 编程语言 >Python_16 session、cookie 鉴权

Python_16 session、cookie 鉴权

时间:2023-05-08 23:26:15浏览次数:50  
标签:请求 Python json token session cookie 参数

一、查缺补漏

  1. pprint
    https://www.cnblogs.com/yjybupt/p/10669988.html
    https://www.cnblogs.com/wongbingming/p/12854618.html
  2. 鉴权:
    http://testingpai.com/article/1621929988356
  3. import json
    json.dump() 转成json
    json.loads() 转成字符串
  4. cookie可以带各种 可以带session,session+token,token可以通过set-cookie传,也可以通过别的请求头传,这些都是灵活的,全看后端开发怎么解析,session一般是只能通过响应的set-cookie返回,请求的时候再通过cookie字段带过去
二、鉴权
  1. session、cookie 鉴权
    a. 使用MD5、RSA(看不懂的字符串)加密,创建一个session对象id和cookie存在mysql或者redis(非关系型数据库)中
    b. cookie是前端的一种缓存机制,参数存在缓存里,session是后端生成的
    c. 不知道是什么鉴权可以去问开发
  2. token 鉴权 解放了缓存,不用存储,每次都要计算,消耗cpu但是不消耗内存,cpu比较便宜
    a. 注册(数据库存储用户名和密码)
    b. 登陆(提交用户名+密码)
    c. 后端获取到用户名密码(进行校验密码和用户名是否与数据库存储的一致)
    d. 给我令牌(token)
    e. 算法生成token(rootAa12345620412010) 生成token和解析token的规则是固定的
    f. 返回给客户端
    g. 客户端再次请求接口带上token
    h. 后端接收到token并解析token(rootAa12345620412010)
    i. 抽取时间戳(20412010)和id10用户的唯一标识
    j. 通过用户唯一标识去数据库找到生成token需要的数据
    k. 再生成一次token(rootAa12345620412010) 时间戳都是使用之前传递的时间戳,当再次生成时才换掉
    l. 拿新生成的和你给我的对比 + 时间戳间隔对比
     用当时的时间戳和之前的做对比(间隔多长时间是由后端决定的)判断token时效是否过期
     m. token一致就返回接口数据
  3. session、cookie 鉴权和token 鉴权的区别
    a. session会消耗内存要到库里对比,token不消耗内存只需要cpu计算
    b. token相对安全,使用RSA非对称加密,但是token可逆
    c. session会通过存储一般是不可逆的
  4. 重点
    a. token生成规则(后端决定)
    b. 如何校验token正确性、如何校验token有效时间
    c. token替换规则(后端决定)
    d. 用例执行时token失效,直接重新获取就好,异常捕获,重新获取token,pytest可以错误重试
    e. 鉴权方式和token有效时间可以问开发
三、requests
  1. 一些概念:
    a. 什么叫接口
      i. USB:传数据
      ii. 互联网:用来传数据
    b. 接口必要数据
      i. 请求地址: https://openapiv5.ketangpai.com/UserApi/login
      ii. 请求方法:post、get
      iii. 请求数据:
      iv. 响应参数:
    c. 使用:requests支持所有的http请求方式
  2. get请求:requests.get(url=url,params=None,**kwargs)
    a. url:请求地址
    b. params=None:请求参数
    c. **kwargs:其他字段
    d. 参数放在url后面:直接拼接可一个新的url
      如 url :'http://httpbin.org/get?key1=val1&key2=val2'
    e. 参数使用params关键字接收,会自动拼接到url地址后面
    f. ?:表示后面都是查询参数,key1=val1形式展示,多个参数使用&进行连接
  3. post请求 requests.post(url,data=None,json=None,**kwargs)
    a. url: 请求地址
    b. data=None:请求参数
    data关键字:默认form表单'Content-Type': 'application/x-www-form-urlencoded'
    如果设置请求头headers = {'Content-Type': 'application/json;charset=UTF-8'},就使用设置的方式
    c. json=None:请求参数
    json关键字:默认json模式 'Content-Type': 'application/json;charset=UTF-8'
    如果设置请求头headers = {'Content-Type': 'application/x-www-form-urlencoded'},就使用设置的方式
    d. **kwargs:接收其他字段
  4. post的参数格式
    a. application/x-www-form-urlencoded
    默认地,表单数据会编码为 “application/x-www-form-urlencoded”。就是说,在发送到服务器之前,所有字符都会进行编码,空格转换为 “+” 加号,特殊符号转换为 ASCII HEX 值。
    窗体数据被编码为:名称/值对,这是标准的编码格式。
    b. application/json
    数据以 JSON 形式进行编码
    c. multipart/form-data,头像
    窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分,上传附件用到。在使用包含文件上传控件的表单时,必须使用该值。
    d. text/html
    文本方式的网页文件。
    e. text/xml
    文本方式的 XML 文件,text/xml 忽略 XML 头所指定编码格式而默认采用 US-ASCII 编码。
    f. text/plain
    窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。空格转换为 “+” 加号,但不对特殊字符编码。
    g. application/xml
    数据以 XML 形式进行编码,application/xml 会根据 XML 头指定的编码格式来编码。
三、POST与GET区别
  1. 参数传递
    get:放在请求地址后面,查询数据,向后端获取数据,传的是查询参数(where条件)
    post:放在body里面,提交参数,OCR参数、图片、文件
  2. 参数长度
    get、post参数长度实际上是由后端配置决定,并不是请求本身决定
    get请求会做参数大小的限制:比较小
    post请求也会做参数大小限制:稍微大一些
  3. 安全性
    get参数暴露在浏览器地址上
    post放在body里面,需要抓包才能看见
  4. 幂等性
    a. 处理同一个请求的重复发送的方式
      get请求查询一次和查询N次得到的结果都是一样 select * from user where id = 100;
      post请求提交数据:注册,需要做幂等处理 insert into tabel()value();
    b. 金融行业前端防多点(防止并发),后端幂等(请求数据一样,则只处理一条请求)

标签:请求,Python,json,token,session,cookie,参数
From: https://www.cnblogs.com/Alisa-sweet/p/17383479.html

相关文章

  • Python爬虫零基础教学第二天
    Python爬虫高级开发/大数据抓取/从入门到精通/商业项目实战(2)开始时间2023-05-08 21:26:37结束时间2023-05-08 23:08:20一、调试模式的介绍 鼠标右键,在出现的选项中找到检查进入调试模式,或者按键盘上的f12键进入调试模式。  二、Cookie使用cookie进行会话保持 ......
  • 在 Python 中将 Tqdm 与 Asyncio 结合使用
    动动发财的小手,点个赞吧!简介困扰在Python中使用并发编程来提高效率对于数据科学家来说并不罕见。在后台观察各种子进程或并发线程以保持我的计算或IO绑定任务的顺序总是令人满意的。但是还有一点困扰我的是,当我在后台并发处理成百上千个文件或者执行成百上千个进程时,我总......
  • Django高级之-cookie与session
    目录1背景信息cookie的介绍cookie的由来什么是cookiecookie的原理Cookie规范Cookie的覆盖在浏览器中查看cookiesession的介绍session的由来什么是sessiontoken的介绍token的由来什么是token?Django操作cookie设置cookie获取cookie删除CookieCookie版登录校验案例Django操作Session......
  • Python - 并发模型
    importitertoolsimporttimefromthreadingimportThread,Eventdefspin(msg:str,done:Event)->None:forcharinitertools.cycle(r'\|/-'):#1status=f'\r{char}{msg}'#2print(status,end=''......
  • python14:递归函数
    概念:在一个函数内部不调用其他函数,而是自己本身的话,这个函数就是递归函数。优点:看起来简单缺点:容易导致栈溢出,占内存。例子:defjiecheng(n):#result=1#foriteminrange(1,n+1):#result*=item#pass#returnresult##print('结果为:{}'.form......
  • Python + Selenium,分分钟搭建 Web 自动化测试框架!
    在程序员的世界中,一切重复性的工作,都应该通过程序自动执行。「自动化测试」就是一个最好的例子。随着互联网应用开发周期越来越短,迭代速度越来越快,只会点点点,不懂开发的手工测试,已经无法满足如今的业务要求,只能被企业逐步裁员淘汰。「自动化测试和持续测试」就成为了业界主流。......
  • python GUI(beeware) + uiautomator2 实现root后的安卓手机自动执行脚本
    python环境:python3.81:安装beewarebeeware教程:https://docs.beeware.org/en/latest/tutorial/tutorial-2.html2:安装python模块uiautomator23:测试代码代码结构 app.py"""Myfirstapplication"""fromtoga.styleimportPackfrom.dy_dianzanim......
  • 深入理解 python 虚拟机:描述器的王炸应用-property、staticmethod 和 classmehtod
    深入理解python虚拟机:描述器的王炸应用-property、staticmethod和classmehtod在本篇文章当中主要给大家介绍描述器在python语言当中有哪些应用,主要介绍如何使用python语言实现python内置的proterty、staticmethod和classmethod。property当你在编写Python代码......
  • Python实操面试题
    1、一行代码实现1--100之和#利用sum()函数求和sum(range(1,101))2、如何在一个函数内部修改全局变量#利用global在函数声明修改全局变量a=5deffunc(): globalaa=10func()print(a)#结果:103、列出5个python标准库'''os:提供了不少与操作系统......
  • python-Queue队列
    队列Queue提供同步的、线程安全的队列类,可以用于线程之间的线程通信。queue模块实现了多生产者、多消费者队列。这特别适用于消息必须安全地在多线程交换的线程编程。该模块实现了三种类型的队列,它们的区别是任务取回的顺序。在FIFO队列中,先添加任务的先取回。在LIFO队列中,最......