(一)Charles的介绍:
Charles是抓包调试工具,支持Mac、Windows、Unix以及移动端等跨平台与服务器的通信。Charles相当于一个插在服务器和客户端之间的“过滤器”。
(二)安装当前支持的版本Charles
(三)启动Charles后,自动配置浏览器和工具的代理设置,直接打开网页就可以抓取请求信息了。
1、设置为系统代理:
(1)选择菜单栏中的:Proxy->Mac OS X Proxy或者Windows Proxy,将Charles设置成系统代理
Proxy->Mozila Firefox Proxy:勾选则抓取计算机上Mozilla Firefox浏览器的请求
(2)注意:Chrome和Firefox浏览器默认不使用系统的代理服务器设置,而Charles是通过将自己设置成代理服务器来完成封包截取的,所以一般情况下无法截取Chrome和Firefox浏览器的网络通信内容,需要截取的话,需要在Chrome中设置成使用系统的代理服务器设置即可或者直接将代理服务器设置成127.0.0.1:8888。
2、设置代理https请求并添加证书
(1)选择菜单中的:Proxy->SSL Proxy Setting,弹出SSL代理设置窗口页面
(2)勾选Enable SSL Proxying,一般默认是勾选的状态
(3)点击Add,添加想要设置代理的域名,端口默认443
(4)一般都会截取到http协议相关的内容,但https截取不到,会以Unknown来显示,想要截取https协议相关的内容,需要按照Charles的CA证书:
步骤一:安装证书,在Charles菜单中选择:Help->SSL Proxying->Install Charles Root Certificate
步骤二:将所有的证书存储在:受信任的根证书颁发机构,下一步完成
(5)安装证书完成后,Charles默认也并不截取Https网络通讯的信息,若想截图某个网站的https请求,需要在该请求上右击,选择SSL Proxying。
(四)Charles手机抓包https设置以及证书安装
1、第一步,在Charles中,进行代理设置,并且设置好可以接入端口
(1)在Charles的菜单栏上选择:Proxy->Proxy Settings,输入端口号8888(不一定填写8888,也可填写其它),勾选上“Enable transparent HTTP proxying”
(2)在Charles中找到本机IP:Help->Local IP Address,IP Address展示就是当前本机IP地址,再或者到终端查看,Windows,cmd下,输入:ipconfig,查看本机IP。
2、第二步,按照Charles的IP和端口,手机进行配置
(1)前提:手机和电脑需要在同一个局域网内,并非是同一个IP端,同一个路由器下就OK
(2)在手机的设置->WLAN或无限局域网,可以查看到当前连接的WiFi名,点击查看详情,可以看到当前连接的WiFi的详细信息,包含IP地址、子网掩码等信息。在HTTP代理下,切换成手动,填写上Charles所在电脑的IP及端口号。
3、第三步,设置完成后,在手机上打开任意需要网络通讯的程序,Charles上会弹出请求连接的确认菜单,点击允许即可完成配置,此时配对成功,可以开始抓包了。
(五)弱网测试
1、Charles进行弱网测试,适用于PC端和移动端(IOS|Android)。
2、针对APP网络测试,弱网下的APP的功能是否正常(分为无网、2G、3G、4G、高延时、高丢包、假热点),无网络状态APP功能是否可用(页面呈现、信息数据是否完整),弱网体验测试(响应时间、加载呈现),网络切换后APP是正常使用,异常反馈展示(文案和形式)等等。
3、在Charles页面,头部菜单栏点击:Proxy->Throttle Settings
4、在Throttle Settings窗口界面:
(1)需要勾选:Enable Throttle
(2)需要勾选:Only for selected hosts (仅限定主机),Add仅限添加主机(添加主机需输入协议、主机、端口、路径、参数)
(3)预设节流Throttle preset,下拉列表可以选择需要设置的值(3G|56kbps Modem|4G等等)
(4)其他的选择,例如Bandwidth(带宽)、Utilisation(利用率)、Round-trip Latency(请求往返延迟)、MTU(最大传输单元)、Reliability(可靠性)、Stability(稳定性)、Unstable quality range(不稳定质量范围)
(六)拦截请求、返回
1、通过Charles抓包,可以拦截请求并篡改交互信息
2、可篡改客户端向服务器发起的请求信息(服务器收到的是假消息)
(1)浏览器中发送请求,Charles生成一个目录,选择某个节点,右键->Breakpoints
(2)浏览器刷新该请求,Charles会跳转到Breakpoints列表
(3)Edit Requests进行篡改请求信息,点击底部的执行Execute按钮
(4)返回浏览器查看服务器返回结果,页面信息显示的是否是篡改的信息
3、可篡改服务器返回客户端的响应结果(客户端看到的是假消息)
(1)设置Breakpoints,将请求信息拦截
(2)点击底部的Execute按钮,跳转到Edit Response界面
(3)删除Text中的所有信息,输入以下信息,点击Execute按钮
<h1>hello,how are you!</h1>
(4)返回浏览器查看页面,展示的信息是否是之前编辑的文本信息
(七)本地映射、远程映射
1、本地映射(Map Local Settings):把需要请求网络的文件映射为请求本地文件(适用场景:不断修改接口返回的信息来测试各种case)
在Charles界面,Tools->map local settings,分别填写源地址和本地的目标文件
2、远程映射(Map Remote settings):请求的地址,映射到一个远程地址
在Charles界面,Tools->map remote settings,分别填写网络重定向的源地址和目的地址,其他限制条件可以不填