前言
开发过程中经常会使用到抓包工具来进行代理。如果你想把测试机或者开发机甚至是线上的文件换成你本地的文件进行快速验证。这种方法会很方便。尤其是遇到线上Bug。本篇文章主要介绍了charles的安装及使用,围绕以下几点进行介绍:
- charles的安装
- charles与手机端的代理配置
- charles的使用
charles的安装
安装这里不做太多赘述。网上到处都是安装教程,步骤也比较简单。有一种更换jar包来破解的方式,不过个人建议还是在官网下载。然后使用注册码破解即可,提供一组注册码如下
// Charles 4.2目前是最新版,可用。
Registered Name: zhile.io
License Key: 48891cf209c6d32bf4
charles与手机端的代理配置
配置步骤
- 想要将测试机换成本地文件,首先要保证此时这个手机和电脑处于同一局域网之下。
- 查询电脑本地ip和charles所占用端口。(电脑ip可以使用命令行ipconfig查询。charles占用端口可以在charles的proxy->Proxy Settings查询。我们使用的是http代理。故HTTP Proxy 的port就是我们要查询的端口号,一般默认为8888)
- 手机连接与电脑相同的wifi,并在wifi设置中手动设置http代理。将刚才查询的电脑ip和charles端口号输入即可。(一般长按wifi或点击所连wifi后的!即可进入http代理设置)
- 用手机进入任意会向服务器发起请求的网页,此时的charles会弹出一个对话框,点击allow即可
常见的问题
- 抓到的包显示unknow或乱码。
造成这个问题的原因是访问了https网页。由于https的安全性,需要下载相关的信任证书才可以正常使用。进入charles的Help->SSL Proxying->install charles root certificate为电脑下载证书。这里建议一开始下载时就将证书存储在受信任的根证书颁发机构,后面就不需要再添加信任了。此外,手机也需要下载证书,同样进入charles的Help->SSL Proxying->install charles root certificate on a mobile device or remote browser然后在手机上输入弹出对话框的网址即可下载证书。现在应该可以正常使用了。
- iOS相关
在ios端下载证书时,打开网址后按照提示安装描述文件,这里它会自动引导你去验证,跟着提示操作就可以了。但是此时返回charles还是无法正常抓包。这时其实还有一个信任证书的设置。需要打开 设置->通用->关于本机->证书信任设置。勾选刚刚安装的证书,此时就可以正常使用了。
charles的使用
开发过程中,我们主要会使用抓包工具来定位bug位置。现在,先来认识一下charles的界面。charles有两种界面分别是structure和sequence。structure视图是将网络请求按访问的域名分类,Sequence 视图是将网络请求按访问的时间排序。工具栏功能用下图说明
此外,charles拥有很多使用起来很方便的功能,下面来介绍几个功能。
过滤网络包
我们在抓取请求时,许多时不需要关注的资源请求。这时候可以通过过滤网络包来过滤掉这些请求,在这里有三种实现方式。
- 第一种
直接在sequence中的filter输入需要过滤的东西。可以是简单的网址甚至是关键字,就会只保留这一部分的请求,复杂一点的可以点击后面的setting,使用正则表达式。
- 第二种
右键需要过滤的网址。点击Focus,然后选中Filter后面的Focussed
- 第三种
点击charles中的Proxy->Recording Settings,选择弹出框中的include栏。点击Add。填入需要监控的协议,主机地址,端口号。
这三种方法的区别是,前两种主要适用于一些临时的过滤,第三种是经常性过滤。
压力测试
当我们需要对一个地址不停的请求访问,做压力测试时。首先选中这个地址,然后打开Tools->Advanced Repeat。在弹出框中选择并发线程数和打压次数就可以开始测试了。
修改服务器返回内容
charles提供了Map功能、Rewrite功能以及Breakpoints功能。都可以达到修改服务器返回内容的目的。下面,逐一介绍这三种功能。
Map功能
charles的Map分为Map Remote和Map Local两种。Map Remote是将网络请求重定向到另一个网址请求地址,Map Local是指将网络重定向到本地文件。
- Map Local
右击需要重定向到本地文件的请求点击Save Response。记住存储在本地的位置。然后进入Tools->Map Local勾选Enable Map Local。点击Add添加你要定向到哪个网址的URL。在弹出框中填写该网址,并且在下面的Map To填写刚刚记住的本地位置。点击所有OK后在浏览器输入刚设置的URL,可以看到,该URL对应的网页被重定向到本地文件了。
- Map Remote
进入 Tools->Map Remote 我这里是把baidu的网址定向到taobao
Rewrite功能
Rewrite功能可以对请求响应的内容进行修改。首先Tools->Rewrite。勾选Enable Rewrite,添加一个set。举例如下图
将cookie中的ctid从18修改成11
Breakpoints功能
Breakpoints和普通IDE一样都是断点调试。它不仅可以拦截客户端的request、response还可以进行修改。 对需要过滤的网址右击选中Breakpoints。然后在工具栏中点击断点按钮,此时在网页发起请求后可以看到程序被中断到Request,这个时候可以修改相关参数。
修改结束点击Execute可以结束当前中断得到服务器响应。得到服务器响应后我们依然可以编辑直到点击Execute。
限制网络速度,模拟慢网
charles可以达到模拟各种网络环境的效果,可以在Proxy->Throttle Setting进行设置