微信小程序 Spdier - OfferShow 反编译逆向(一)
创始人
2024-05-02 06:27:40
0

微信小程序 Spdier - OfferShow 反编译逆向(一)


文章目录

  • 微信小程序 Spdier - OfferShow 反编译逆向(一)
  • 前言
  • 一、任务说明
    • 1.尝试反编译分析出js_code参数的生成方式,用来获取token
    • 2.将小程序搜索出来的数据保存至本地excel
  • 二、微信小程序抓包 - 分析
  • 三、wxapkg反编译 - 分析
    • 1.在夜神模拟器获取微信程序员的包
      • 1.1 获取wxapkg的地址
      • 1.2 删除wxapkg文件重新生成
      • 1.3 复制wxapkg文件至windows目录,用来反编译调试
    • 2.使用CrackMinApp对.wxapkg文件进行反编译
    • 3.使用微信开发者工具打开反编译好的主包开始调试
    • 4.分析结果
  • 四、运行结果
  • 五、示例代码
  • 总结


前言

本文需要使用到的工具有:
Charles抓包工具、夜神模拟器、微信开发者工具、wxapkg反编译工具CrackMinApp;
提示:需要安装好Charles和夜神模拟器并配置好App抓包环境,以及安装好微信开发者工具 / 反编译工具CrackMinApp
Charles&夜神模拟器安装教程:https://blog.csdn.net/EXIxiaozhou/article/details/127767808
微信开发者工具 / 反编译工具CrackMinApp 下载安装:https://blog.csdn.net/EXIxiaozhou/article/details/128110468
该文章涉及到App抓包以及微信小程序反编译逆向等相关的Spider技术


提示:以下是本篇文章正文内容,下面案例可供参考

一、任务说明

1.尝试反编译分析出js_code参数的生成方式,用来获取token

在这里插入图片描述

2.将小程序搜索出来的数据保存至本地excel

在这里插入图片描述

二、微信小程序抓包 - 分析

1、打开Charles抓包工具,启动模拟器,进入微信
在这里插入图片描述
2、搜索小程序offershow,打开进入,岗位搜索,输入关键词:“python”
在这里插入图片描述
3、生成token接口分析,接口url:https://www.ioffershow.com/V4/silent_login
提示:第一次打开,需要请求这个接口提交js_code参数才能拿到token,headers添加一个token即可风雨无阻
在这里插入图片描述
4、刷新token接口分析,小程序每隔一段时间会刷新token
接口url:https://www.ioffershow.com/V4/refresh_token
请求该接口时,提交当天服务器返回的任意一个token,即可请求成功获得新的token;
在这里插入图片描述
下图使用postman工具模拟请求刷新token接口,Postman API测试工具 基本使用:https://blog.csdn.net/EXIxiaozhou/article/details/128333884
在这里插入图片描述
5、search_salary、根据关键词进行接口请求,url:https://www.ioffershow.com/V4/search_salary
在这里插入图片描述
可以看到返回的json数据
在这里插入图片描述

三、wxapkg反编译 - 分析

1.在夜神模拟器获取微信程序员的包

1.1 获取wxapkg的地址

方式一、直接全局搜索文件后缀(.wxapkg)
点击右侧的任意处,再点击右上侧的三个点,选择搜索,输入.wxapkg
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法二、一般具体的文件目录地址是:/data/data/com.tencent.mm/MicroMsg/{一串16进制字符}/appbrand/pkg/
在这里插入图片描述

1.2 删除wxapkg文件重新生成

区分那些包是属于offershow小程序

  • 1.需要将微信的OfferShow小程序清除掉,再退出微信
  • 2.将原来已经生成的所有wxapkg文件删除
  • 3.重新登录微信,再次打开小程序再生成新的wxapkg文件
  • 4.再次打开模拟器存放wxapkg文件的目录,里面出现的wxapkg文件都属于OfferShow

1.3 复制wxapkg文件至windows目录,用来反编译调试

路径:/data/data/com.tencent.mm/MicroMsg/e8b469b0e57e32dd18d1293036fc556f/appbrand/pkg/
左侧找到windows本地目录,右侧找到模拟器存放wxapkg文件的目录,长按文件选择复制即可,全部复制;
在这里插入图片描述

2.使用CrackMinApp对.wxapkg文件进行反编译

1、将.wxapkg文件复制到CrackMinApp-master\wxapkg目录;
微信开发者工具 / 反编译工具CrackMinApp 下载安装:https://blog.csdn.net/EXIxiaozhou/article/details/128110468在这里插入图片描述
2、
将三个.wxapkg文件依次反编译,区分主包和依赖包,真正的小程序包大小1M左右,而依赖包大小2、3M甚至更多,将依赖包复制放入主包;
在这里插入图片描述
反编译之后的主包
在这里插入图片描述

