使用Charles工具抓取微信小程序数据的Python教程

前言

  最近需要微信小程序的数据,第一时间想到的就是用Python爬虫来抓取。不过实际操作中遇到了不少问题,比如目标网址无法获取、网址参数不确定、数据加密等等。经过一番折腾,最终用Charles成功抓取了微信小程序的数据。下面就来分享一下具体操作和总结。

环境配置

  • 电脑:Windows 10,连接有线网
  • 手机:iPhone Xr,连接无线网

注意:有线网和无线网最好在同一个网段下。
本文的有线网IP是192.168.131.24,无线网IP是192.168.210.223

Charles配置与使用

Charles简介

  Charles是一款HTTP代理工具,能够监控程序发送和接收的所有数据。它的主要功能包括:

  1. 支持SSL代理,可以截取和SSL请求。
  2. 支持流量控制,模拟慢速网络。
  3. 支持AJAX调试,自动格式化JSON或XML数据。
  4. 支持AMF调试,格式化Flash或Flex Remoting信息。
  5. 支持重发网络请求,方便后端调试。
  6. 支持修改网络请求参数。
  7. 支持截获并动态修改网络请求。
  8. 检查HTML、CSS和RSS内容是否符合W3C标准。

  Charles试用期后每30分钟需要重启一次,启动时有10秒延迟,稍微有点麻烦。

Charles安装

  从Charles官网下载对应版本并完成安装。

证书配置(重要!)

电脑端安装证书

  1. 打开Charles,点击Help -> SSL Proxying -> Install Charles Root Certificate
  2. 点击“安装证书”,选择“将所有证书放入下列存储”,然后选择“受信任的根证书颁发机构”。
  3. 完成后重新进入Help -> SSL Proxying -> Install Charles Root Certificate,确认证书安装成功。

手机端安装证书

  1. 在手机上设置HTTP代理为192.168.131.24,端口为8888
  2. 在手机浏览器中访问chls.pro/ssl下载并安装证书。
  3. 如果iOS版本在10以上,需在设置 -> 通用 -> 关于本机 -> 证书信任设置中启用对根证书的完全信任。

注意:如果手机无法上网,可能是iOS版本过高且未启用完全信任证书。

Charles配置

  1. 取消Windows代理:为了减少无关数据量,取消Windows代理。
  2. 查看本机IP地址与配置端口:默认端口是8888,可以修改。
  3. SSL代理设置:在Proxy -> SSL Proxying Settings中勾选Enable SSL Proxying,并添加目标地址,hostport均填写

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
主要参数是pageIndexpageSize,分别表示页面索引和每页显示的数据量。

  通过Charles解析出URL后,可以直接用Python爬虫抓取接口返回的数据,非常方便。

常见问题集锦

  1. 网络问题
    手机和电脑连接的网段最好相同,本文测试时无线网和有线网在同一网段下。

  2. 手机或电脑无法联网

    • 证书问题:检查手机是否始终信任证书,电脑证书是否安装在受信任的位置。
    • 防火墙问题:关闭Windows防火墙,取消阻止传入连接。
    • 其他问题:Charles是否开启了白名单,本文测试时未发现。
  3. HTTPS链接显示unknown
    最常见的原因是证书未正确安装,检查手机是否始终信任证书,电脑证书是否在受信任的位置。

总结

  目前,使用Charles抓取微信小程序数据相对容易,但配置和证书安装过程较为繁琐。另外,网传的TBS爬取微信小程序的方法,本人尝试后未能成功,如果有大神成功操作,欢迎分享经验!

© 版权声明
THE END
分享