前言

由于工作中经常需要配置客户端开发人员对接接口,有时候对接地不太顺利,因此需要经常性地对公司 APP 进行抓包看请求,找出具体的原因。

在公司中开发使用的 Windows 台式电脑,抓包工具选择了 Fiddler,这个工具刚开始学会抓包的时候,觉得真乃神器!在经过几次开发电脑升级之后,重新安装 Fiddler 后,和之前的设置相同,但是死活抓不了包,或者抓不了 Https 的包, 总之总会出现各种奇怪的问题,如果出了问题,简直让人抓狂!

去年年底,给自己换了一台 MBP,日常学习中也需要用到抓包,为了和公司中的工具保持一致,想下载 Fiddler 的 Mac 版,结果并没有。于是下载了 Charles (花瓶),用了花瓶之后,发现其比 Fiddler 更加好用~

在一次受够了 Fiddler 的莫名其妙地抓不了 Https,怒卸载之,寻寻觅觅,找到了 Win 版的 Charles (之前还以为没有 Win 版呢),经过简单配置,开始了愉快的抓包~

抓包准备之 Charles 下载以及激活

Charles 软件下载

下载安装完,在开始菜单中找到 Charles 打开,提示有 30 天的试用期。如果 30 天到期的话,可以选择购买一个 license ,30 刀。如果不想买,可以参考此文继续试用,Charles Proxy使用笔记(文内有好礼)。选择 Help-Registered 填入 license 即可激活。

抓包准备之 Charles 配置 HTTPS 抓包基础配置

如今 Https 大行其道,苹果更是强制要求 APP 通信必须要使用 Https 协议,如果只是抓普通的 HTTP 请求,无需复杂配置即可抓包,这也表明了 HTTP 的安全性很低。

Charles 默认不对 HTTPS 的请求开启抓包,所以,需要先开启所有 HTTPS 请求的抓包。

进入菜单 Proxy-SSL Proxying Settings
选择开启 SSL Proxy,并 Add 一条 Location 记录,Host 填写 *,代表匹配所有网址,端口 Port,填写443,即 HTTPS 端口。 选择保存。

基础配置到此就完成了,以下本文按照两方面来描述,Charles 抓 HTTPS。

Charles 抓 Windows 上的 HTTPS 请求

进入 Help 中,选择 SSL Proxying 设置,安装根证书

注意这一步一定要将证书存储到 受信任的根证书颁发机构,否则抓包 HTTPS 会提示证书不受信任!!!嗯,搞了好久,血一般的教训!

安装期间会有安全警告,选择是即可。

访问 https://www.baidu.com后,查看 Charles,已经可以看到 Https 请求下的数据了。

Charles 抓 APP 的 HTTPS 请求

想要 Charles 抓 HTTPS 的数据包,需要设置代理并安装 Charles 的中间 SSL 证书。

选择 Help-SSL Proxying

点击会弹出对话框如下

按照提示,将手机连入电脑同一个网络,WIFI 处设置代理,代理的地址以及端口按照对话框中进行设置。

设置成功返回之后,此时电脑上 Charles 会自动弹出提醒,提示是否允许请求代理通过,选择 Allow 允许即可。

连上代理之后,使用系统自带浏览器( iPhone 使用 Safari)访问地址 chls.pro/ssl,如果是 iPhone 会自动弹出安装描述文件,选择安装输入密码后无视警告安装即可。因为手边没有安卓设备,不过流程应该类似,就是安装一个 CA 证书文件。

手机访问 https://m.baidu.com,查看 Charles ,发现此时已经可以拿到 HTTPS 数据内容了,如果没设置成功,里面都将会是 unknown。

常见问题

  1. 开启 SSL Proxy 代理后,提示证书不受信任或者无效,PC 端一般都是因为证书放错了位置。
  2. 在 IOS11上测试时,抓包显示unknown 需要进入通用-关于本机-证书信任设置,将新增的证书进行开启操作。


    1. 小米系统的手机安装证书方式比较繁琐,需要进入开发者选项中,在信用证书中进行安装(Fiddler安装证书是这样的,Charles 应该也差不多)

最后说几句

善用搜索引擎,因为你遇到的问题肯定有别人都遇到过了,如果你搜不到,肯定是你的搜索姿势不对~

实在有问题解决不了,可以找我哟!

给我写信