zoukankan      html  css  js  c++  java
  • 接口自动化之cookiessession oken请求流程

    不同系统接口会有不同请求流程机制,常用比如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':'xxxxx@163.com','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':'xxxxx@163.com','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

  • 相关阅读:
    通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)
    DALSA Coreco
    环境变量之执行文件路径的变量PATH
    命令与文件的查询
    软件开发工具GCC
    权限与命令之间的关系
    Linux防火墙
    网络管理
    分区及格式化
    VMware Workstation的网络连接方式:NAT、桥接和Host Only
  • 原文地址:https://www.cnblogs.com/heertong/p/12433313.html
Copyright © 2011-2022 走看看