grab_auth_golden.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # -*- coding: utf-8 -*-
  2. """抓取登录链路相关接口的线上黄金样本"""
  3. import re, json, requests
  4. from pathlib import Path
  5. from _root import ROOT
  6. GOLDEN = Path(str(ROOT / "golden"))
  7. GOLDEN.mkdir(exist_ok=True)
  8. src = Path(r"F:\import goods\upload_goods.py").read_text(encoding="utf-8")
  9. token = re.search(r'TOKEN\s*=\s*"([^"]+)"', src).group(1)
  10. BASE = "https://shop.qinys.cn/index.php?s=/store"
  11. H = {"Access-Token": token}
  12. def get(path, params=None, name=None):
  13. r = requests.get(BASE + path, headers=H, params=params or {}, timeout=30)
  14. try:
  15. d = r.json()
  16. except Exception:
  17. print(name, "非 JSON:", r.text[:200]); return None
  18. if name:
  19. (GOLDEN / name).write_text(json.dumps(d, ensure_ascii=False, indent=2), encoding="utf-8")
  20. print(f"--- {path} status={d.get('status')} msg={d.get('message')}")
  21. return d
  22. d = get("/store.user/info", name="store_user_info.json")
  23. if d and d.get("status") == 200:
  24. data = d["data"]
  25. print("顶层键:", list(data.keys()))
  26. ui = data.get("userInfo") or {}
  27. print("userInfo 键:", sorted(ui.keys()))
  28. roles = data.get("roles") or {}
  29. print("roles 键:", sorted(roles.keys()))
  30. perms = roles.get("permissions") or []
  31. print("permissions 条数:", len(perms))
  32. if perms:
  33. print("permissions[0]:", json.dumps(perms[0], ensure_ascii=False)[:400])
  34. d2 = get("/store.menu/list", name="store_menu_list.json")
  35. if d2 and d2.get("status") == 200:
  36. data = d2["data"]
  37. print("menu data 类型:", type(data).__name__, "键:", list(data.keys()) if isinstance(data, dict) else len(data))
  38. lst = data.get("list") if isinstance(data, dict) else data
  39. if isinstance(lst, list) and lst:
  40. print("菜单条数:", len(lst))
  41. print("菜单[0]:", json.dumps(lst[0], ensure_ascii=False)[:400])