python接口自动化之token登录

Python010

python接口自动化之token登录,第1张

前言

有些登录不是用cookie来验证的,是用token参数来判断是否登录。

token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已;另外一种是在url请求参数里,这种更直观。

一、登录返回token

1.如下图的这个登录,无cookies

2.但是登录成功后有返回token

二、请求头带token

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

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

三、token关联

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

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

import requests

header = { # 登录抓包获取的头部

"User-Agent": "Mozilla/5.0 (Windows NT 10.0WOW64rv:44.0) Gecko/20100101 Firefox/44.0",

"Accept": " / ",

"Accept-Language": "zh-CN,zhq=0.8,en-USq=0.5,enq=0.3",

"Accept-Encoding": "gzip, deflate",

"Content-Type": "application/x-www-form-urlencodedcharset=UTF-8",

"X-Requested-With": "XMLHttpRequest",

"Content-Length": "423",

"Connection": "keep-alive"

}

body = {"key1": "value1",

"key2": "value2"} # 这里账号密码就是抓包的数据

s = requests.session()

login_url = " http://xxx.login " # 自己找带token网址

login_ret = s.post(login_url, headers=header, data=body)

token = login_ret.json()["token"]

post_url = " http://xxx "

header["token"] = token

header["Content-Length"]="9"

body1 = {

"key": "value"

}

post_ret = s.post(post_url, headers=header, data=body1)

print post_ret.content

返回主页Maruying

博客园

首页

联系

管理

python中使用token模拟登录

背景:在接口测试中我们经常是需要一个登陆token,或者获取其他用到的参数来关联下一个接口用到的参数。

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 值不同: 说明原来的登录信息已经失效,让用户重新登录;

【案例实践】

本案例中登录接口返回的sign,作用类似于token值,即用该值关联下一个接口。

【 整体思路】

1、先进行登录操作,并从响应体中提取sign值;

2、将提取到的sign值传参到下一个接口的请求头he

注意:以下只是方法过程,具体变量参数得根据你们自己实际

import requests #导入包

header= {'Authorization':self.token}  #在头信息中添加token

param = {'productId':617,'currentUserId':1143}#这里是接口要传的参数,我用字典传

response = requests.post(self.url_add_Record,params=param,headers=header,)  #发送requests接口请求将url、params、heads传进去

res = response.json()#返回的response转化成json串

print(res) #打印res