画布 1
接口加密与解密
  环境准备
    1.对响应加密的接口.对它发起一个get请求后,得到一个加密过的响应信息.(如果有可用的加密过的接口以及了解它的解密方法,可以跳过)
    2.准备一个加密文件,如:
      https://ceshiren.com/t/topic/2094
    3.使用python命令在有加密文件的所在目录启动一个服务:
      python -m http.server 9999
    4.访问该网站:
      http://127.0.0.1:9999/
  原理
    得到响应后对响应信息做解密处理
      1.如果知道使用的是哪个通用加密算法的话,可自行解决.
      2.如果不了解对应的加密算法,可以让研发提供加解密的lib.
      3.如果既不是通用加密算法,研发也无法提供加解密的lib,可以让加密方提供远程解析服务,这样算法仍然是保密的.
  实战练习
    1.调用python自带的base64,直接对返回的响应做解密处理,即可得到解密后的响应
    2.封装对于不同算法的处理方法
    import base64
import json
import requests
def test_encode():
url = "http://127.0.0.1:9999/demo.txt"
r = requests.get(url=url)
print()
print(r.text)
print(r.content)
rencode_r1 = base64.b64decode(r.text)
rencode_r2 = base64.b64decode(r.content)
print(rencode_r1)
print(rencode_r2)
print(json.loads(rencode_r1))
print(json.loads(rencode_r2))
class TestApiRequestEncode:
#封装请求信息
res_data = {
"method":"get",
"url":"http://127.0.0.1:9999/demo.txt",
"headers":None,
"encoding":"other" #解码方式
}
#给request重新定义封装
def send(self,data:dict):
res = requests.request(data["method"],data["url"],headers=data["headers"])
if data["encoding"] == "base64":
return json.loads(base64.b64decode(res.content))
#其他加密方式
#如果是第三方加密,把加密过后的响应值发给第三方服务,让第三方去做解密然后返回解密过后的信息
elif data["encoding"] == "other":
print("设计中")
#return requests.post("第三方服务url",data=res.content)
def test_send(self):
print(self.send(self.res_data))