{{ v.name }}
{{ v.cls }}类
{{ v.price }} ¥{{ v.price }}
charles主要的功能包括:
支持ssl代理。可以截取分析ssl的请求。
支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。
支持ajax调试。可以自动将json或xml数据格式化,方便查看。
支持amf调试。可以将flashremoting或flexremoting信息格式化,方便查看。
支持重发网络请求,方便后端调试。
支持修改网络请求参数。
支持网络请求的截获并动态修改。
检查html,css和rss内容是否符合w3c标准。
去charles的官方网站(http://www.charlesproxy.com)下载最新版的charles安装包,是一个dmg后缀的文件。打开后将charles拖到application目录下即完成安装。
如果你需要截取分析ssl协议相关的内容。那么需要安装charles的ca证书。具体步骤如下:
去http://www.charlesproxy.com/ssl.zip下载ca证书文件。
解压该zip文件后,双击其中的.crt文件,这时候在弹出的菜单中选择“总是信任”,如下所示:
从钥匙串访问中即可看到添加成功的证书。如下所示:
之前提到,charles是通过将自己设置成代理服务器来完成封包截取的,所以使用charles的第一步是将其设置成系统的代理服务器。
启动charles后,第一次charles会请求你给它设置系统代理的权限。你可以输入登录密码授予charles该权限。你也可以忽略该请求,然后在需要将charles设置成系统代理时,选择菜单中的"proxy"->"macosxproxy"来将charles设置成系统代理。如下所示:
之后,你就可以看到源源不断的网络请求出现在charles的界面中。
charles主要提供2种查看封包的视图,分别名为“structure”和"sequence"。
structure视图将网络请求按访问的域名分类。
sequence视图将网络请求按访问的时间排序。
大家可以根据具体的需要在这两种视图之前来回切换。
对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果响应内容是json格式的,那么charles可以自动帮你将json内容格式化,方便你查看。
通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,我们有2种办法。
在主界面的中部的filter栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com,那么只需要在filter栏中填入yuantiku即可。
在charles的菜单栏选择"proxy"->"recordingsettings",然后选择include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:
通常情况下,我们使用方法1做一些临时性的封包过滤,使用方法2做一些经常性的封包过滤。
charles通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以iphone为例,讲解如何进行相应操作。
要截取iphone上的网络请求,我们首先需要将charles的代理功能打开。在charles的菜单栏上选择“proxy”->"proxysettings",填入代理端口8888,并且勾上"enabletransparenthttpproxying"就完成了在charles上的设置。如下图所示:
首先我们需要获取charles运行所在电脑的ip地址,打开terminal,输入ifconfigen0,即可获得该电脑的ip,如下图所示:
在iphone的“设置”->“无线局域网“中,可以看到当前连接的wifi名,通过点击右边的详情键,可以看到当前连接上的wifi的详细信息,包括ip地址,子网掩码等信息。在其最底部有“http代理”一项,我们将其切换成手动,然后填上charles运行所在的电脑的ip,以及端口号8888,如下图所示:
设置好之后,我们打开iphone上的任意需要网络通讯的程序,就可以看到charles弹出iphone请求连接的确认菜单(如下图所示),点击“allow”即可完成设置。
charles默认并不截取ssl的信息,如果你想对截取某个网站上的所有ssl网络请求,可以在该请求上右击,选择sslproxy,如下图所示:
这样,对于该host的所有ssl请求可以被截取到了。
在做iphone开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。charles对此需求提供了很好的支持。
在charles的菜单上,选择"proxy"->"throttlesetting"项,在之后弹出的对话框中,我们可以勾选上“enablethrottling”,并且可以设置throttlepreset的类型。如下图所示:
如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的"onlyforselectedhosts"项,然后在对话框的下半部分设置中增加指定的hosts项即可。
有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。charles可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择“edit”,即可创建一个可编辑的网络请求。如下所示:
我们可以修改该请求的任何信息,包括url地址,端口,参数等,之后点击“execute”即可发送该修改后的网络请求(如下图所示)。charles支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便。