Charles是一个HTTP代理/ HTTP监视器/反向代理,使开发人员能够查看其机器和Internet之间的所有HTTP和SSL / HTTPS流量。 这包括请求,响应和HTTP标头(包含cookie和缓存信息)。
主要功能:
- 支持SSL代理。可以截取分析SSL的请求。
- 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
- 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 检查HTML,CSS和RSS内容是否符合W3C标准。
Charles是一款收费的软件, 可以免费试用30天 (常用的话建议大家找下破解版)官网下载地址
下载安装后, 启动Charles。
第一次启动,Charles会请求你给它设置系统代理的权限,可以直接确认,输入登录密码授权:
也可以忽略该请求, 在需要使用的时候将其设置为系统代理:
抓取iPhone上应用的网络封包
-
Charles的设置
- 要抓取iPhone上应用的网络请求, 我们首先需要将Charles的代理功能打开(菜单栏:Proxy->Proxy Settings...):
- 将代理端口设置为8888,并勾选“Enable transparent HTTP proxying”:
-
iPhone的设置
- 获取Charles运行所在电脑的IP地址:
- 在iPhone的“设置”->“无线局域网”中点击当前连接的wifi,在详情界面找到[HTTP代理]一项, 切换为手动, 设置上Charles运行所在电脑的IP和端口号8888:
- 打开你需要抓包的应用,可以看到Charles弹窗iPhone请求连接的确认菜单, 点击“Allow”允许连接即可。
抓取Https请求
- 安装证书
输入系统的登录密码, 即可在钥匙串中看到我们安装的证书, 双击证书, 信任证书:
- iPhone安装证书
选中后会弹出一个提示框:
在iPhone自带的safari浏览器中输入网址:chls.pro/ssl ,允许其下载配置描述文件, 在“设置”->“通用”->“描述文件与设备管理”中信任Charles Proxy 文件:
在ios10.3以后,安装新的自定义证书默认是不受信任的,需要在“设置”->“通用”->“关于本机”->“证书信任设置”中手动打开开关去信任:
到这里, 我们就可以愉快的抓取应用的请求了,但此时你发现 ,抓取到的请求内容都发生了乱码:
不用担心, 去设置SSL代理就ok了: