# -*- coding: utf-8 -*- """抓取登录链路相关接口的线上黄金样本""" import re, json, requests from pathlib import Path from _root import ROOT GOLDEN = Path(str(ROOT / "golden")) GOLDEN.mkdir(exist_ok=True) src = Path(r"F:\import goods\upload_goods.py").read_text(encoding="utf-8") token = re.search(r'TOKEN\s*=\s*"([^"]+)"', src).group(1) BASE = "https://shop.qinys.cn/index.php?s=/store" H = {"Access-Token": token} def get(path, params=None, name=None): r = requests.get(BASE + path, headers=H, params=params or {}, timeout=30) try: d = r.json() except Exception: print(name, "非 JSON:", r.text[:200]); return None if name: (GOLDEN / name).write_text(json.dumps(d, ensure_ascii=False, indent=2), encoding="utf-8") print(f"--- {path} status={d.get('status')} msg={d.get('message')}") return d d = get("/store.user/info", name="store_user_info.json") if d and d.get("status") == 200: data = d["data"] print("顶层键:", list(data.keys())) ui = data.get("userInfo") or {} print("userInfo 键:", sorted(ui.keys())) roles = data.get("roles") or {} print("roles 键:", sorted(roles.keys())) perms = roles.get("permissions") or [] print("permissions 条数:", len(perms)) if perms: print("permissions[0]:", json.dumps(perms[0], ensure_ascii=False)[:400]) d2 = get("/store.menu/list", name="store_menu_list.json") if d2 and d2.get("status") == 200: data = d2["data"] print("menu data 类型:", type(data).__name__, "键:", list(data.keys()) if isinstance(data, dict) else len(data)) lst = data.get("list") if isinstance(data, dict) else data if isinstance(lst, list) and lst: print("菜单条数:", len(lst)) print("菜单[0]:", json.dumps(lst[0], ensure_ascii=False)[:400])