Charles 移动应用抓包调试工具的初步使用与了解
Charles 简介
Charles 是一款移动端调试抓包工具。
用于移动端开发或测试时调试与服务器端的网络通讯协议。
Charles 有如下特点:
- 支持 SSL 代理,可以截取分析 SSL 的请求
- 支持流量控制。可以模拟慢速网络(2G,3G),以及等待时间较长的请求。
- 支持 AJAX 调试。可以自动把 JSON 或者 XML 数据格式化,方便查看。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截取和动态修改。
- 有不同平台的版本(Mac,Windows、Linux)。
Charles 安装
Charles 的官方下载网站(http://www.charlesproxy.com)。
第一次打开 Charles ,会请求你给它设置系统代理的权限。可以自由选择是否设置。如果后面需要设置系统代理,可以在选择菜单中的 “Proxy” -> “Mac OS X Proxy” 将 Charles 设置成系统代理。
Charles 截取 iPhone 上的网络封包
设置 Charles
要截取 iPhone 上的网络请求,需要打开系统代理。在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。
设置 iPhone
在 Charles 的顶部菜单的 “Help”->”Local IP Address”,获取 Charles 运行所在电脑的 IP 地址,如下图所示:
Local IP Address.png
在 iPhone 的 “ 设置 “->” 无线局域网 “ 中,进入当前连接的 WIFI 的详情页 ,找到底部的「HTTP 代理」选择「手动」然后填上 上面👆获取到的电脑 IP,以及端口号 8888,输入完成点击存储即可。如下图:
设置手动 HTTP 代理.png按照上面流程设置好以后, Charles 会弹出 iPhone 请求连接的确认菜单,点击 Allow
即可。
抓取 Https
分析 Https 协议相关的内容。要安装 Charles 的 CA 证书。
菜单中选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”。
image.png
在钥匙串中找到名称为 Charles Proxy CA 的证书,默认是不被信任的。双击该证书,展开「信任」标题,选择「始终信任」,输入系统密码即可更改证书权限,证书安装完成。
始终信任.png安装完证书之后,Charles 默认不会获取 Https 信息,获取某个网站上的所有 Https 网络请求,需要在该请求上右击,选择 SSL Proxying。
抓取移动设备 Https
iOS 或 Android 机器上截取 Https 协议的通讯内容,需要在手机上安装证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。如下图所示:
image.png根据上图提示,在手机浏览器中访问地址:chls.pro/ssl,按照提示安装证书。会弹出未信任的警告,右上角点击「安装」如下图:
image.png点击安装后再次点击完成证书即可安装成功。
image.pngCharles 默认不截取 HTTPS,需要在要截取的网络请求上右击,选择 SSL Proxying 选项。
模拟慢速网络
在移动端测试时,常常需要模拟弱网环境。Charles 完全可以胜任。
在菜单选择 “Proxy”->”Throttle Setting” ,勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。
后续补充:
- 映射请求
Map local
Map Remote
No Caching
- Chrome 的 Charles 插件
Chrome 的 Charles 插件可以控制浏览器请求先映射到 charles 对应的端口, 然后再让 charles 转发到指定的端口。
参考博客: https://blog.devtang.com/2015/11/14/charles-introduction/