杰哥的AI踩坑日记 on X

@jev_chat

【我让 Codex 把小程序扒下来了,你也可以试试(附提示词)】

我们平时经常会想学习一下别人的小程序,但又需要挨个点来点去。我就在想这个东西是不是能有比较简单的办法,然后去 GitHub 上搜了一下,哎,还真有!

我以下所有的内容,都是基于我自己的小程序做的测试。

免责声明:别拿这个干非法的事哦!!

整个流程就四步:

1. 装好 Node 和 wedecode;

1. 在电脑端微信里把页面都点一遍;

1. 把下面这段提示词扔给 Codex;

1. 看它整理出来的对账表。

着急用的直接往下照着做就行,原理我放到了后半部分。

第一步:装好 Node 和 wedecode

GitHub:github.com/biggerstar/wedecode

作者的一句话介绍:微信小程序源代码还原工具,线上代码安全审计

电脑里先装好 Node.js,然后跑一下 npm i wedecode -g,只要 wedecode --version 能正常吐出版本号就没问题。我自己用的是 0.10.6,手头能正常跑的就别急着升级了。【当然也可以交给codex去搞】

第二步:在电脑端微信里把页面点一遍

小程序代码是分主包和分包的,分包得等你点进对应页面,微信才会把它下到本地。所以打开你自己的小程序,正常登录进去,把想看的页面挨个点一遍,每页等它彻底加载完,顺手记一下大概的时间点。

没点过的页面,回头解出来全都是空壳。要是碰上需要绑定、付费或者实名的页面,停住,别硬往里闯。

第三步:把这段话发给 Codex

把能干什么、不能干什么提前跟它交代清楚,省得它碰到拿不准的地方一步一问,或者顺手把你电脑的环境给改了。

第四步:看它交回来的对账

它跑完之后会交给你一张表,盯紧三件事就行:app.json 里一共声明了几个分包,本地实际抓到了几个,还有哪里的分包 JS 文件只有十几字节。

这三点要是都对得上,就算解完了。如果发现有空壳,就倒回第二步去把漏掉的页面重新点一遍,换个新的输出目录让它再跑一趟。

到这儿就能用了。要是好奇它背后到底干了些什么,接着往下看。

原理:其实就四件事

包在哪

电脑端微信会把小程序缓存成 .wxapkg 格式,存放在 radium 目录下的 users 里,再往下一层层是账号哈希、applet\packages、appid 和版本号。其中 __APP__.wxapkg 是主包,名字前后都带下划线的就是分包。由于账号哈希每台电脑都不一样,所以提示词里我让 Codex 直接从 users 这层往下递归找,不把路径写死。

怎么认出是你的

同一时间冒出来的包可能不止一个,中间还夹杂着公共库 publicLib。Codex 主要是拿你点页面的时间点、前后多了哪些新文件,以及同一个 appid 下的版本目录去匹配。要是筛不出唯一的目标,它就会停下来找你确认,这条也写在提示词里了。

wedecode 干了什么

它负责拆包,把编译过的文件尽可能还原成页面、样式、脚本和 app.json。这里的核心在于:必须把主包和分包塞进同一个目录,再把整个目录喂给它,分包才能顺带着还原出来。我一开始只丢了主包过去,结果分包目录虽然搭出来了,里面塞的全是占位文件。

这里解出来的只是前端编译后的产物,并不是带完整注释的原始工程,更不是后端。

为什么要对账

那些占位文件同样带了 .js、.wxml、.json,光扫一眼目录觉得整整齐齐,很容易误判。真正区分还得看 JS 的文件体积:装了真实代码的分包加起来往往有几十万字节,而占位文件每页大概也就十几个字节。

我踩过的坑

第一个坑,扫缓存的时候一直报“未找到”,但缓存明明躺在那儿。其实是我手头老的扫描脚本还死守着以前的 Applet\packages,新版微信早换地方了。直接从 users 往下递归去找就没问题,别为这个去重装微信。

第二个坑,解出来的分包全是空壳。原因无非两个:要么是页面漏点了导致分包根本没下下来,要么是图省事只给 wedecode 丢了主包。解决办法就是去补点页面,把主包分包放一块儿,整包目录交出去跑。

第三个坑,看到目录都在就误以为全解出来了。我第一次就差点直接下结论说“分包齐了”,结果拉出字节数一核对,好几个分包每页 JS 就只有 18 字节。

除了上面这三点,顺带提两个细节。一个是 wedecode 带的 --clear 会把旧输出清空,所以每次跑都新建个输出目录,省得手滑把之前的笔记给冲掉了。另一个是工具自动统计出来的“接口数 0”并不代表真没有接口,动态拼接的请求正则根本抓不出来,这种还是得肉眼去翻请求封装。

顺便提醒一句:不管是解出来的代码还是原始包,都别上传到任何地方;中间要是翻出了密钥、token 或者其他人的业务接口,就停手。

边界

这套方案只能帮你看到前端的页面和结构,至于后端代码、数据库和线上配置是完全摸不到的,也不会给你提供越过登录、加密或者付费的手段。另外微信的缓存路径和 wedecode 后续版本随时可能变动,换了新机器记得先重新核对一下。

跑通流程只是第一步。要是中间卡在哪儿了,把截图甩我就行。

以上内容是按 2026 年 10 月我这台机器上的环境整理的。提示词给的是整理后的版本;至于解出来的代码能不能直接塞进微信开发者工具里编译跑起来,我没试过。

开源 Jev 聊天助手作者,13 年开发、8 年项目管理。

想用 AI 又怕走弯路,关注 @jev_chat,帮你绕开我踩过的坑。

Open on X

This is a saved copy. The original post may have changed or been removed.

Save or view another post