Charles的使用教程

Charles的基本功能使用

Charles这工具对于ios和Android来说已经是盛名在外了,工具很实用,功能也很强大,因为工作需要研究过段时间,

1.破解版安装

https://www.cnblogs.com/autobyme/p/6962100.html,破解的原理是让正版的注册那段代码的循环设为空,再一段一段找关联的代码进行修改最后生成新的jar,

诺就是这个牛掰的东东,替换正版的同jar文件,就ok了。完整的破解的东东就是如下喽:

 

2.主界面介绍 

 

3.功能

1).网络封包截取功能

使用最多的功能之一,原理:Charles通过将自己设置成系统的网络访问代理服务器,使所有的网络请求都通过它,以此达到对网络封包的截取和分析。下图就是Charles抓包的不同视图显示:

structure视图是将网络请求按访问的域名分类;

Sequence 视图是将网络请求按访问的时间排序。这个功能看个人喜爱设置。

可以对get或post请求的域名、带的参数或服务端是否返回数据等等进行查看,因为app测试时会出现各种各样的问题,有时作为测试工程师的我们自己把bug原因定位到,会加快工作效率,当然也会让你显得B格更高。

 

对于移动端的各种app的各种请求的截取就需要更多一步的设置,设置网络代理,原理就是pc端与移动端连接同一网络如图:

 

对于比我还小白的小白,找不到手机网络的代理的话,这里给个通用的导航:选择终端的网络长按几秒——修改网络——下拉选择高级选项——输入如图上的信息,输入完后保存就好

这里需要注意的问题:当你设置代理使用完后,要记着关闭代理或者连接其他的网络,要不然会导致手机无网络。

顺便提一嘴,服务器主机名就是你个人电脑的ip,获取方式为:win+r——cmd——ipconfig——看IP地址。

设置后,kill掉你需要抓包的app进程,重新进入,就会在Charles上显示各种与服务器交互的请求。

 

2).过滤网络请求

在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。

如下图所示:只抓163music.com的请求

 

 

Charles不仅仅只抓移动端的请求,对win上运行的浏览器上的各个网页都能进行抓包

点击“Proxy——win proxy”,就能抓去win上浏览器的网页请求,如下图:

4).Map 功能

修改服务器返回的内容

分 Map Remote 和 Map Local 两种,顾名思义,

Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

举例,我的工作使用:

路径:tools —— map remote —— 勾选enable  map remote —— add  —— map  from输入线上服的地址 —— map  to 输入 测试的地址 —— 点击ok

就成功映射地址,自由方便的切换环境,一次映射后会记录,只需添加一次便可,反之亦然。

如图:

Map Local(Tools->Map Local Settings),将网络响应定向至本地文件,从而达到修改返回内容的目的,如下图所示:

 

Breakpoints替换返回内容(右键->Breakpoints),

通过名称也可以看的出来,这个类似于一种断点的功能,代理会在发送请求的时候拦截并断点网络请求,这就为我们修改网络信息提供了便利。

可以编辑请求的参数和返回的参数,如下图所示:

反向代理,反向代理(Proxy→Reverse Proxies Settings)也是一个常用的功能,特别是对于本地开发且需要域名的情况下,如下图所示:

 

 

5).模拟网速

PC开发中常备限速,通常对于Chrome我们可以使用浏览器中的"Network中Online修改",下拉还有3G等设置,如下图所示:

在"Proxy→Throttle Settings"中,我们可以给所有的网络限速,也可以通过勾选"Only for selected hosts"限制指定的请求速度,如下图所示:

 

可以按已设置的各种网速下的选项进行测试,能测试出被测对象网络状况不太理想的状态。

 

修改网络请求内容,选中一条网络请求,然后右键选择"Compose",就会出现上图下半部分的框,可以修改几乎任何你可以想到的请求参数,点击"Execute"执行即可,如下图所示:

 

6).压测服务器

依次点击tools—Repeat Advanced

