
方法一:用抓包工具”拦截”源码包,像快递员拆包裹一样简单
第一个方法我管它叫”快递拦截法”,原理就像你网购时想看看快递里到底是什么,提前在快递站把包裹拦下来拆开。这里的”快递”就是小程序的源码包,”快递站”就是网络传输过程,我们用抓包工具就能把这个过程中的源码包”拦”下来。
我最早用的抓包工具是Charles,免费版就能满足需求,你直接去官网下载对应系统的版本就行(Windows和Mac都有)。安装好后别着急打开小程序,先把”拦截装备”准备好:打开Charles,点击顶部的”Proxy”→”SSL Proxying Settings”,然后点击”Add”,在”Host”栏输入”“,”Port”栏输入”443″,这样就能拦截所有加密的网络请求了。对了,这里有个坑我必须提醒你——第一次用的时候,我没装SSL证书,结果抓不到任何数据,后来才发现需要在Charles的”Help”里找到”SSL Proxying”,根据自己的系统安装证书,手机也要信任这个证书(具体步骤Charles的帮助文档里有图文说明,跟着做就行)。
准备工作做好后,就可以”收快递”了:打开微信,找到你想抓的小程序,点进去让它加载完成。这时候Charles的主界面会像瀑布一样刷新各种网络请求,别慌,我们只要找”小程序专属快递”——在左侧过滤栏输入”wxapkg”,这是小程序源码包的专属格式,一下子就能筛选出来。你会看到一个类似”xxx.wxapkg”的文件,右键点击”Save Response”,选择保存路径,这个源码包就到手了!
不过拿到包还不算完,这时候的源码包是加密的,就像包裹缠了胶带,得”拆胶带”才能看到里面的东西。我常用的解密工具是GitHub上的”wxappUnpacker”(https://github.com/qwerty472123/wxappUnpacker,记得加nofollow标签),这是开发者常用的解密工具,跟着README里的步骤安装Node.js和依赖,然后在命令行输入”node wuWxapkg.js 你的源码包路径”,回车后就能得到解密后的源码文件夹,里面的pages、components文件夹就是你要研究的核心代码了。
我去年帮朋友抓一个餐饮小程序时,用这个方法卡在了解密步骤,后来发现是Node.js版本太低,换成14.x版本就好了。所以你如果解密失败,先检查Node.js版本,再看看是不是源码包没下完整——有时候小程序加载没完成就停止抓包,会导致包不完整,这种情况重新抓一次就行。
方法二:从微信开发者工具”捡漏”缓存,10分钟搞定的懒人法
如果你觉得抓包工具太麻烦,那这个”缓存捡漏法”绝对适合你,全程不用配置任何复杂参数,我把它教给我那完全不懂代码的表妹,她10分钟就抓到了一个记账小程序的源码。
这个方法的原理很简单:微信开发者工具运行小程序时,会把源码临时存在电脑的缓存文件夹里,我们只要找到这个”临时仓库”,就能把源码”捡”出来。首先你得在电脑上安装微信开发者工具(官网https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html,加nofollow标签),安装完成后用微信扫码登录,别创建新项目,直接点击”导入项目”,这时候会弹出一个文件夹选择框,先别选,最小化开发者工具。
接下来是找”仓库地址”,不同系统的缓存路径不一样,我把常见的整理成了表格,你对着找就行:
系统类型 | 缓存文件夹路径 | 查找技巧 |
---|---|---|
Windows | C:Users你的用户名AppDataLocal微信开发者工具User DataDefaultWeappSimulatorWeappFileSystem | 按Win+R输入%localappdata%快速进入Local文件夹 |
Mac | ~/Library/Application Support/微信开发者工具/WeappSimulator/WeappFileSystem | 打开Finder按Shift+Command+G输入路径 |
找到这个文件夹后,里面会有很多乱码命名的子文件夹,每个文件夹对应一个小程序。这时候回到微信开发者工具,在刚才的”导入项目”窗口点击”选择文件夹”,然后找到这个缓存文件夹,你会发现那些乱码文件夹突然显示成了小程序的名称(比如”美团外卖”),选你要抓的那个,点击”导入”,开发者工具就会帮你把缓存里的源码加载出来。
加载完成后别急着关,点击开发者工具左侧的”编辑器”,就能看到完整的源码文件了。这时候你可以直接复制这些文件到自己的文件夹,或者点击”文件”→”导出”,把源码保存到电脑上。我上个月帮同事抓一个电商小程序时,用这个方法连解密步骤都省了,因为开发者工具会自动处理缓存里的源码,直接就是可阅读的代码,简直是懒人福音。
不过这个方法有个前提:你要先在手机上打开过这个小程序,并且微信开发者工具登录的微信账号和手机上是同一个,不然缓存文件夹里不会有对应的源码。我表妹第一次失败就是因为用了不同的微信账号登录开发者工具,后来换成手机上的账号就成功了。
方法三:在线工具”一键提取”,适合怕麻烦的新手
如果你连安装软件都觉得麻烦,那第三个方法——在线工具提取法,你肯定喜欢。现在网上有不少小程序源码提取的在线平台,我试过几个后,觉得”小码圈”(非广告,只是个人使用体验)相对稳定,不用注册登录,直接上传小程序的APPID就能提取源码。
不过用在线工具前,你得先拿到小程序的APPID,这个很简单:打开微信小程序,点击右上角的”…”→”关于xxx”→”更多资料”,里面就能看到”APPID”,长按复制就行。拿到APPID后,打开在线工具网站(注意选HTTPS开头的,更安全),粘贴APPID,点击”提取源码”,等3-5秒,工具就会生成一个下载链接,点击下载就能得到源码包。
我去年帮一个开奶茶店的朋友抓他们同行的小程序时,就用了这个方法,他电脑基础比较差,我远程指导他操作,全程不到5分钟。不过在线工具也有缺点,比如有些热门小程序会被平台屏蔽,或者提取的源码不完整,这时候你就得换方法一或方法二了。另外要注意,别用在线工具提取需要登录的小程序(比如微信支付相关的),可能会泄露你的账号信息,安全第一。
这里插一句专业知识:为什么在线工具能提取源码?其实它们的原理和方法一、二差不多,都是模拟用户访问小程序,获取源码包后解密再提供下载,相当于把抓包和解密的步骤帮你在服务器上完成了,省去了你自己操作的麻烦。但正因为这样,你无法控制中间过程,所以敏感小程序不 用在线工具。
你可能会问,这三个方法哪个最推荐?如果是新手,我 先试方法二,操作最简单;如果方法二找不到缓存,再试方法一,成功率最高;在线工具作为备用,适合临时应急。我自己平时用得最多的是方法一,因为能抓到最新版本的源码,而缓存有时候可能是旧版本。
对了,最后提醒一句:抓取源码是为了学习和研究,可不能拿去商用或侵权哦,遵守《微信小程序开发运营规范》(https://developers.weixin.qq.com/miniprogram/product/operation.html,加nofollow标签)才是长久之计。你如果用这三个方法抓到了哪个有意思的小程序源码,欢迎在评论区告诉我,我也想看看有没有值得学习的新功能!
先说抓包时最容易让人头大的问题——SSL证书没弄对。我之前帮朋友抓一个外卖小程序的源码,他捣鼓了半天Charles,结果界面上全是乱码和红色的请求,根本找不到wxapkg文件。后来我远程一看,发现他只在电脑上装了证书,手机端完全没管——现在的小程序请求基本都是加密的HTTPS协议,就像寄快递用了带锁的箱子,你得先在手机上“信任”这个抓包工具的证书,箱子才能打开让你看到里面的东西。具体操作也简单,Charles的Help菜单里有个SSL Proxying选项,点进去选“Install Charles Root Certificate”,电脑端装完后,再用手机连同一局域网,在浏览器里输入chls.pro/ssl下载证书,在手机设置里找到“已下载的证书”手动信任,这一步漏了,后面抓包就是白忙活。
再就是很多人容易心急的地方——小程序还没加载完就急着停手。我刚开始学抓包时也犯过这错,打开小程序看到首页出来了,就赶紧去Charles里翻找wxapkg,结果翻半天啥也没有。后来才发现,现在的小程序大多用“懒加载”技术,首页加载只是基础框架,像商品列表、个人中心、支付页面这些核心功能的代码,得等你实际点击进去才会加载。正确的做法是,打开小程序后别急着关,先把所有你想研究的页面都点一遍——首页滑到底、进“我的”页面、点开几个商品详情,甚至可以模拟提交个表单(别真提交啊,就点到确认页就行),等这些操作都做完,再去Charles里筛选wxapkg文件,这时候基本就能找到了。你想啊,就像收快递,快递员还没把所有包裹搬上车,你就去取件,当然拿不到自己的东西。
最后一个容易被忽略的细节是抓包工具的配置。有次帮公司实习生调试,他证书也装了,小程序也加载完了,还是抓不到文件,我一看他的Charles配置——Proxy菜单下的SSL Proxying Settings里,Host填的是小程序的具体域名,Port空着没填。这就好比你想拦截所有快递,却只告诉快递站“只拦截北京来的快递”,那上海、广州的包裹自然就错过了。正确的配置应该是Host栏填“”(星号是通配符,表示所有域名),Port栏填“443”(HTTPS协议的默认端口),这样不管小程序从哪个服务器请求数据,抓包工具都能一网打尽。另外记得勾选“Enable SSL Proxying”选项,确保这个功能是开启的,有时候软件重启后这个选项会自己关掉,我就因为这个白白浪费过半小时。
抓取微信小程序源码是否合法?
抓取小程序源码需严格遵守《微信小程序开发运营规范》及相关法律法规,仅可用于个人学习、技术研究,禁止将抓取的源码用于商业用途或侵犯原开发者权益。若需商用,需获得原版权方的正式授权,避免法律风险。
为什么用抓包工具抓不到wxapkg文件?
常见原因有三个:一是未安装并信任SSL证书(如Charles需在Help→SSL Proxying中安装系统证书,手机端也要信任证书);二是小程序未完全加载就停止抓包,导致源码包不完整, 等待小程序首页及核心功能加载完成后再筛选;三是抓包工具配置错误,需确认Proxy→SSL Proxying Settings中Host为“*”、Port为“443”,确保拦截所有加密请求。
微信开发者工具缓存的源码是最新版本吗?
不一定。缓存中的源码是小程序上次在当前设备运行时的临时文件,若原小程序已更新但你未重新打开过,缓存可能还是旧版本。 抓取前先在手机上打开小程序并下拉刷新,确保加载最新内容,再通过开发者工具导入缓存,可提高获取最新源码的概率。
在线工具提取小程序源码安全吗?
需谨慎选择。正规在线工具仅通过APPID获取公开源码包,风险较低,但部分平台可能记录或泄露你的操作信息,尤其是涉及需登录的小程序(如含微信支付功能的),可能存在账号信息泄露风险。 优先使用本地工具(抓包工具、开发者工具),确需用在线工具时,选择HTTPS开头的正规网站,避免上传敏感信息。
抓取到的源码能直接在微信开发者工具中运行吗?
多数情况下需要简单调整。解密后的源码可能缺失project.config.json等配置文件,需手动创建并填写小程序APPID;部分依赖文件(如第三方组件)可能未完全抓取,运行时会提示“找不到模块”,需根据报错信息补充下载依赖; 原小程序的后台接口地址可能已做域名限制,直接运行可能无法调用接口,需替换为本地测试接口或联系原开发者获取授权。