Python接口自动化 —— token登录(详解)

news2025/2/22 2:38:22

简介

为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。有些登录不是用 cookie 来验证的,是用 token 参数来判断是否登录。token 传参有两种一种是放在请求头里,本质上是跟 cookie 是一样的,只是换个单词而已;另外一种是在 url 请求参数里,这种更直观。

登录返回token

1、如下图的这个登录接口,就是没有 cookies的登录接口。

2、但是这个登录接口,登录成功后有返回token,如下图

请求头带token

1、登录成功后继续操作其它页面,发现post请求的请求头,都会带有token参数

2、这种请求其实比cookie更简单,直接把登录后的token放到头部即可

token关联

1、用脚本实现登录,获取token参数,获取后传参到请求头就可以了

2、如果登录有验证码,前面的脚本登录步骤就省略了,自己手动登录后获取token

参考代码

 1 # coding:utf-8
 2 import requests
 3 header = {   # 登录抓包获取的头部
 4         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
 5         "Accept": "*/*",
 6         "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
 7         "Accept-Encoding": "gzip, deflate",
 8         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
 9         "X-Requested-With": "XMLHttpRequest",
10         "Content-Length": "423",
11         "Connection": "keep-alive"
12         }
13 body = {"key1": "value1",
14         "key2": "value2"}  # 这里账号密码就是抓包的数据
15 s = requests.session()
16 login_url = "http://xxx.login"   # 自己找带token网址
17 login_ret = s.post(login_url, headers=header, data=body)
18 # 这里token在返回的json里,可以直接提取
19 token = login_ret.json()["token"]
20 # 这是登录后发的一个post请求
21 post_url = "http://xxx"
22 # 添加token到请求头
23 header["token"] = token
24 # 如果这个post请求的头部其它参数变了,也可以直接更新
25 header["Content-Length"]="9"
26 body1 = {
27          "key": "value"
28          }
29 post_ret = s.post(post_url, headers=header, data=body1)
30 print post_ret.content

小结

Token的意义及用法

一.Token的来源:

       当客户端多次向服务端请求数据时,服务端就需要多次从数据库中查询用户名和密码并进行对比,判断用户名和密码是否正确,并作出相应提示。但这样无疑会增加服务器端的运行压力,是否可以有一种方式只需要验证用户就是之前的用

户而不需要每次在客户端请求数据时都需要查询数据库判断用户名和密码是否正确。在这种请求下,引入了token来解决服务器端多次访问数据库问题。

1、什么是Token: 

       Token是服务端端生成的一串字符串,作为客户端进行请求时辨别客户身份的的一个令牌。当用户第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

2、使用Token的目的: 

Token的目的是为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

二. Token的运用流程:

1、当用户首次登录成功之后, 服务器端就会生成一个 token 值,这个值,会在服务器保存token值(保存在数据库中),再将这个token值返回给客户端;

2、客户端拿到 token 值之后,进行保存 (保存位置由服务器端设置);

3、以后客户端再次发送网络请求(一般不是登录请求)的时候,就会将这个 token 值附带到参数中发送给服务器.;

4、服务器接收到客户端的请求之后,会取出token值与保存在本地(数据库)中的token值进行比较;

5、如果两个 token 值相同, 说明用户登录成功过!当前用户处于登录状态;

6、如果没有这个 token 值, 没有登录成功;

7、如果 token 值不同: 说明原来的登录信息已经失效,让用户重新登录;

8、Django Rest framework中JWT的使用稍有差异,这里不做详细说明。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人大与加拿大女王大学金融硕士——带你了解GMAT考试为何如此重要

随着社会经济的发展,金融行业的优势愈发明显。越来越多的人想要进入金融行业发展,但学历往往成为了敲门砖。自人大与加拿大女王大学金融硕士项目创办以来,受到了许多学子及在职人士的欢迎,但想要报考人大加拿大女王大学金融硕士项…

一文讲清楚webpack和vite原理

一、前言 每次用vite创建项目秒建好,用vue-cli创建了一个项目,却有点久,那为什么用 vite 比 webpack 要快呢,这篇文章带你梳理清楚它们的原理及不同之处!文章有一点长,看完绝对有收获! 目录&a…

nginx之location的优先级和nginx的重定向

一、nginx之location的优先级和匹配方式(重点) (一)nginx的正则表达式 nginx的正则表达式 符号 含义 ^ 字符串的起始位置(以什么开头) $ 字符串的结束位置(以什么结尾) * 匹…

漏洞复现(CVE-2023-35843)

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

Nginx正向代理配置(http)

前言 在工作中我们经常使用nginx进行反向代理,今天介绍下怎么进行正向代理,支持http请求,暂不支持https 首先先介绍下正向代理和反向代理。 正向代理 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问。 反向代理 客户端只…

字符串匹配——KMP算法

