case02.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import base64
  2. import binascii
  3. import random
  4. from fastapi import APIRouter, Depends, HTTPException, Query, Form
  5. from app.common import util
  6. from app.common.schema import ApiResultSchema
  7. from app.common.response import ApiResult
  8. router = APIRouter()
  9. @router.post("/search", name="查询网盘提取码", description="""
  10. #### 测试数据
  11. - url: `0f5e94524cbcf7faRys1SkxMWjRMdks2VDUzeVJVa0s5WGwvWkF6ZmJqNk1qcGJwenN0M1REUT0K`
  12. - device_id: `0f5e94524cbcf7fa`
  13. - timestamp: `1611275090557`
  14. """, response_model=ApiResultSchema)
  15. async def search(
  16. url: str = Form(..., title="百度网盘分享链接", description="百度网盘分享链接,算法:`device_id + base64(aes(url))`"),
  17. device_id: str = Form(..., title="设备标识", description="设备标识"),
  18. timestamp: str = Form(..., title="时间戳", description="时间戳"),
  19. ):
  20. if url is None or device_id is None or timestamp is None:
  21. return ApiResult.error_msg("参数错误")
  22. urlBase64 = url.replace(device_id, "")
  23. try:
  24. urlAES = base64.b64decode(urlBase64)
  25. except:
  26. return ApiResult.error_msg("参数错误")
  27. urlFinal = util.aes_decrypt(_key, urlAES)
  28. if urlFinal is None or urlFinal.isspace() or len(urlFinal) == 0:
  29. return ApiResult.error_msg("参数错误")
  30. if 1 - urlFinal.startswith("https://pan.baidu.com/"):
  31. return ApiResult.error_msg("非百度网盘分享链接")
  32. code = str(random.randint(1000, 9999))
  33. codeHex = binascii.hexlify(code.encode("utf-8")).decode('utf-8')
  34. return ApiResult.success_data({"code": codeHex})
  35. # DATA
  36. _key = "FVYL5DONEY7OEIVE".encode("utf-8")