简介
Charles 是常用的网络抓包工具,而对于我们做移动开发人员来说,为了调试与服务器通讯的协议等信息的时候,需要抓起网络封包来分析.
Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。
除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。
功能
1. 截取 Http 和 Https 网络封包。
2. 支持重发网络请求,方便后端调试。
3. 支持修改网络请求参数。
4. 支持网络请求的截获并动态修改。
5. 支持模拟慢速网络。
6. 支持 Http2 (Charles 4.x)
7.支持 IPv6 (Charles 4.x)
安装
途径一:Charles官网下载 ,提醒一下,这个是收费软件,试用只有30天,到期不付费也不会影响你所试用的功能,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。
途径二:点击这里,输入验证码:trqq ,里面有安装和破解教程。
配置
启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。
功能介绍
1. Charles 主要界面功能介绍,👇
Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。
1) Structure 视图将网络请求按访问的域名分类。
2) Sequence 视图将网络请求按访问的时间排序。
可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。
2. 白名单过滤
通常情况下,我们需要对网络请求进行过滤,只监控向指定目标服务器上发送的请求。对于这种需求,以下两种办法:
方式一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:https://www.baidu.com, 那么只需要在 Filter 栏中填入 baidu.com 即可。
方式二:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示
方式三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
上面介绍的是Charles 截取本地上的网络封包,但是我们是客户端开发人员,截取其设备上的网络请求才是我们想要的,下面我就以 iPhone 为例,讲解如何进行相应配置操作。
客户端网络封包抓取
1. Charles 配置
要截取 iPhone 上的网络请求需要将 Charles 的代理功能打开,选择 “Proxy”->"Proxy Settings”,填入代理端口 8899(个人喜好),并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:
2. iPhone 上的设置
1) 查看本机IP Address
不用打开设置,查看网络了,还是停留在Charles界面,Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址👇:
2) iPhone设置
在 iPhone 的 “ 设置 “->” 无线局域网 “ 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP ,以及端口号 8899👇:
设置好之后,打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。
3) 安装证书
菜单栏选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”
弹出一个窗口,提示下载证书的地址,chls.pro/ssl,在浏览器输入该地址下载并信任证书,完事儿之后就能策马奔腾,得到你想要抓的数据咯
在浏览器中输入 chls.pro/ssl 后,安装步骤👇
问题总结(如果所有配置正常,仍抓不到自己想要的数据)
1. iPhone "设置"->"通用"->"描述文件"->"Charles Proxy CA" 查看是否正确安装;
2. iPhone "设置"->"通用"->"关于本机"->"证书信任设置" ,开启针对Charles Proxy CA信任的开关;