环境准备
在进行实战之前,需要先准备一个对响应加密的接口。对它发起一个 get 请求后,得到一个加密过后的响应信息。
先准备一个 JSON 格式 demo:
{"topics":
{
"orange":"movie",
"shool":"testing-studio",
"president":"seveniruby"
}
}
使用 base64 对其做加密,得到一个加密后的文件 demo64.txt
base64 demo.json >demo64.txt
使用 Python 命令在 “demo64.txt” 所在目录启动一个服务 10000指端口 ?
python -m http.server 10000
启动后的样子如图:
使用curl命令对这个服务进行get请求:
curl http://127.0.0.1:10000/demo64.txt
?如果请求成功的话就代表环境已经准备成功
下面是实战练习与封装思想
#前提环境:加密的接口响应内容在url='http://127.0.0.1:10000/demo.txt'
import base64
import json
import requests
#单个实现逻辑
def EncrytionDemo():
url="http://127.0.0.1:10000/demo.txt"
r=requests.get(url)
res=json.loads(base64.b64decode(r.content))
print(res)
#封装:原理得到响应内容,对响应的内容做解密处理
class ApiRequest:
#通过一个字典的结构体,保存所有的请求信息,包括发送的协议、解码方式、请求 method 等等,而这种字典形式的结构体也为后面的数据驱动改造做好了一个重要的铺垫。
def send(self,data:dict):
res=requests.request(data["method"],data["url"],headers=data["headers"])
#edcode代表data结构体里面传入的解密方式
#通过请求信息的结构体中的 edcode,添加判断条件,去选择不同的解密方式。
if data["edcode"]=="base64":
return json.loads(base64.b64decode(res.content))
#依次类推进行判断
elif data["edcode"]=="其他":
return requests.post("url",data=res.content)
#测试加密接口,进行断言
def test_encrytiondemo():
req_data={
"method":"get",
"url":"http://127.0.0.1:10000/demo.txt",
"header":None,
#代表传入的解密方式,字典结构体中添加一个 edcode 字段,用来判断选择的不同的加密条件。
"edcode":"base64"
}
#实例化封装的解密类
apirequest=ApiRequest()
#调用方法进行解密
apirequest.send(req_data)
#得到解密后的信息,进行断言
assert 1==1
|