Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

Charles 主要的功能包括:

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

1 安装Charles

  去Charles的官网(https://www.charlesproxy.com)下载最新的Charles安装包, 打开后将Clarles拖到Application目录即可。

2 将Charles设置成系统代理

  Charles是通过将自己设置成代理服务器来完成网络封包的截取,所以使用Charles的第一步需要将Charles设置成系统代理服务器。

  第一次启动Charles后,Charles会请求你给它设置系统代理的权限,输入密码进行授权,如果你忽略这步或者是不知道Charles是否成为系统代理,选择菜单中的"Proxy" ---->"macOS Proxy"来设置成系统代理,如下图所示。

      

3 安装SSL证书

  如果你需要截取分析Https协议(https就是在http上面加了一层ssl协议,在http站点上部署SSL数字证书就变成了https)相关的内容,那么需要安装 Charles 的 CA 证书。具体步骤如下:

  3.1  点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在 KeyChain 看到添加好的证书。如下图所示:

   

  3.2 在钥匙串访问中找到添加成功的证书,并设置证书为可信用的。如下图:

   

  3.3 需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,可以在该请求上右击,选择Enable SSL proxy,如下图所示:

     

 4 Charles 主界面介绍

  Charles提供两种查看封包的视图,如下图:

   

   对于具体的网络请求,你可以查看其请求内容和响应内容。

 5 过滤网络请求

  通常情况下,我们需要对网络请求进行过滤,只监控指定目录的服务器上发的请求。有如下两种办法设置:

  5.1 在主界面Sequence视图下,Filter栏上填写过滤的关键字即可。如下图:

      

  5.2 在Charles菜单栏上,选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,填写相应信息即可。如下图:

       

6 使用Clarles协助ios开发

  Clarles通常用来截取本地的网络封包,但是如果需要,也可以截取其他设备上的网络请求。下面操作以Iphone为例。

  6.1 Clarles上进行设置,在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:

  

  6.2 iPhone上的设置

    首先需要先获取Charles运行所在的电脑的iP地址,打开Terminal,输入ifconfig en0,即可获得电脑的IP地址,如下图所示。

        

        在 iPhone 的 “ 设置 “->” 无线局域网 “ 中,可以看到当前连接的 wifi 名(注意:Charles运行所在的电脑连接的网络需要跟iPhone在同一个局域网里),通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:

       

       设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。

       

      截取移动设备中的 Https 通讯信息

    如果我们需要在 iOS 或 Android 机器上截取 Https 协议的通讯内容,还需要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL   Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。如下图所示:

    

    在设备上设置好 Charles 为代理后,在手机浏览器中访问地址:http://charlesproxy.com/getssl,即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。不过同样需要注意,默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择Enable SSL proxy 菜单项。

7 模拟慢速网络

  在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。

  在 Charles 的菜单上,选择 “Proxy”->”Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:

  

  如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。

总结

  通过 Charles 软件,我们可以很方便地在日常开发中,截取和调试网络请求内容,分析封包协议以及模拟慢速网络。用好 Charles 可以极大的方便我们对于带有网络请求的 App 的开发和调试。

     参考文章:http://blog.devtang.com/2015/11/14/charles-introduction/

posted on 2017-05-05 15:09  qq云帆  阅读(316)  评论(0编辑  收藏  举报