数据采集,逆向学习,练手某国民应用

摘自个人印象笔记,图不完整可查看原笔记:https://app.yinxiang.com/fx/c021af2d-9b6f-42fc-af05-71cf7c929e1c

某某源码获取

  • 安装夜神模拟器,在模拟器上安装wx,打开“wx指数”小%程%序%
  • 用RE管理器找到根目录下的wxapkg后缀的文件,代码一般在:
    /data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg/下
  • 将目录下所有wxapkg文件全部压缩,拷贝出来,准备反编译
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5roJzJRp-1691719083034)(en-resource://database/1452:1)]
  • 用CrackMinApp或wxappUnpacker进行反编译:
CrackMinApp:

CrackMinApp:https://github.com/Cherrison/CrackMinApp,注意要将CrackMinApp/nodejs/nodejs/node_modules.zip解压到当前目录。
将wxapkg文件放到CrackMinApp/wxapkg目录下,用UI进行反编译操作。
如果使用UI无法反编译,可用命令行执行: node .\wuWxapkg.js {wxapkg目录及文件名称全路径}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1YPGeGV-1691719083037)(en-resource://database/1454:1)]

wxappUnpacker:

wxappUnpacker:原仓库已被删除,这是别人fork的:https://github.com/system-cpu/wxappUnpacker
在wxappUnpacker目录中,执行以下命令安装依赖:

 npm install
 npm install esprima
 npm install css-tree
 npm install cssbeautify
 npm install vm2
 npm install uglify-es
 npm install js-beautify

然后执行反编译:node .\wuWxapkg.js {wxapkg目录及文件名称全路径}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MrF8eIXU-1691719083037)(en-resource://database/1456:1)]

wx开发工具编辑源码

  • 开发工具打开编译后的源码目录,依次解决提示的错误:
  • 主要错误如:
  1. app.json配置错误,解决方法:根据app-config.json的内容逐个尝试替换
  2. miniprogram_npm 目录下的 weui-miniprogram 包与扩展库 weui 发生冲突错误,解决方法:删除miniprogram_npm目录下的weui-miniprogram目录即可
  3. Error: xxx.js 已被代码依赖分析忽略,无法被其他模块引用:
    解决方法:https://developers.weixin.qq.com/community/minihome/article/doc/00020631afc6c8c6f62e7b91855c13
  4. _typeof3 is not a function,解决方法:
    找到 @babel/runtime/helpers/typeof.js 全部换为以下内容:(https://www.fenxianglu.cn/note/detail/399)
function _typeof2(o) {
  "@babel/helpers - typeof";
  return (_typeof2 = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
    return typeof o;
  } : function (o) {
    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
  })(o);
}
function _typeof(o) {
  return "function" == typeof Symbol && "symbol" === _typeof2(Symbol.iterator) ? module.exports = _typeof = function (o) {
    return _typeof2(o);
  } : module.exports = _typeof = function (o) {
    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : _typeof2(o);
  }, _typeof(o);
}
module.exports = _typeof;
  • 以上错误处理完,基本都能运行了。
  • 此时,用夜神模拟器+Charles监控wx的请求及响应数据结构,在代码中模拟这些数据结构

首先是登录之后的响应结构:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uhl5aWek-1691719083038)(en-resource://database/1460:1)]
然后是wxindexgetusergroup请求,请求参数为:

{"openid":"ov4ns0Fzl49k2gyMVqBfWPHQzZiw","search_key":"1684309087552048_2933883850","action_type":3,"start_ymd":"20230513","end_ymd":"20230517","offset":0,"limit":20}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9p0vVd6u-1691719083039)(en-resource://database/1462:1)]
wxawebreport接口,参数:{“openid”:“ov4ns0Fzl49k2gyMVqBfWPHQzZiw”,“search_key”:“1684309087552048_2933883850”,“cgi_name”:“WxIndexComm”,“clientversion”:0,“device”:2,“item_list”:[{“logid”:22549,“log_buffer”:“,0,0,0”},{“logid”:22549,“log_buffer”:“,0,0,9”}]}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oXEl925T-1691719083040)(en-resource://database/1464:1)]
关键的查询接口:
https://search.weixin.qq.com/cgi-bin/wxaweb/wxindex,请求参数:

{
	"openid": "ov4ns0Fzl49k2gyMVqBfWPHQzZiw",
	"search_key": "1684389050025923_2103581176",
	"cgi_name": "GetMultiChannel",
	"query": ["儿童节"],
	"start_ymd": "20210422",
	"end_ymd": "20230518"
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cB1coK7k-1691719083041)(en-resource://database/1466:1)]

打开xcx,会检查用户是否登录,没有登录则重复登录4次,这里直接在检查登录时返回一个登录成功的对象,阻止其登录:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jlRgxhxu-1691719083041)(en-resource://database/1458:1)]

关于登录这块的设计,见我另外一篇文章:一次成功的wx指数接口调用,一次失败的wx指数接口调用

你可能感兴趣的:(网络爬虫,逆向,数据采集,wx)