前言
最近需要微信小程序的数据,第一时间想到的就是用Python爬虫来抓取。不过实际操作中遇到了不少问题,比如目标网址无法获取、网址参数不确定、数据加密等等。经过一番折腾,最终用Charles成功抓取了微信小程序的数据。下面就来分享一下具体操作和总结。
环境配置
- 电脑:Windows 10,连接有线网
- 手机:iPhone Xr,连接无线网
注意:有线网和无线网最好在同一个网段下。
本文的有线网IP是192.168.131.24
,无线网IP是192.168.210.223
。
Charles配置与使用
Charles简介
Charles是一款HTTP代理工具,能够监控程序发送和接收的所有数据。它的主要功能包括:
- 支持SSL代理,可以截取和SSL请求。
- 支持流量控制,模拟慢速网络。
- 支持AJAX调试,自动格式化JSON或XML数据。
- 支持AMF调试,格式化Flash或Flex Remoting信息。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持截获并动态修改网络请求。
- 检查HTML、CSS和RSS内容是否符合W3C标准。
Charles试用期后每30分钟需要重启一次,启动时有10秒延迟,稍微有点麻烦。
Charles安装
从Charles官网下载对应版本并完成安装。
证书配置(重要!)
电脑端安装证书:
- 打开Charles,点击
Help -> SSL Proxying -> Install Charles Root Certificate
。 - 点击“安装证书”,选择“将所有证书放入下列存储”,然后选择“受信任的根证书颁发机构”。
- 完成后重新进入
Help -> SSL Proxying -> Install Charles Root Certificate
,确认证书安装成功。
手机端安装证书:
- 在手机上设置HTTP代理为
192.168.131.24
,端口为8888
。 - 在手机浏览器中访问
chls.pro/ssl
下载并安装证书。 - 如果iOS版本在10以上,需在
设置 -> 通用 -> 关于本机 -> 证书信任设置
中启用对根证书的完全信任。
注意:如果手机无法上网,可能是iOS版本过高且未启用完全信任证书。
Charles配置
- 取消Windows代理:为了减少无关数据量,取消Windows代理。
- 查看本机IP地址与配置端口:默认端口是
8888
,可以修改。 - SSL代理设置:在
Proxy -> SSL Proxying Settings
中勾选Enable SSL Proxying
,并添加目标地址,host
和port
均填写。
Charles数据抓取
配置完成后,打开微信小程序,Charles会自动获取HTTP和HTTPS访问数据。点击左侧的链接,选择Contents -> JSON Text
,即可看到解析出的微信小程序数据。
在Overview
中,可以看到访问的URL地址,比如:
https://nujump.tigerobo.com/HB_Jumper/ztjump.ashx?topic=8&aris_data=kcb_1_announced_corp&pageIndex=1&pageSize=5
主要参数是pageIndex
和pageSize
,分别表示页面索引和每页显示的数据量。
通过Charles解析出URL后,可以直接用Python爬虫抓取接口返回的数据,非常方便。
常见问题集锦
-
网络问题:
手机和电脑连接的网段最好相同,本文测试时无线网和有线网在同一网段下。 -
手机或电脑无法联网:
- 证书问题:检查手机是否始终信任证书,电脑证书是否安装在受信任的位置。
- 防火墙问题:关闭Windows防火墙,取消阻止传入连接。
- 其他问题:Charles是否开启了白名单,本文测试时未发现。
-
HTTPS链接显示unknown:
最常见的原因是证书未正确安装,检查手机是否始终信任证书,电脑证书是否在受信任的位置。
总结
目前,使用Charles抓取微信小程序数据相对容易,但配置和证书安装过程较为繁琐。另外,网传的TBS爬取微信小程序的方法,本人尝试后未能成功,如果有大神成功操作,欢迎分享经验!