【零基础实战】Fiddler抓取PC微信小程序数据流,爬取华为商城商品配置+真实评论(完整可运行代码+逐行解析)
一、实战前言:为什么要抓PC微信小程序流量?
在接口测试、爬虫入门、网络调试、渗透测试学习场景中,很多同学只会抓浏览器网页包,一遇到微信小程序直接卡住。
尤其是手机抓包,步骤繁琐:要连同一WiFi、手动改代理、安装根证书、还要处理手机系统证书拦截、权限拦截、网络断开等一堆问题。新手大概率配置半小时,最后小程序直接空白打不开,心态直接崩掉。
而本次实战,全程只用电脑、不用手机、不用改路由器、不用额外组网。
直接使用 Fiddler + PC端微信桌面版,成功抓取华为商城小程序真实业务接口,拿到完整 HTTPS 明文 JSON 数据,最后用 Python 一键结构化解析手机参数、好评率、真实用户评论、电池配置、摄像头参数等核心商用数据。
整篇文章属于可直接复刻落地的工程级实战笔记,没有废话、没有理论堆砌、全程实操,适合爬虫入门、接口调试、自动化测试工程师直接拿去练手。
二、本次实战整体架构与环境清单
2.1 运行环境(全部免费,无需付费工具)
✅ 操作系统:Windows10 / Windows11 任意版本
✅ 抓包工具:Fiddler Classic 免费原版
✅ 客户端:PC桌面版微信(最新版即可,不用降级)
✅ 开发环境:Python3.8+ 任意版本
✅ 依赖库:只需要一个 requests 网络请求库
✅ 网络环境:正常办公网/家庭宽带即可,无需特殊局域网
2.2 实战整体流程链路(全文核心逻辑)
第一步:正确配置 Fiddler,开启 HTTPS 全局解密,关闭多余远程监听适配PC微信场景
第二步:打开电脑微信,进入华为商城小程序,进入任意手机售卖详情页
第三步:开启 Fiddler 流量捕获,筛选接口、过滤无关流量、定位商品详情核心接口
第四步:复制真实业务 URL + 全套小程序原生请求 Headers
第五步:编写 Python 模拟真实小程序请求,直接拿到完整 JSON 原始数据包
第六步:分层解析配置参数、评论数据、评分数据、包装清单,格式化输出易读结果
三、关键前置:PC微信小程序抓包核心避坑知识点
很多人抓不到微信小程序包,不是工具不会用,是不懂底层机制。
新版 PC 微信小程序内核,会强制绕过系统代理。
也就是说:浏览器能抓到、软件能抓到、唯独微信不走代理。
所以本次实战关键配置:
1)Fiddler 只开 HTTPS 解密,不开手机远程连接端口;
2)完全退出微信重新启动,强制刷新网络链路;
3)必须保留小程序原生完整 Headers,少一个字段就会风控拦截;
4)不能随便改 User-Agent,必须沿用微信小程序原生UA。
只要做到以上四点,百分百抓包成功。
四、Fiddler 手把手专属配置(PC微信专用版)
4.1 HTTPS 解密配置(必做,不解密看不到JSON)
打开 Fiddler → Tools → Options → HTTPS 标签页。
勾选:Decrypt HTTPS traffic,下拉选择 from all processes。
点击 Actions → 信任根证书,全部弹窗点击允许、确认、安装。
作用:把加密的 HTTPS 流量全部解密成明文,才能看到接口返回的手机配置和评论数据。
4.2 Connections 连接配置(重点:不要开远程)
端口保持默认 8888。
不要勾选 Allow remote computers to connect。
这一步专门针对 PC 微信场景,勾选反而会冲突断网。
4.3 重启 Fiddler + 重启微信
全部配置完成,关闭 Fiddler 重开,完全退出微信重登。准备开始抓包。
五、实操抓包:捕获华为商城商品详情真实接口
5.1 进入业务场景
打开PC微信 → 搜索小程序「华为商城」→ 任意选择一款在售手机 → 进入商品售卖详情页。
5.2 开启流量捕获、筛选接口
Fiddler 开启 Capture 抓包按钮,页面上下滑动加载评论、加载参数。
左侧会话列表筛选域名:openapi.vmall.com。
成功定位核心业务接口:刷新商品缓存信息接口,同时返回规格参数+全部评论数据。
5.3 拿到真实请求要素
成功提取:完整接口 URL、Cookie、Token、微信专属UA、跨域请求头全套参数。
六、完整可直接运行Python爬虫代码(带分层解析)
下面代码已经线上实测跑通,复制直接运行,无需改任何配置。
importrequests# ===================== 1. 接口请求核心参数区 =====================# Fiddler抓取到的华为商城真实业务接口地址url="https://openapi.vmall.com/mcp/product/refreshProductCacheInfoV2?prdId=10086174757473&sbomCode=2601010613211&extraType=5&pageSize=1&pageNum=1&sortType=1&showStatistics=true&screenType=large&portal=4&lang=zh_CN&country=CN"# 从小程序流量里原样复制的请求头,用来伪装成真实微信小程序headers={"Connection":"keep-alive","CsrfToken":"75dTCa4Zp3VKCnmvv4FhfpfrahwbhgKKo4TE","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowschat(0xf254186b) XWEB/19481","cookie":"euid=469eda5ee01a7b40580b70e96b6813d88c5b1777293656018;uid=;__ukmc=;userName=undefined","xweb_xhr":"1","Content-Type":"application/json","X-E2E-Trace":"e2eId=page#rn_product#4#3de1d25c92e784bd291247fe1b701c43;spanId=bb226c208af420ac4499b7b2d46b93fe","Accept":"*/*","Sec-Fetch-Site":"cross-site","Sec-Fetch-Mode":"cors","Sec-Fetch-Dest":"empty","Referer":"https://servicewechat.com/wx208389d90830e5b7/163/page-frame.html","Accept-Encoding":"gzip, deflate, br","Accept-Language":"zh-CN,zh;q=0.9"}# ===================== 2. 发送网络请求拿到完整JSON =====================response=requests.get(url,headers=headers)data=response.json()# ===================== 3. 结构化分层解析数据 =====================print("="*60)print("✅ 华为商城商品小程序接口实战解析结果")print("="*60)# 解析商品名称try:sbom_list=data.get("querySkuPicDetailResp",{}).get("sbomBlobsList",[])ifsbom_list:item=sbom_list[0]product_name=item.get("sbomName","未知商品")print(f"📱 商品名称:{product_name}")except:print("📱 商品名称:解析失败")# 解析核心硬件配置try:spec_list=data.get("querySkuPicDetailResp",{}).get("majorSpecificationList",[])spec_dict={i["attrName"]:i["attrValue"]foriinspec_list}print(f"⚙️ 操作系统:{spec_dict.get('操作系统','无')}")print(f"🖥️ 屏幕尺寸:{spec_dict.get('屏幕尺寸','无')}")print(f"🔋 电池容量:{spec_dict.get('电池容量','无')}")print(f"💾 机身内存:{spec_dict.get('机身内存(ROM)','无')}")print(f"📷 后置摄像头:{spec_dict.get('后置摄像头','无')}")print(f"📷 前置摄像头:{spec_dict.get('前置摄像头','无')}")print(f"⚡ 充电规格:{spec_dict.get('充电','无')}")print(f"⚖️ 机身重量:{spec_dict.get('机身重量','无')}")except:print("核心规格解析失败")# 解析真实用户评论与评分大数据try:comment_data=data.get("getCommentListResponse",{}).get("data",{})comments=comment_data.get("comments",[])print(f"\n⭐ 综合评分:{comment_data.get('averageScore',0)}分")print(f"👍 好评率:{comment_data.get('goodRate',0)}")print(f"💬 总评价数:{comment_data.get('count',0)}条")ifcomments:c=comments[0]print(f"\n🗨️ 最新真实用户评价:")print(f" 内容:{c.get('content','无')}")print(f" 时间:{c.get('creationTime','无')}")print(f" 型号:{c.get('skuName','无')}")print(f" 地区:{c.get('ipLocation','无')}")except:print("\n评价信息解析失败")print("="*60)七、逐行深度代码解析
7.1 请求头 headers 深度解析
这一段是整个爬虫成功的命脉。
User-Agent 严格模拟微信小程序Windows端内核标识,平台后台校验客户端来源,不对直接拦截403。
Cookie、CsrfToken 是用户会话凭证,代表当前登录小程序身份,缺一个就拿不到真实数据。
Referer 严格校验小程序官方域名,防盗链机制必备,不填直接跨域拦截。
所有头信息全部来自 Fiddler 原生抓包,没有任何编造,所以百分百通过率。
7.2 requests.get 请求逻辑解析
直接使用 GET 方式请求商品详情缓存接口,无需复杂加密、无需签名算法。
response.json() 直接把网络二进制数据转成字典,方便Python读取,是爬虫解析标准写法。
7.3 多层 JSON 取值逻辑解析
真实业务接口返回 JSON 嵌套层级非常深,直接取值容易报错。
所以代码全部使用 get() 链式安全取值,就算某一层字段缺失,程序也不会崩溃闪退,稳定性极强,适合工程化落地。
把规格列表转成字典,直接按关键词读取操作系统、电池、摄像头,可读性拉满。
7.4 评论数据商业价值解析
自动抓取综合评分、好评率、总评论数、最新真实带图评价、用户所在地区、购买型号。
这类数据可以直接用于竞品分析、电商舆情监控、商品口碑大数据统计,商用价值很高。
八、运行结果展示(实战成功效果)
脚本运行后,控制台直接输出干净、结构化、易读的手机全量信息,无乱码、无报错,程序正常结束 exit code 0。
成功拿到商品全名、全系硬件参数、真实用户口碑评分、实时最新评论内容。
九、实战高频踩坑总结(避坑必看)
1)不装HTTPS根证书:只能抓空白包,看不到JSON明文,全程白费力气。
2)Headers随便改:直接触发风控,接口返回空数据或者403拦截。
3)不重启微信:微信依旧不走代理,Fiddler一条小程序流量都抓不到。
4)强行开远程连接:PC网络冲突,小程序直接加载失败空白页。
5)直接深层取值不写try:JSON字段变动程序直接崩溃,工程不可用。
十、实战总结 & 技术延伸
本次实战完整闭环:环境配置→Fiddler精准抓包→接口筛选→请求头复刻→Python模拟请求→分层结构化解析商品+评论全量数据。全程无手机、无复杂环境、无逆向难度,零基础也能直接上手复刻。
掌握这套流程,你就已经具备小程序接口调试、电商数据采集、自动化接口测试的核心实战能力,后续不管是京东、天猫、各类商城小程序,全部都可以用同一套方法直接抓包爬取。
想要学习更多 Fiddler 高阶断点篡改、弱网测试、批量小程序接口爬取、加密接口入门解密实战,大家可以点赞+收藏+关注**,我下期继续更新全套进阶实战教程,手把手带你从零进阶实战爬虫与接口逆向!**