P3鉴权(caokie鉴权和session鉴权)

五、鉴权(caokie鉴权和session鉴权token鉴权)

鉴权:鉴定是否有访问接口的权限
鉴权返回方式:
1、返回的HTML源码中包括有csrf_token鉴权码,如:<input type-"hidden" name="csrf_token"value="bb77911d24647537*/>

2、返回的响应头的cookle中包含有csrf_token鉴权码,如:csrf_token:bb77911d24b47537

要到如果cookies取值则要打印cookies信息

    def test_file_upload(self):

        res3 = requests.get(url="http://47.107.116.139/phpwind/")
        print(res3.text)
        print(res3.cookies)  #打印cookies信息

#<input type="hidden" name="csrf_token" value="08f267e5a5e4ff07"/><input type="hidden" name="csrf_token" value="08f267e5a5e4ff07"/>

session和token都可以使用cookie传输。

提取token鉴权方法和提取cookies鉴权方法一

import requests,jsonpath,pytest           #导入包
import re

class TestApi:
    access_token =""  #token定一个变量
    index_cookies = ""  # cookies定一个变量   cookies获取方法一

    def test_file_upload(self):
        res3 = requests.get(url="http://47.107.116.139/phpwind/")
        result = res3.text  # 先把返回结果保存到一个变量里面,如:result
        print(result)   #打印结果获取token边界值<input type="hidden" name="csrf_token" value="08f267e5a5e4ff07"/>
        # 提取token鉴权值方法
        TestApi.access_token = re.search('name="csrf_token" value="(.*?)"', result).group(1)  # 正则表达式/.group(1)只取一个值
        print(TestApi.access_token) # 打印提取的token值,看是否正确
        # 提取cookies鉴权值方法
        TestApi.index_cookies = res3.cookies    #cookies获取方法一
        print(TestApi.index_cookies)    #打印获取的cookies

    def test_login(self):
        urls = "http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"
        headers = {
            "Accept": "application/json,text/javascript, /; q=0.01",  # 客户端要求接收什么数据类型
            "X-Requested-With": "XMLHttpRequest"  # 异步请求
        }
        datas = {
            "username": "bailisss",
            "password": "123456",
            "csrf_token": TestApi.access_token,  # access_token鉴权码要从test_file_upload结果取,也就是TestApi.access_token
            "back_url": "http://47.107.116.139/phpwind/",
            "invite": ""
        }

        res4 = requests.post(url=urls, data=datas, headers=headers, cookies=TestApi.index_cookies)# cookies鉴权码要从test_file_upload结果取,也就是TestApi.index_cookies

        print(res4.json())

提取cookies鉴权方法一

import requests,jsonpath,pytest           #导入包
import re

class TestApi:

    index_cookies = ""  # cookies定一个变量   cookies获取方法一

    def test_file_upload(self):
        res3 = requests.get(url="http://47.107.116.139/phpwind/")
        result = res3.text  # 先把返回结果保存到一个变量里面 ,如:resul

        # 提取cookie鉴权值方法
        TestApi.index_cookies = res3.cookies    #cookies获取方法一

        print(TestApi.index_cookies) #打印提取的cookies值,看是否正确

提取cookies鉴权方法二,发送session请求
session请求与requests请求的区别:
1、session表示一个会话,例如:打电话,从打通到挂断中间有很多话,每句话就是一个请求,同一个会话内可以说很多话,也就是可以发很多请求,一个会话内的请求他们cookies是自动关联的

import requests,jsonpath,pytest           #导入包
import re

class TestApi:
    access_token =""
    sess = requests.session()  #cookies获取方法二,通过session发送请求

    def test_file_upload(self):
        res3 = TestApi.sess.request("get",url="http://47.107.116.139/phpwind/")

        result = res3.text  #  先把返回结果保存到一个变量里面 ,如:result
        TestApi.access_token = re.search('name="csrf_token" value="(.*?)"', result).group(1)  # 正则表达式/.group(1)只取一个值

        print(TestApi.access_token)

    def test_login(self):
        urls = "http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun"
        headers = {
            "Accept": "application/json,text/javascript, /; q=0.01",  # 客户端要求接收什么数据类型
            "X-Requested-With": "XMLHttpRequest"  # 异步请求
        }
        datas = {
            "username": "bailisss",
            "password": "123456",
            "csrf_token": TestApi.access_token,  # 鉴权码要从test_file_upload结果取
            "back_url": "http://47.107.116.139/phpwind/",
            "invite": ""
        }
        res4 = TestApi.sess.request(method="post",url=urls, data=datas, headers=headers)

        print(res4.json())


if __name__ == '__main__':
    pytest.main()

posted @ 2023-07-31 14:22  Test-L帅  阅读(10)  评论(0编辑  收藏  举报