3.使用微信开发者工具打开反编译好的主包开始调试

在这里插入图片描述

4.分析结果

我调试到最后,发现js_code的加密代码被隐藏了,到此结束,如果有大佬知道加密方式的话,欢迎在评论处指教,非常感谢;
我的做法是手动复制当天服务器返回的token去请求刷新token的接口,拿到最新的token去请求查询薪资的接口,最后将数据保存至xlsx;

四、运行结果

输出xlsx文件
在这里插入图片描述

五、示例代码

import os
import time
import requests
import pandas as pdclass OfferShow(object):def __init__(self):# 当天的任意tokenself.ord_token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTAwNDI2MSwibmlja25hbWUiOiJcdTcwZWRcdTVmYzNcdTc1MjhcdTYyMzciLCJleHAiOjE2Njk2NDY0OTEsIm9yaWdfaWF0IjoxNjY5NjQ1ODkxfQ.cWukvcTzgtQGyIVjzRT4Lr2Dcm1Y3Nnfov-bEX0QwfY'self.headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 7.1.2; SM-G9810 Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36 MMWEBID/5551 MicroMessenger/8.0.30.2260(0x28001E3A) WeChat/arm32 Weixin NetType/WIFI Language/zh_CN ABI/arm32 MiniProgramEnv/androidUser-Agent	Mozilla/5.0 (Linux; Android 7.1.2; SM-G9810 Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36 MMWEBID/5551 MicroMessenger/8.0.30.2260(0x28001E3A) WeChat/arm32 Weixin NetType/WIFI Language/zh_CN ABI/arm32 MiniProgramEnv/android','content-type':	'application/x-www-form-urlencoded','token': self.ord_token,'Accept-Encoding': 'gzip,compress,br,deflate'}self.xueli = ''self.result_file_path = 'OfferShow_salary.csv'def get_token(self):refresh_token_url = 'https://www.ioffershow.com/V4/refresh_token'form_data = {'token': self.ord_token}token_response = requests.post(url=refresh_token_url, headers=self.headers, data=form_data)token = token_response.json()['data']['token']print("token获取成功:", token)return tokendef search_salary(self, keyword):salary_url = 'https://www.ioffershow.com/V4/search_salary'from_data = {'content': keyword,'ordertype': 2,'search_priority': 3,'part_school': '','xueli': self.xueli,'year': ''}salary_response = requests.post(url=salary_url, headers=self.headers, data=from_data)json_data = salary_response.json()['data']for item in json_data:content = f"{keyword},{item['id']},{item['company'].replace(',', ',')},{item['position'].replace(',', ',')}" \f",{item['salary'].replace(',', ',')},{item['city'].replace(',', ',')}," \f"{item['hangye'].replace(',', ',')},{item['xueli']},{item['salarytype']},{item['score']},{item['time']}"content = content.replace('\n', '').replace('\n', '') + '\n'self.csv_save(content=content)print("写入成功:", content, end='')def create_csv_file(self):if os.path.exists(self.result_file_path) is False:with open(file=self.result_file_path, mode='w', encoding='utf-8') as fis:fis.write('关键词,薪资ID,公司,岗位,薪资,城市,行业,学历,薪资类型,可信度,发布时间\n')def csv_save(self, content):with open(file=self.result_file_path, mode='a+', encoding='utf-8') as fis:fis.write(content)def csv_save_as_xlsx(self):""" 读取csv文件将结果写入xlsx """filename_prefix = os.path.splitext(self.result_file_path)[0]  # 切割文件路径以及后缀df = pd.read_csv(self.result_file_path, encoding='utf-8', dtype='object')df.to_excel(f"{filename_prefix}.xlsx", index=False)print("csv 转 xlsx 成功!\n", end='')def runs(self, keyword_list):self.create_csv_file()token = self.get_token()self.headers['token'] = tokenfor keyword in keyword_list:self.search_salary(keyword=keyword)time.sleep(0.25)self.csv_save_as_xlsx()if __name__ == '__main__':keywords_list = ['Python', 'Java', 'Php', 'JavaScript', 'Go', 'R语言', 'MATLAB', 'C++', 'C#', '后端', '前端', '算法', '人工智能','软件测试', 'IT运维', '数据库', 'VisualBasic']  # 需要搜索的关键词obj = OfferShow()obj.runs(keywords_list)

总结

以上就是今天要讲的内容,本文仅仅简单介绍了微信小程序Spider的基本流程,也留下了一些bug,不过最后是拿到了想要的数据,关于其他的微信小程序Spider案例,请来我的主页查看;

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...