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()
本文来自博客园,作者:Test-L帅,转载请注明原文链接:https://www.cnblogs.com/laoshuai/p/17593361.html