0%

360度玩转charles

Charles是一款http代理工具,同类的软件有wireshark,fiddler,burp suite。各有侧重点不同,但核心的代理功能设置基本类似。该软件是用Java写的,能够在Windows,Mac,Linux上使用。因其界面简洁、功能齐全在作者一直习惯用这款工具,下面就使用的各方面做个简单的介绍。

1.安装

下载官方的安装包Charles download,这个是官方最新收费版本,不花钱也能用只是有部分限制。
安装后我们需要对PC做个简单的配置

如下:

1.代理端口设置:(这个是可以根据需要设置默认8888)

2.允许抓包的ssl域名设置:(下图是全匹配配置,看需要可以改成指定)

3.允许代理的设备ip设置:(这里默认是空的,当有远端设备代理接入时会弹窗是否允许,如图设置会允许所有设备不用再手动允许)

4.charles本身设置完了,我们还需要确认防火墙是否允许该端口的出入数据,这里可以配置指定端口的出入站规则,也可以指定软件的出入站,如下图:

2.抓包PC

对于PC端的抓包charles默认会抓的IE的数据,可以把Proxy > Windows Proxy 的勾去掉。
这里推荐使用firefox浏览器来抓包,因为它自带的证书管理,可以免去很烦人的证书信任。
但这里还是要做个简单的证书配置:

1.导出证书


2.导入火狐证书管理器

3.设置浏览器代理为

我这里使用的火狐的插件FoxyProxy Basic ,如果没有设置IE的代理为127.0.0.1:8888也可以,这样是设置后浏览器的数据就是走的charles代理,如果本地没有指定host配置,这时的所请求到的版本和PC网络一致。关于要对应特定代理验收的版本,请看后面的介绍。

3.抓包APP

对于APP的抓包,IOS和Android的配置略有不同:
通用的要求是:PC和移动设备必须要能够ping通

IOS

1.设置代理到起了Charles的主机。(点击wifi名后面的 !进入设置页面如下)

2.Safari访问:http://chls.pro/ssl 允许并安装证书

3.进入设置 > 通用 > 关于本机 > 证书信任设置(拉到最底下)

此时设备的请求应该都已到charles中可以看到了。

Android

这里要注意下,安卓6.0-7.0的版本及部分8.0版本的手机,https的证书信任需修改APP源码,这里不做介绍。

1.设置代理到起了Charles的主机。(以三星为例:长按wifi名,进入高级设置,代理模式改为手动)

2.自带浏览器访问:http://chls.pro/ssl 设置任意名称,(这里会要求设置解锁密码)

3.如果部分手机,无法通过上面的访问自动安装证书。可以通过设置里“从设备安装证书”,具体位置视厂商不同,一般在安全隐私相关设置中。

下面介绍的是一些开发测试过程中常用的招式

4.请求跳转

应用场景:1.开发联调 2.内网测试

如APP打包的是请求到192.168.3.4:80,但我需要请求到指定19.168.66.66:6005的机器上。

在Tools > Map Remote Settings 中 Add一个跳转并勾选启用,就可以了。(这里也可以直接右键已经发出的请求,点击Map Remote…设置)

这里有个小技巧,就是我们在测试部分内网环境的触屏页面时,即使装了https证书,还是无法获取正常的数据。这是由于内网环境https证书配置异常导致的,我们可以把这个https的请求转成http。如果该域名设置了强制使用https可以看到我们的请求会无限重定向,此时关闭https转http的设置就可以正常请求到数据了

5.断点调试

应用场景:1.异常数据调试 2.安全测试 3.请求头修改模拟IP

我们在接口调试时,有些数据无法通过前端流程去生成,此时可以通过断点调试的方式强行加戏。如ID为3456的公司不再搜索列表,我们可以修改请求返回的数据给它加进去。

第一次我们需要正常请求一次,右键该请求添加断点,再次请求时会弹出框,2次分别为request和response,按需求修改即可。(部分客户端会有请求超时限制,手速跟不上可以把需要的返回值在文本编辑器中编辑好,复制进来即可)



6.代理配置

应用场景:1.灰度验收 2.组合抓包

我们可以指定charles需要走的网络请求代理,通常在指定运营商灰度,或者内容上线版本模拟环境时可以这么去做。同时该功能可以使我们,将代理服务器代理到其它代理,达到一个请求多个代理查看的目的。

可以分别设置http\https\socket,和浏览器的代理设置一样,我们也可以设置通配符,把不需要走代理的域名排除出去。(这个在测试内网支付时通常都需要特殊配置下。)

7.网速模拟

应用场景: 1. 弱网测试覆盖

弱网设置里,我们可以设置指定的域名被限速,也可以全局限速。

8.扒数据

应用场景:1.扒数据

这个属于花式玩法,我们知道大部份的视频或音频网站都有防盗防下载的防范。如果需要,我们还是可以通过挂charles代理的方式,保存下我们需要的媒体数据。


对于移动设备scoket请求的抓包,charles也可以结合wireshark来实现。关于这款代理工具的更多用法大家还可以根据业务需要去扩展。