charles 爬取微信小程序 https 请求

背景

工商业电价都是由各个不同的电网企业自己维护然后上传到国网平台的,但是每个区域、城市的电价格式都是不一样的,所以没法通过自动化脚本来实现数据的解析和存储。我们现在采取的方式是到月底后人工半自动的方式来更新下个月的电价,费时费力,而且还容易出错。

今天花了些时间搜索了一把能提供电价信息的小程序,还真给我找到了,然后便产生了爬取 api 的想法。

安装 charles

charles 官方网站:www.charlesproxy.com/,可以自行下载

配置 http-proxy,打开菜单 Proxy -> Proxy Settings 勾选 HTTP Proxy,并输入端口号,自己定义即可,如下图

为了便于贴图,这里我要抓取的目标小程序就暂定成洛克公园吧,为啥是它?因为最近刚去打过球,它显示在列表前几位而已。我们这时尝试去抓取 PC 微信小程序的包,会发现 https 的请求显示都是 unkonwn,这是因为证书校验未通过,所以我们要安装 charles 的根证书。

安装 charles 根证书

点击菜单 Help -> SSL Proxying -> Install Charles Root Certificate 菜单,点击后会跳转到系统的钥匙串并添加一个证书,此时证书还属于不可信的状态。

双击证书,更改信任规则为始终信任

然后我们再尝试去抓取小程序的请求,可以看到 https 的请求就能正常显示了。不过这种方式也不是万能的,如果你要抓取的小程序是使用云函数开发的,你就会看到很多 mmtls 请求,这是微信的数据加密协议,我目前还没找到有什么很好的方式来对数据进行解密,不知道看到这篇文章的大佬们有没有什么方案。

手机抓包

原理类似,和电脑连入同一个网络中,然后在手机的网络配置成设置代理地址为电脑 ip,端口为 8888。

手机安装 SSL 证书,步骤如下:

Help -> Install Charles Root Certificate on a Mobile Device or remote Browser,点击之后系统会有一个弹窗,点击确定

手机上打开 chls.pro/ssl 下载证书文件,然后安装,安装方案不同的手机操作可能不太一样,可以在设置中输入CA证书,然后找到下载好的证书文件进行安装即可。

证书安装好后,在手机上打开网页或者是 app,就能在电脑上看到数据请求了。

其他抓包工具

  • burp suite pro + proxifier
  • fiddler
  • wireshark
  • anyproxy
相关推荐
harrain1 小时前
什么!vue3.4开始,v-model不能用在prop上
前端·javascript·vue.js
fanruitian6 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo6 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk6 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
2501_944525548 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
李白你好9 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
刘一说10 小时前
Vue 组件不必要的重新渲染问题解析:为什么子组件总在“无故”刷新?
前端·javascript·vue.js
徐同保10 小时前
React useRef 完全指南:在异步回调中访问最新的 props/state引言
前端·javascript·react.js
刘一说11 小时前
Vue 导航守卫未生效问题解析:为什么路由守卫不执行或逻辑失效?
前端·javascript·vue.js
一周七喜h12 小时前
在Vue3和TypeScripts中使用pinia
前端·javascript·vue.js