06_request接口请求处理cookie鉴权token鉴权问题

1、方法1 手动关联token ,cookie 需要将 

(1)token和cookie值定义在类变量里面, 这样其他的方法才能通过类变量去引用

(2)res.cookies # 可以直接获取返回的cookie值

(3)我们一般通过正则表达式,获取token值,传递给下一个接口

token = re.search(r'csrf_token=(.*?); path=/;', res_header["set-Cookie"]).group(1)

r“表示原生字符串” 

group(1) 匹配第一个满足条件的值

class Test_php_api():
    # 定义一个全局的类变量.类变量的使用需要类来调用
    csrf_token = ""
    cookie_data = ""

    def test_first_page(self):
        url = "http://47.107.116.139/phpwind/"
        res = requests.get(url=url)
        result = res.text
        # print(result)
        # 处理相应头里面的返回的鉴权码
        res_header = res.headers
        # print(res_header)
        # 可以看出响应头返回的是一个字典的格式, 类变量的引用需要类来调用
        #  r 表示原生字符串(rawstring),该字符串声明了引号中的内容表示该内容的原始含义,避免了多次转义造成的反斜杠困扰。
        Test_php_api.csrf_token = re.search(r'csrf_token=(.*?); path=/;', res_header["set-Cookie"]).group(1)
        print(Test_php_api.csrf_token)
        # 处理cookie鉴权 res.cookies() 只有保存到类变量里面,下面的函数才能引用
        Test_php_api.cookie_data = res.cookies

    def test_login(self):
        url = "http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"
        data = {
            "username": "admin",
            "password": "msjy123",
            "csrf_token":  Test_php_api.csrf_token,
            "backurl": "http://47.107.116.139/phpwind/",
            "invite": ""
        }

        # 在请求结果如果返回的是 HTML 格式 ,需要检查请求头是否填写错误
        headers = {
            "Accept": "application/json, text/javascript, /; q=0.01",
            "X-Requested-With": "XMLHttpRequest"
        }
        res = requests.post(url=url, data=data, headers=headers,cookies=Test_php_api.cookie_data)
        print(res.text)
        #返回 message":["Sorry, CSRF verification failed(token missing or incorrect) ,当所有的参数都填写了,请求失败 考虑是需要进行cookie处理(cookie鉴权)

2、方法2 自动关联cookie值

sess = requests.session()  、此方法会自动获取cookie的值, 那么在后面的请求中,只需要用 requests.session 请求就可以一直保持 cookie的关联
import allure
import pytest
import requests
import random
import re



class Test_php_api():
    # 定义一个全局的类变量.类变量的使用需要类来调用
    csrf_token = ""
    # 第一步定义全局的seeion请
    sess = requests.session()


    def test_first_page(self):
        url = "http://47.107.116.139/phpwind/"
 
        # 第二步: 用session 去请求 ,请求方法一参数的形式传递
        res = Test_php_api.sess.request(method="get", url=url)
        res_header = res.headers
        Test_php_api.csrf_token = re.search(r'csrf_token=(.*?); path=/;', res_header["set-Cookie"]).group(1)
        print(Test_php_api.csrf_token)
 

    def test_login(self):
        url = "http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"
        data = {
            "username": "admin",
            "password": "msjy123",
            "csrf_token":  Test_php_api.csrf_token,
            "backurl": "http://47.107.116.139/phpwind/",
            "invite": ""
        }

        # 在请求结果如果返回的是 HTML 格式 ,需要检查请求头是否填写错误
        headers = {
            "Accept": "application/json, text/javascript, /; q=0.01",
            "X-Requested-With": "XMLHttpRequest"
        }
        res = Test_php_api.sess.request(method="post", url=url, data=data, headers=headers)
        print(res.text)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值