一.Charles简介
Charles是mac上常用的截取网络封包的工具,Charles通过将自己设置成系统的网络访问代理服务器,使得所有的网络请求都要通过他来完成,从而实现网络封包的截取和分析。
Charles是一款收费软件,可以免费试用30天,未付费的用户之后仍可试用,但是每次的使用时间不能超过30分钟,并且每次启动将会大约10秒的延迟。
Charles的主要功能包括:
1.支持SSL代理,可以截取分析SSL的请求。
2.支持流量控制。可以模仿低速网络,以及等待时间较长的请求。
3支持Ajax调试,可以自动将json或者XML数据格式化,方便查看
4.支持AMF,可以将flash Remoting或 Flex Remoting信息格式化,方便查看
5.支持重发网络请求,方便后端调试
6.支持修改网络请求参数
7.支持网络请求的截取的动态修改。
8.检查HTML,CSS,RSS内容是否符合W3C标准。
二.Charles安装和使用
http://www.charlesproxy.com下载各个版本的Charles安装包,他就是dmg文件的,打开后正产安装即可。
网上也有老版charles破解版,百度一下就能找到。
SSL证书安装
如果你需要分析SSL协议的内容,那么你就需要安装Charles的CA证书:
1.http://www.charlesproxy.com/ssl.zip下载CA证书。
2.解压zip文件,双击.crt文件。
3.从钥匙串访问中可以看到已经添加成功的证书。
将Charles设置成系统代理
第一次启动Charles后,Charles会请求你给他设置系统代理的权限,你可以输入登陆密码以授予Charles该权限,也可以忽略该请求,然后在需要将Charles设置成系统代理时,选择菜单proxy-> macOX来将Charles设置check系统代理。
此时可查看request和response。
过滤网络请求
通常情况下,我们需要对网络请求进行过滤,只监控向指定服务器上发送的请求,这种需求,我们可以通过两种方法来设置:
1.在主界面中的Filter栏中填写需要过滤出来的关键字,例如我们服务器地址是www.baidu.com,则我们只需要在Filter栏中输入baidu即可。
2.在charles的菜单栏选择 proxy -> recording setting,然后选择include栏,选择添加一个项目,然后填入需要监控的协议、主机和端口号。这样就可以直接截取目标网站的封包了。
通常情况下,我们使用方法1做一些临时性的封包过滤,使用方法2做一些经常性的封包过滤。
使用Charles协助iOS开发
1.截取iPhone上的网路封包
charles通常用来存取本地的网络封包,但是当需要时,我们也可以用它来截取其他设备上的网络请求
charles设置
要截取iPhone的网络请求,我们首先需要将Charles的代理功能打开。在charles的菜单栏选择proxy -> proxySetting,填入代理端口8888,并且勾选“enalbe transparent http proxying"
就完成了Charles的设置。
iphone设置
查看电脑wifi,打开terminal,输入ifconfig.en0
在iPhone上设置->无限局域网中,可以看到当前WIFi名,通过单机右侧的详情按钮,可以看到当前连接的wifi详细信息,包括ip,子网掩码等。在其最底部有一个HTTP代理一项,我们将其切换为手动,将电脑的ip地址手动填到服务器栏,将端口设置为8888.
设置模拟器网络
在Charles 的菜单上,选择“proxy”-> "throttle setting"项,在对话的弹框中,勾选 “enable throttling”,并且可以设置 Throttle Preset的类型,如下图:
如果我们只是想模拟指定网站的网路速度,可以勾选上图中的“only for selected hosts”项,然后在对话框的下半部分设置中添加指定的hosts即可。
高级功能
Charles默认并不截取SSL的信息,如果你想截取某个网站上所有的SSL网络请求,可以在该请求上单击右键,选择“SSL Proxying”
修改网络请求的内容
有的时候为了调试服务器的接口,我们需要反复尝试不同的参数请求。charles可以方便地提供网络请求的修改和重发功能。只需要在以往的网路上单机右键,选择“edit”,即可创建一个可编辑的网络请求。