目录 KMP(Knuth Morris Pratt) KMP算法复杂度分析 字符串匹配中除了简单的BF(Brute Force)、RK(Rabin-Karp)算法,还有更高效、较难理解的 BM(Boyer-Moore)和KMP&#…

Android之根据时区获取当前时间

文章目录 前言偶尔我们也会做多个国家的APP,难免少不了时间显示,所以我们就需要获取当前时区的当前时间,几句代码解决、 一、效果图二、实现步骤1.TimeUtil2.调用 总结 前言 偶尔我们也会做多个国家的APP,难免少不了时间显示&…

从公司搭建的gitlab代码仓拉取代码失败问题

从gitlab代码仓拉取代码失败问题解决 1.问题描述2.分析解决3.解决问题 1.问题描述 1.在访问到从公司搭建的gitlab代码仓后,选择了要拉取的地址,使用git拉取代码时,拉取失败,报错如下 2.分析解决 1.因为网页可以看到代码仓中这…

yolov7模型训练环境安装

ANACONDA Free Download | Anacondahttps://www.anaconda.com/download/进入ANACONDA安装的盘后输入python测试环境是否安装完成 进入 cd Scripts后 在同路径下下载,pip install opencv-python cd.. 退回上层 python 打开’ import cv2 cv2.__version__…

Redis学习1

NOSql型数据库 NoSQL(Not Only SQL)是一种数据库管理系统的范畴,它不使用传统的关系型数据库管理系统(RDBMS)模型。相对于传统的关系型数据库,NoSQL 数据库在数据存储和检索方面提供了更多的灵活性和可伸缩…

B端企业为什么需要软文推广?媒介盒子告诉你

在传统的营销概念中,大部分人认为B端企业不需要品牌曝光,企业只需要靠质量与服务就能获得稳定客源,而在互联网加速发展的今天,B端企业的营销方式也发生变化,有不少B端企业来找媒介盒子进行软文推广,接下来媒…

Git遇到问题收集

您的企业已过期或者超过配额,请升级或续订! 如何解决: 此问题是企业仓库满额导致,联系公司的gitee管理人员进行处理

c++图像处理-----自适应阈值操作:`cv::adaptiveThreshold()`

自适应阈值操作:cv::adaptiveThreshold() cv::adaptiveThreshold()是OpenCV库中的一个函数,用于图像处理中的自适应阈值二值化操作。这个函数通常用于将灰度图像转换为二值图像,其中每个像素的阈值是根据其周围邻域的像素值自动确定的&#…

(2023|CVPR,中文,扩散,知识增强,去噪专家组合)ERNIE-ViLG 2.0:利用知识增强的去噪专家组合改进文本到图像扩散模型

ERNIE-ViLG 2.0: Improving Text-to-Image Diffusion Model with Knowledge-Enhanced Mixture-of-Denoising-Experts 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 …

Windows 进程监视工具

Windows 进程监视器是一种工具,可帮助 IT 管理员监视其 Windows IT 基础结构终结点中的关键进程,并确保其持续可用性、一致的运行状况和最佳性能。通过主动监视关键服务,Windows 进程监视器可帮助 IT 管理员确保其 Windows 进程不会意外关闭或…

纯 CSS 实现瀑布流布局的方法

纯 CSS 实现瀑布流布局的方法 这种方式兼容性不是很好,全部支持需要些时间,但是目前是可以使用 css 写出来的 display: grid; grid-template-columns: repeat(4, 1fr); grid-gap: 10px; grid-template-rows: masonry;全部的 css .container {display:…

C语言中的文件操作函数

C语言中的文件操作函数_c语言文件操作函数_点子李的博客-CSDN博客C语言文件操作_c语言文件操作函数https://blog.csdn.net/qq_53332052/article/details/128470575?utm_mediumdistribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-1-128470575-blog-125…

【ROS】ros-noetic和anaconda联合使用(1)

【ROS】ros-noetic和anaconda联合使用(1) 文章目录 【ROS】ros-noetic和anaconda联合使用(1)1. 安装anaconda2. 创建虚拟环境3. 查看python解释器路径4. 在虚拟环境中使用任意的包5. 创建工作空间和ros功能包进行测试Reference 1.…

Liunx系统管理的引导过程与服务控制

引导过程: liunx系统的开机过程: 开机自检(BIOS):linux主机开机之后,根据主板BIOS中的设备,对CPU内存 显卡 键盘等等设备进行初步检测 检测成功之后,根据预设的启动柜顺序进行系统控制权的移交 一般情况下&#xf…

阿里云云安全中心详细介绍(原态势感知)功能价格说明

阿里云云安全中心(原态势感知)是一个实时识别、分析、预警安全威胁的服务器主机安全管理系统,云安全中心功能支持漏洞扫描与修复、基线检查、防勒索、防病毒、防篡改、威胁检测模型等功能,云安全中心基础版免费、防病毒班432元一年…