Python抓取微信小程序数据实战:Charles抓包与接口逆向详解
本文详细演示如何使用Python结合Charles工具抓取微信小程序数据。通过配置Charles代理,分析小程序网络请求,定位POST接口及参数结构(如pageIndex、pageSize等),并编写Python代码实现数据获取。内容涵盖环境配置、抓包技巧及代码示例,适用于移动端小程序数据抓取场景。
背景介绍
背景介绍
近期遇到一个需求,需要获取特定小程序内的数据。考虑到小程序本质上是移动端的浏览器壳,因此尝试使用Python进行数据获取。经过网络资料学习与实践,记录实现过程及遇到的常见问题。本文核心关键词:Python、小程序、Charles抓包。
目标小程序:
访问公众号“同城商圈网”,点击左下角“找商家”,选择“汽车维修”下的“小车维修”,目标为获取所有商家信息,具体界面如下图所示:

环境配置
环境
PC端:Windows 10
移动端:iPhone
软件:Charles
Charles抓包步骤
Charles抓包
尽管网上已有许多详细教程,但为了补充实际踩坑经验,建议参考Charles配置教程。
在抓包前,需清空Charles当前捕获的连接记录,以避免干扰(熟练掌握使用黄色扫把图标进行清理非常有用)。

打开微信小程序并进入指定界面,此时Charles中会显示相应的网络请求。

进入某个具体商家详情页后,最先发起的请求如下:

推测该请求可能与小程序相关,点击查看详情。

此时手机界面显示如下:

确认这就是目标请求!(实际过程中需逐一尝试,多试几次即可找到。若具备一定英文基础,识别左侧英文字段会更有帮助,例如“merchant”意为商家)。
若要获取所有商家信息,可先点击Charles上的黄色小扫把清空记录,然后返回商家列表页面。

手机界面显示如下:

确认该请求即为所需数据接口。
请求分析
分析请求
选中左侧发送的请求,在右侧点击“Overview”选项卡查看请求详情,可以发现这是一个POST请求。

POST请求通常提交表单数据,数据位于何处?可在右侧界面右键点击“Copy Request”以获取完整的表单数据。

将复制的数据粘贴查看:
{"pageIndex":1,"pageSize":50,"regionId":"8","categoryId":"148","orderRule":0}
通过观察数据,可以推测出大致结构:pageIndex代表页码,pageSize代表每页显示数量,regionId代表地区编号,categoryId代表货品编号,orderRule代表排序规则。至此,抓包完成,已成功捕获目标数据包。
本节所述的抓包方法理论上适用于所有小程序,其他小程序可尝试类似方法。
Python代码实现
编写python代码
此处提供一个简单的Demo示例。
import requests
url = "http://api.tc688.net/api/services/app/merchant/LoadCategoryMerchants"
header = {
'Origin':'http://zazhi.tc688.net',
'Host':'api.tc688.net',
'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.14(0x17000e2e) NetType/WIFI Language/zh_CN',
'Referer':'http://zazhi.tc688.net/companylist?id=148',
}
data = {"pageIndex":1,"pageSize":50,"regionId":"8","categoryId":"148","orderRule":0}
r = requests.post(url=url,data=data,headers=header)
print(r.text)
运行结果:

完整项目
有关数据处理及更换地区参数的详细代码,请访问我的GitHub:GitHub。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













