style: 统一 Ruff 代码格式
This commit is contained in:
@@ -12,6 +12,7 @@ mall 加密链路(E3 已验证,U-2022 闭环):
|
||||
注意:xMidasOps 是 mall 详情页页面级数据表(59620 长度,服务端生成),
|
||||
必须从浏览器捕获(与 goods 的 59640 不同)。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import copy
|
||||
@@ -24,9 +25,28 @@ from .algorithm import UNDEF, JSObject, Window
|
||||
from .pagedoo_vm import PagedooVM
|
||||
|
||||
REPLAY = Path(__file__).resolve().parent.parent / "replay" / "mall"
|
||||
GLOBALS = [UNDEF, None, True, False, 4294967295, 3995986053, 2103143698, 1622111212,
|
||||
4263108271, 3162892160, 1960464030, 2867129963, 3224029870, 3514649446,
|
||||
1382846327, 1898428403, 1268470028, 1457769175, 1595352606, 1100935262]
|
||||
GLOBALS = [
|
||||
UNDEF,
|
||||
None,
|
||||
True,
|
||||
False,
|
||||
4294967295,
|
||||
3995986053,
|
||||
2103143698,
|
||||
1622111212,
|
||||
4263108271,
|
||||
3162892160,
|
||||
1960464030,
|
||||
2867129963,
|
||||
3224029870,
|
||||
3514649446,
|
||||
1382846327,
|
||||
1898428403,
|
||||
1268470028,
|
||||
1457769175,
|
||||
1595352606,
|
||||
1100935262,
|
||||
]
|
||||
|
||||
|
||||
class MallSession:
|
||||
@@ -45,9 +65,13 @@ class MallSession:
|
||||
|
||||
def validate(self) -> None:
|
||||
if len(self.transform_input) != 18:
|
||||
raise ValueError(f"transform_input 应为 18 槽,实际 {len(self.transform_input)}")
|
||||
raise ValueError(
|
||||
f"transform_input 应为 18 槽,实际 {len(self.transform_input)}"
|
||||
)
|
||||
if len(self.xmidas_ops) != 59620:
|
||||
raise ValueError(f"mall xMidasOps 应为 59620(非 goods 59640),实际 {len(self.xmidas_ops)}")
|
||||
raise ValueError(
|
||||
f"mall xMidasOps 应为 59620(非 goods 59640),实际 {len(self.xmidas_ops)}"
|
||||
)
|
||||
mid = self.transform_input[10]
|
||||
if isinstance(mid, list) and mid and isinstance(mid[0], list):
|
||||
if len(mid[0]) != 624:
|
||||
@@ -61,7 +85,11 @@ class MallSession:
|
||||
- J|...|e377650|{JSON} e377650 创建参数(transform_input)
|
||||
- XMIDAS_OPS|url|59620数组 mall 详情页 xMidasOps
|
||||
"""
|
||||
lines = Path(frames_jsonl).read_text(encoding="utf-8", errors="replace").splitlines()
|
||||
lines = (
|
||||
Path(frames_jsonl)
|
||||
.read_text(encoding="utf-8", errors="replace")
|
||||
.splitlines()
|
||||
)
|
||||
transform_input = None
|
||||
xmidas = None
|
||||
# xMidasOps:取 mall 详情页(z.iwan / pagedoo)那条
|
||||
@@ -85,7 +113,9 @@ class MallSession:
|
||||
transform_input = json.loads(l.split("|e377650|", 1)[1])
|
||||
break
|
||||
if transform_input is None:
|
||||
raise ValueError("frames.jsonl 中未找到 e377650 J 转储(需 mall 详情页购买触发加密)")
|
||||
raise ValueError(
|
||||
"frames.jsonl 中未找到 e377650 J 转储(需 mall 详情页购买触发加密)"
|
||||
)
|
||||
if xmidas is None:
|
||||
raise ValueError("frames.jsonl 中未找到 59620 长度 xMidasOps")
|
||||
return cls(transform_input, xmidas)
|
||||
@@ -112,8 +142,18 @@ def _mk_window(xmidas: list) -> Window:
|
||||
w.set("sessionStorage", JSObject())
|
||||
w.set("screen", JSObject())
|
||||
w.set("history", JSObject())
|
||||
w.set("XMLHttpRequest", type("XHR", (), {
|
||||
"open": lambda *a: None, "send": lambda *a: None, "setRequestHeader": lambda *a: None}))
|
||||
w.set(
|
||||
"XMLHttpRequest",
|
||||
type(
|
||||
"XHR",
|
||||
(),
|
||||
{
|
||||
"open": lambda *a: None,
|
||||
"send": lambda *a: None,
|
||||
"setRequestHeader": lambda *a: None,
|
||||
},
|
||||
),
|
||||
)
|
||||
w.set("fetch", lambda *a: None)
|
||||
w.set("xMidasOps", xmidas)
|
||||
return w
|
||||
@@ -143,5 +183,7 @@ def generate_encrypt_msg(session: MallSession, random_seed: int = 1) -> str:
|
||||
|
||||
h9 = h[9][0] if isinstance(h[9], list) and h[9] else h[9]
|
||||
if not isinstance(h9, list) or len(h9) != 624:
|
||||
raise RuntimeError(f"e377650 输出异常: {type(h9).__name__} len={len(h9) if isinstance(h9, list) else '?'}")
|
||||
raise RuntimeError(
|
||||
f"e377650 输出异常: {type(h9).__name__} len={len(h9) if isinstance(h9, list) else '?'}"
|
||||
)
|
||||
return "".join(f"{x & 255:02x}" for x in h9)
|
||||
|
||||
Reference in New Issue
Block a user