3.5 KiB
3.5 KiB
name, description
| name | description |
|---|---|
| mp-weixin-verify | fly-home customer-app(uni-app)本机小程序端自动化验证完整配方——构建、微信开发者工具 automator 连接、登录态注入、观测探针、分包坏态修复。当需要在微信小程序端走查/验证页面、注入 toc 登录态、复现砍价/下单等 C 端链路时使用。触发关键词:小程序验证、小程序走查、automator、mp-weixin 联调、小程序登录态注入。 |
小程序端本机验证配方(fly-home customer-app)
经验证链路(2026-09-17 砍价 9370 七轮探针定论,勿回退)。适用 codes/fly-home-customer-app。
链路总览
corepack pnpm dev:mp-weixin # pnpm 不在 PATH,node 默认 v24 可用;产物 dist/dev/mp-weixin
→ 微信开发者工具 cli.bat auto --project <dist> --auto-port 9420
→ miniprogram-automator connect({wsEndpoint:'ws://localhost:9420'})
→ 驱动走查 + 截图存证
工具位置:
- DevTools CLI:
F:\tools\微信开发者工具\微信web开发者工具\cli.bat(不在默认 Program Files) - automator:装在
%TEMP%\mpauto(npm i miniprogram-automator,勿入项目依赖)
坑(按代价排序,全部实测)
- 服务端口必须人工开:CLI 全家族强制"设置→安全设置→服务端口",SendKeys/配置直改都绕不过,需人工开一次
- kill 自动化会话会留分包坏态:症状=该分包页面"NavBar 壳在、正文全空、wx://not-found、无 JS 异常、重连无效"。必须重启 IDE + 新开 cli auto。pagesGoods/createOrder 这类重分包页 IDE 重启后首次进入也常空渲染——先单独 reLaunch 该页等正文出现再驱动
- 会话生命周期:
mp.close()连带杀 9420 端口;复跑用mp.disconnect()只断 ws 再重起 cli auto;9420 起不来先杀僵尸 node.exe - dist 是否含新代码:别 grep import 名(编译改写),grep 函数体引用(如 getBargainZone)
- 小程序请求走
.env.development.local的 VITE_BASE_URL(本机联调指 localhost:8092 网关);dist project.config.json 需 urlCheck=false 才能请求 localhost
登录态注入(关键)
- 存储键 =
<VITE_APP_TITLE>__<版本>__TOKEN__大写(实测得依享家__2.1.0__TOKEN__),值 = JSON 壳{value, time, expire}(dev 不加密;wx.getStorageInfoSync看真键) - expire 必须是未来毫秒时间戳(对齐 setToken 默认 7 天):getCache 对
expire:null会当场 remove 该键——症状"注入回读 OK、首个请求即未登录",曾误判为导航擦除存储 - 写与导航分两步:evaluate 写完回读 ack → 原生
mp.reLaunch(evaluate 内 wx.reLaunch 在新会话不可靠) - USER__INFO__ 同壳同键族,USER_INFO_KEY='USER__INFO__'
- token 从 dev redis(192.168.1.101:6379 db1 ruoyi123)scan
Authorization:login:token:*按 payloadtoc_user:<id>匹配;用前 curl 实测有效性(same-token 频繁互踢,批量测试前先重扫)
观测三件套(比猜页面状态快得多)
- hook
wx.showToast存_toastlog(业务错误/拦截全走 toast) - hook
wx.request记 url+method - 包
opts.success截关键接口响应体(如 createBuy)
业务墙
- 每日发起/帮砍限额是真业务墙:联调日用满 5 次 dailyLaunchLimit 换 toc 测试用户(dev 库 userId 21/110/133/160 轮用)
- 助推手段:
UPDATE bargain_order SET current_price=1, cut_amount=原价-1(dev 库)