选择好并发线程数和打压次数,点击ok就能进行对产品的GET和POST请求进行测试服务器并发处理的性能,当然这里只是简单的进行压测,并且只能对Charles抓到的http协议的请求进行重复并发,缺点就是如TCP类的抓不到的就不能了,算是个小小的缺陷吧。

 

7).抓HTTPS包

Mac安装SSL证书,在Help→SSL Proxying→Install....,如下图所示:

 

选择后,就会出现证书下载,下载成功后会电脑”钥匙串访问“中看见(这里我已经安装并信任过了),然后双击下载的证书,勾选信任即可,如下图所示:

 

手机安装SSL证书,在SSL Proxying中勾选Install ...Mobile Device 会弹出一个框,用手机(处于代理状态下)登陆指定的url下载证书即可,如下图所示:

 

这时候你抓https的时候还是发现不行,乱码加unknown,如下图所示:

 

这时候我们还需要一步操作,就是将想要抓的https加入到SSL代理中,这样才能被Charles识别并解析,选择我们要抓的请求,右键选择"Enable SSL Proxying",如下图所示:

 

这时我们发现不再乱码和unknown了,如下图所示:

 

8).网页抓包

启动 Charles 后,需要将 Charles 设置成系统代理,选择菜单中的 “Proxy” –> “macOS Proxy” 来将 Charles 设置成系统代理。如下所示:

 

这样你会发现,你通过浏览器请求的网址都会出现在这里。点击某一个网址后,你会发现右边会出现这个网址请求的大概信息,点击具体的请求后会出现request和response等信息。如下图:

如果是https请求出现的是乱码,这时候你就需要安装Charles的CA证书了,首先到去 http://www.charlesproxy.com/ssl.zip 下载CA证书文件。双击crt文件,选择总是信任就可以了。

 

9).Rewrite 功能(内容替换)

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

例如,我们的客户端有一个 API 请求是获得用户昵称,而我当前的昵称是 “tangqiaoboy”,如下所示:

 

我们想试着直接修改网络返回值,将 tangqiaoboy 换成成 iosboy。于是我们启用 Rewrite 功能,然后设置如下的规则:

 

完成设置之后,我们就可以从 Charles 中看到,之后的 API 获得的昵称被自动 Rewrite 成了 iosboy,如下图所示:

 

10).Breakpoints 功能

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

下图是我们临时修改获取用户信息的 API,将用户的昵称进行了更改,修改完成后点击 “Execute” 则可以让网络请求继续进行。

 

需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。

 

11).反向代理

Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(www.yuantiku.com)的80端口上了。这样,当我访问本地的 61234 端口时,实际返回的内容会由 www.yuantiku.com 的 80 端口提供。

12).设置外部代理,解决与FQ软件的冲突

Charles 的原理是把自己设置成系统的代理服务器,但是在中国,由于工作需要,我们常常需要使用 Google 搜索,所以大部分程序员都有自己的FQ软件,而这些软件的基本原理,也是把自己设置成系统的代理服务器,来做到透明的FQ。

为了使得两者能够和平共处,我们可以在 Charles 的 External Proxy Settings 中,设置FQ的代理端口以及相关信息。同时,我们也要关闭相关FQ软件的自动设置,使其不主动修改系统代理,避免 Charles 失效。

 

12).手动修改接口请求数据

如:登录接口,接口复制到桌面,去掉返斜杠,用文本编辑器打开,如Notepad,Sublime等并把格式改为.json。可以手动改company:的状态,如

 

选中接口目录,右键选择Map Local..,然后选择刚创建的接口,点击ok,

 

14).设置请求的黑名单

不想某些请求发起,直接返回404,可以用黑名单

选择Tools->Black List,设置如下图:

15).缓存请求返回的内容

这个我用来干过做缓存数据用,让app在没有server的时候也能跑,

选择Tools->Mirror,设置如下图:

 总结:工作中使用Charles是总结的一点文档,不足之处还有很多,请大家多多评论指教。

 

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/Testing1105/p/9274559.html
今日推荐