简介
Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。
主要功能
- 截取 Http 和 Https 网络封包。
- 支持重发网络请求,方便后端调试。
- 支持修改网络请求参数。
- 支持网络请求的截获并动态修改。
- 支持模拟慢速网络。
下载安装
Charles 的官方网站http://www.charlesproxy.com下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录下完成安装。
使用介绍
- 第一步是将Charles设置为系统的代理服务器。一般会在你第一次使用的时候Charles会请求你设置系统代理权限;如果你忽视了你需要在菜单中Proxy–>Mac OS Proxy 将Charles 设置成系统代理。需要注意的是:如果是想在Chrome和Firefox默认的代理服务器并不是系统的代理服务器。这个时候你需要在Chrome中设置成使用系统的代理服务器即可。
- 主界面介绍
- 过滤网络请求
在菜单栏选择 Proxy –> Recording Setting,然后选择includ栏,选择添加一个项目,填入你要监控的协议,主机,端口。这样就可以只截取目标网站的网络请求了。
- 过滤网络请求
截取Android上的网络请求
- 确保我们的手机和电脑在同一个局域网内,mac用户可以设置网络启动网络共享,手机连接网络贡献的网络即可,如果是模拟器不用任何设置。
- 打开Charles的代理功能。在菜单栏上选择 Proxy–>Proxy Setting,代理端口填入8888,勾选Enable transparent HTTP Proxying
- 在Android上设置代理
在设置–>网络 进入后长按连接的网络,点击修改网络,在代理设置处选择手动,代理的主机设置为你的pc 的ip地址端口设置为8888保存即可。设置好后Charles会弹出Android请求代理的确认对话框,点击Allow即可。
截取Https的请求
- Mac 上安装 Charles 的 CA 证书
在Charles 的顶部菜单,选择 Help –>SSL Proxying –> Install Charles Root Certificate - 对某一个https请求设置 Enable SSL Proxying就可以了
右键你要设置的https地址,勾选上Enable SSL Proxying就可以了
截取Android上的Https请求
- 在手机中安装 CA证书
打开手机中的浏览器 输入地址http://charlesproxy.com/getssl应该会自动下载 CA证书,如果没下载可以用在pc 的浏览器中下载,在terminal中通过adb push 命令 push到手机中去。然后在手机的 设置–>安全服务–>从存储设备安装。这样会自动找到刚刚push到手机的CA证书(手机未设置密码的会提示设置密码)。 - 同样默认情况下Charles 并不会截取,右键你要截取的https地址,勾选上Enable SSL Proxying就可以了; 或者在 Charles的菜单中 Proxy –> SSL Proxying Settings 中设置你要代理的https 主机端口