Python抓取微信小程序数据实战:Charles抓包与接口逆向详解

Mason
Mason
发布时间:2026-10-14| 2人浏览过
原创

本文详细演示如何使用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。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。