什么是Charles
在我们干开发的过程中,总免不了碰到网络问题。这个时候我们往往的处理方法是截个包,看看到底我发送和接收了些什么鬼.....
这个时候Charles 应运而生。一款屌的不行的截包工具,好用到没朋友。
那么Charles屌在哪里呢???主要功能如下啦:
- 支持SSL代理,可以截取分析SSL的请求
- 支持流量控制。可以模拟慢速网络(2G,3G),以及等待时间较长的请求
- 支持AJAX调试。可以自动把JSON或者XML数据格式化,方便查看
- 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看
- 支持重发网络请求,方便后端调试
- 支持修改网络请求参数
- 支持网络请求的截取和动态修改
- 检查HTML,CSS和RSS内容是否符合W3C标准
那么接下来的文章,我们来一个个撸这些功能。
附加解释
什么时候SSL
SSL介绍:
安全套接字(Secure Socket Layer,SSL)协议是Web浏览器与Web服务器之间安全交换信息的协议,提供两个基本的安全服务:鉴别与保密。
SSL的位置:
SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。
安装
下载地址
这个就给一个link吧,自己去下就好了。我是萌萌哒的下载地址
安装SSL证书
也是去下载过来,安装 然后认证就好了。我又是萌萌哒的下载地址
主界面介绍
Charles主要提供俩种查看包的视图,分别为“Structure”和“Sequence”。
- Structure 视图将网络请求按访问的域名分类
- Sequence 视图将网络请求按访问的时间排序
这个可以按照自己习惯,使用俩总视图。
还有就是请求过滤,一般都是在Filter里面输入要过滤的字符就可以过滤出自己服务器的API请求了。
Charles在iOS开发中的干货
截取iPhone上的网络封包
-
在Charles端的设置
要截取iPhone上的网络请求,我们首先要将Charles的代理功能打开。在Charles的菜单中选择: "Proxy" --> "Proxy Settings",填入代理端口 8888,并勾选 "Enable transparent HTTP proxying",这样就完成了在Charles上的设置了。
-
在iPhone上的设置
首先,我们需要知道我们电脑的IP。打开终端,输入 ifconfig en0。获得如下的结果
然后就是设置自己的iPhone了,手动设置IP。在服务器那个地方填上自己的IP,然后端口改为 8888.
设置好之后,我们打开iPhone上的任意程序,就可以看到Charles在 bingling bingling 的跳。那么点击"Allow"就可以了。
模拟慢速网络
在开发的时候,我们总要抱着用户一边蹲坑一般用咱App的想法。所以我们要测试一下慢速网络。
选择“Proxy”-->"Throttle Setting". 在弹出框上勾选“Enabel Throttling”,并可以设置 Throttle Preset的类型。如图:
修改网络请求
有些时候为了调试服务器接口,我们需要反复尝试不同的参数请求网络。这个时候Charles给我们提供了重发功能。只要选择Edit就可以了。如下图:
点击之后,具体修改 估计 地球人都知道了。。。。
就是修改好内容之后,点击“Execute” 就可以了。
修改服务器返回内容
Breakpoints
这个断点就和Xcode的断点类似。可以中断,然后任意修改发送个就收到的数据。
参考致谢
唐巧大神的《iOS开发进阶》