接口自动化之cookies\session\token请求流程

不同系统接口会有不同请求流程机制,常用比如cookies请求流程、session请求流程、token请求流程

1、cookies请求流程

下面例子是cookies请求处理处理,cookies请求处理比较简单,只需每次在请求头部带上cookies值即可

def test_login():
    url = 'http://www.renren.com/ajaxLogin/login'
    params = {'1':'1','uniqueTimestamp':'20201418255'}

    datas = {'email':'[email protected]','icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login',
         'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'}

    r = requests.post(url=url,params=params,data=datas)
    rt = r.text

    return r.cookies  #返回cookies

def test_profile():
    url = 'http://www.renren.com/273782860/profile'
    r= requests.get(url=url,cookies=test_login()) #调用时带上cookies
    print(r.text)

2、session请求流程

session请求流程处理与cookies类似,session其实就是cookie中存放着一个sessionID,请求时会发送这个ID,客户端再次发送请求,需要在请求头里面(cookie)带上返回的sessionID

处理思路:

1、发送登录请求
2、登录成功后,把sessionID的信息返回给客户端
3、客户端再次发送请求,需要在请求头里面(cookie)带上返回的sessionID

def test_login():
    url = 'http://www.renren.com/ajaxLogin/login'
    params = {'1':'1','uniqueTimestamp':'20201418255'}

    datas = {'email':'[email protected]','icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login',
         'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'}

    r = requests.post(url=url,params=params,data=datas)
    rt = r.text

    return r.cookies  #返回cookies

def test_profile():
    url = 'http://www.renren.com/273782860/profile'
    r= requests.get(url=url,cookies=test_login()) #调用时带上cookies
    print(r.text)

对cookies、session请求流程处理,还可以使用requests库中session会话进行处理

import requests

import requests

def test_login():
    url = 'http://www.renren.com/ajaxLogin/login'
    params = {'1':'1','uniqueTimestamp':'20201418255'}

    datas = {'email':'xxxxxx,'icode':'','origURL':'http://www.renren.com/home','domain':'renren.com','key_id':'1','captcha_type':'web_login',
         'password':'9476d406614f42ecefdaba8e9d525e14a20ea9b188e3a3c0c7741de13ca51e43','rkey':'7773848e037e15b9883721139f3c1ac4'}
    s = requests.session() #建立session会话
    r = s.post(url=url,params=params,data=datas)
    rt = r.text

    return s  #session


def test_profile():
    url = 'http://www.renren.com/273782860/profile'
    r= test_login().get(url=url)
    print(r.text)

3、token请求流程

token
令牌,是用户身份的验证方式。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。

token请求处理思路:

1)、发送请求登录
2)、登录成功后,服务端返回给客户端的响应数据中,包含了token
3)、客户端再次发送请求(比如查看各个人主页),那么就需要在客户端里面带上token,在请求中token参数一般有以下2种方式:
a、客户端的请求参数里面 {"user":3465,"token":"rtyuio45678fdg"}
b、在请求头里面

def login():
    data={"username":"admin","password":"admin"}
    r=requests.post(
        url='http://127.0.0.1:5000/login',
        json=data)
    return r.json()['access_token']  #返回token

def books():
    headers={'Authorization':'jwt {0}'.format(login())} #请求头内包含token
    r=requests.get(
        url='http://127.0.0.1:5000/profile',
        headers=headers)  #带上请求头
    print(r.text)

cookies、session、token之间区别 (以下内容转载至 https://blog.csdn.net/qq_37939251/article/details/83511451)

token
令牌,是用户身份的验证方式。
最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。
对Token认证的五点认识

一个Token就是一些信息的集合;
在Token中包含足够多的信息,以便在后续请求中减少查询数据库的几率;
服务端需要对cookie和HTTP Authrorization Header进行Token信息的检查;

session

会话,代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续。
cookie中存放着一个sessionID,请求时会发送这个ID;
session因为请求(request对象)而产生;
session是一个容器,可以存放会话过程中的任何对象;
session的创建与使用总是在服务端,浏览器从来都没有得到过session对象;
session是一种http存储机制,目的是为武装的http提供持久机制。

cookie
储存在用户本地终端上的数据,服务器生成,发送给浏览器,下次请求统一网站给服务器。

cookie与session区别
cookie数据存放在客户端上,session数据放在服务器上;
cookie不是很安全,且保存数据有限;
session一定时间内保存在服务器上,当访问增多,占用服务器性能。

session与token
作为身份认证,token安全行比session好;
Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问 某用户 的信息。

token与cookie
Cookie是不允许垮域访问的,但是token是支持的, 前提是传输的用户认证信息通过HTTP头传输;

token就是令牌,比如你授权(登录)一个程序时,他就是个依据,判断你是否已经授权该软件;cookie就是写在客户端的一个txt文件,里面包括你登录信息之类的,这样你下次在登录某个网站,就会自动调用cookie自动登录用户名;session和cookie差不多,只是session是写在服务器端的文件,也需要在客户端写入cookie文件,但是文件里是你的浏览器编号.Session的状态是存储在服务器端,客户端只有session id;而Token的状态是存储在客户端。


参考链接:https://blog.csdn.net/qq_37939251/article/details/83511451

猜你喜欢

转载自www.cnblogs.com/heertong/p/12433313.html