9 Commits
Author SHA1 Message Date
TermiNexus a83f2a5407 feat(ws-hook): 控制台实时打印每个 WebSocket 的地址、关闭码与存活时长 2026-10-19 22:36:34 +08:00
TermiNexus ae4d4ee055 fix(mirror): ws 抓包开关改为 serve.js --ws-hook(不碰 URL),避免 hash 破坏游戏路由
- 实测:URL 里任何 hash(包括 #hook/#nohook)都会让游戏进不去战场(游戏用 location.hash 做路由/状态),所以弃用 hash 开关

- serve.js --ws-hook:服务 HTML 时注入 /ws_hook.js;Start-LocalAndRelay.ps1 加 -Hook 开关;ws_hook.js 支持 localStorage.hornetWsHook=0 临时关闭

- index.html(本地)移除静态 ws_hook 引入
2026-10-11 21:43:12 +08:00
TermiNexus d6758b14e1 fix(mirror): ws 抓包降到最小入侵(只包 send + on* 访问器,热路径只拷贝不编码)
- 不再包装 addEventListener(会破坏 removeEventListener 的按引用移除);游戏只用 onopen/onclose/onmessage

- 逐帧 base64 推迟到 __ws_save__(),去掉战斗入口的收发延迟
2026-10-11 21:31:16 +08:00
TermiNexus 240892c9b5 fix(mirror): ws 抓包改为原型级 hook(不动 window.WebSocket 构造函数),避免被游戏察觉
- 实测替换构造函数会让 WebSocket.toString() 不再是 native code → 进不去战场;改为只包 WebSocket.prototype 的 send / addEventListener / onmessage|onopen|onclose 访问器

- window.WebSocket 的名字/长度/toString/instanceof/静态常量全部保持原生
2026-10-11 20:54:38 +08:00
TermiNexus c021d5c164 fix(mirror): ws 抓包 ToBase64 分块降到 8192,远离 apply 实参上限
- String.fromCharCode.apply 会把参数数组整包展开成实参,块过大必爆栈(V8 上限约 6.5 万);原 32768 虽安全但偏高,降到 8192
2026-10-11 20:49:41 +08:00
TermiNexus 245e27e192 chore(mirror): ws 抓包未启用时也定义 __ws_save__,调用时提示加 #hook 2026-10-11 20:43:14 +08:00
TermiNexus ba56ab9d7c change(mirror): 页面内 ws 抓包改为默认关闭(URL 加 #hook 才启用)
- 之前默认一直挂 window.WebSocket;为避免干扰排查(先排除 SW/hook 因素),改为显式 #hook 才抓;#nohook 仍可强制关
2026-10-11 20:14:40 +08:00
TermiNexus 418298e2ec feat(mirror): 页面内 window.WebSocket 抓包(/ws_hook.js),用于与中继转存逐帧对比
- sockets/ws_hook.js:hook window.WebSocket,按收发顺序记录 {d,t,n,b(base64)};__ws_save__() 存到 3DTank/names/,离开页面自动 sendBeacon;#nohook 关闭

- serve.js:根路径提供 /ws_hook.js(no-cache)

- web/index.html:在主脚本之前引入,确保先于游戏创建 WebSocket
2026-10-11 20:04:23 +08:00
TermiNexus f1c9d903fa Test Version 2026-07-28 01:16:15 +08:00