Charles抓包工具

  Charles是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。

  Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

Charles主要功能

  • 截取 Http 和 Https 网络封包。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 支持模拟慢速网络。

下载与安装

 1.下载安装   链接:https://pan.baidu.com/s/1qHsAqmz4o_puCgFgljhA4w  密码:q49f,把对应的jar包进行替换就可以破解 (mac地址:/ApplicationsCharles.app/Contents/Java )

 2.当然能下载到官网的最好   https://www.charlesproxy.com/download/

 3.关于安装   将Charles设置成系统代理:Charles是通过将自己设置成代理服务器来完成封包截取的,所以使用Charles的第一步是将其设置成系统的代理服务器,,之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。

Charles 主要提供两种查看封包的视图: Structure 、Sequence
Structure:将网络请求按访问的域名分类
Sequence:将网络请求按访问的时间排序

过滤网络请求

  • 方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com, 那么只需要在 Filter 栏中填入 yuantiku 即可。
  • 方法二:在 Charles 的菜单栏选择 “Proxy”–>“Recording Settings->Include->Add”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了
  • 方法三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项

截取手机上的网络封包

 1.要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在Charles的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上“Enable transparent HTTP proxying”就完成了在Charles上的设置  2. Charles 的顶部菜单的 “Help”–>“Local IP Address”,即可在弹出的对话框中看到 IP 地址  3.手机上设置:将手机wifi 代理配置为手动,输入代理端口号8888 以及代理服务器 本机地址  4.设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单,点击“Allow” 即可完成设置。

截取手机上的网络封包

   安装证书:如果你需要截取分析 Https 协议相关的内容。那么需要安装 Charles 的CA证书:   1.首先我们需要在 Mac 电脑上安装证书。点击Charles的顶部菜单,选择 “Help” –>“SSL Proxying” –> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在KeyChain看到添加好的证书   2.需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https网络请求,可以在该请求上右击,选择SSL proxy

模拟慢速网络

  在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles对此需求提供了很好的支持。   在Charles的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型,如果我们只想模拟指定网站的慢速网络,可以再勾选 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的hosts项即可

修改网络请求内容

如下图:选中想要修改的请求url,点击右上角编辑图标,进行编辑,最后点击Execute执行。

给服务器做压力测试

  我们可以使用Charles的Repeat功能来简单地测试服务器的并发处理能力,我们在想打压的网络请求上(POST或GET请求均可)右击,然后选择「Repeat Advanced」菜单项,如下所示:


修改服务器返回内容

  Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:   1. Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。   2. Rewrite 功能适合对网络请求进行一些正则替换。   3. Breakpoints 功能适合做一些临时性的修改。 Map:   在 Charles 的菜单中,选择 “Tools”–>“Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面:   对于Map Local功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用Charles提供的Save Response,将请求结果保存到本地,然后进行修改,成为我们的目标映射文件。

Rewrite:   适合对某一类网络请求做一些正则替换,达到修改结果的目的,比较适合做批量和长期替换

Breakpoints:   很多适合我们需要做一些临时的修改,对一次网络请求进行结果修改,Breakpoints功能类似设置断点,当指定请求发生时,Charles会截获该请求,这个适合我们可以在Charles中临时修改请求返回的内容。注意要避免暂停时间过长而导致请求超时或者关闭。

乱码解决:   1.打开Charles,上方菜单栏->Help->SSL Proxying->Install Charles Root Certificate,搜索Charles Proxy CA,修改为始终信任。

  2. Proxy->SSL Proxy Settings->Add