blog/docs/other/tools/Charles.md

209 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Charles工具使用
date: 2020-06-27 22:36:20
tags: [Charles]
categories: [工具, Charles]
author: Anges黎梦
---
## 常用功能介绍和使用
**Charles的功能很强大这里只介绍几个常用的并且非常实用的功能**
   1. Charles抓取pc内容功能
   2. 截取移动设备上的网络请求包
   3.手动重复请求
   4.手动修改请求内容
   5. 过滤网络请求
   6. 代理转发
   7.控制网速
8.黑名单功能
**Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”**
   1. Structure 视图将网络请求按访问的域名分类
   2. Sequence 视图将网络请求按访问的时间排序 
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/1.png)
## Charles抓取pc内容功能
Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。
如果只抓取APP的包的话可关闭此配置这样不会出现太多的数据看着比较乱
mac下可通过Proxy —> macOS Proxy关闭 
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/2.png)
如果不需要使用也可从 Proxy—> Proxy setting 里将启动项关闭,
这样每次打开Charles时就会默认关闭/打开抓取pc内容的功能
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/3.png)
## 截取移动设备上的网络请求包
我们在调试移动APP时需要抓取APP发送的数据包
首先进行设置Proxy —> Proxy Settings 默认端口是8888根据实际情况可修改
查看本机IP地址Help —> Local IP Addresses
当手机连接代理的时候Charles会弹出请求问询是否同意抓包如果不小心拒绝了实际就无法抓包了
但是可以从Proxy—>access control setting中添加当前手机的IP地址就可以正常抓包了。
如果不想每换一个手机都要进行验证可以配置允许所有手机访问加入0.0.0.0/0IPv4或::/0IPv6
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/4.png)
如果打开抓包工具发现抓出的内容没有显示response和request的选项点击设置
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/5.png)
## 手动重复请求
Charles提供发送重复请求的功能可以用这个功能做一些简单的压测
选中链接后 右键可见repeatrepeat advanced 或可在tools中找到。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/6.png)
Repeat重复发包一次选中链接点击repeat之后即可将该请求重复一次如需重发一个域名下的全部的请求进入structure选择域名之后点击repeat即可全部请求。
repeat advanced重发多次相同的请求重发次数可设置。点击后弹出弹窗可进行重复的设置同样可从structure里重发某个域名下的全部请求。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/7.png)
**手动修改请求内容**
1.compose
右键选择compose即可修改参数和URL。修改完成点击execute即可执行。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/8.png)
2.breakpoint
右键选中需要的接口点击breakpoint点击之后进入proxy —>break settings即可看到该接口
双击该接口可修改接口相关的内容,修改后保存即可:
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/9.png)
修改完成后,只要重新请求这个接口,就会打开一个新的窗口,
提供修改编辑该接口的功能这里我只勾选了response所以只能编辑response编辑完成点击execute即可执行
需要注意的是,一般客户端都会有个超时时间,所以需要很快的修改,不然有的时候可能修改就会不生效;
这个方法适合需要修改一些简单的内容。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/10.png)
3.map local
maplocal功能是平时常用的修改请求的方式通过使某些接口走本地的方式可以随机改变response或request里的内容具体操作如下
选择需要修改的URL右键保存response
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/11.png)
在本地找到该请求并修改想要修改的内容修改完成后保存在Charles里再次选中该链接
右键并选择maplocal
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/12.png)
点击后会弹出新窗口在local path中选择刚才保存并修改后的文件的路径需要注意的是这里最好删除Query里的内容有些接口每次请求的时候可能有些参数是有些变化的有可能会导致匹配不到
选择完成保存后,再请求该接口,即可走到本地修改的路径下,达到修改请求内容的目的。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/13.png)
4.Rewrite
rewrite也可达到修改请求的效果并提供批量替换的功能如有需要可自行尝试选择tools—>rewrite
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/14.png)
在下面替换时rewrite提供了可批量替换替换某一个和精准匹配的选项可根据自己需要自行选择这里不在仔细说明。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/15.png)
## 过滤网络请求
1.Filter
在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。一般用于临时过滤
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/16.png)
2.Recording Settings
在Charles的菜单栏选择Proxy->Recording Settings
然后选择Include栏选择添加一个项目然后填入需要监控的协议主机地址端口号。
这样就可以只截取目标网站(固定过滤地址)
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/17.png)
3.Focus
右键需要的链接点击focus或者直接在view -> focused hosts中添加/修改)
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/18.png)
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/19.png)
加入focus后点击focused即可直接追踪这些链接。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/20.png)
## 代理转发
map remote
选择tools ->map remote选择enable map remote这个时候可以点击右下角add进行添加
像这里我添加了bbs.hupu.com转发到test.bbs.hupu.com。
如果勾选enable后请求该域名可直接访问test环境不需要切换hosts即可实现。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/21.png)
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/22.png)
## 控制网速
Throttle Setting
点击proxy ->Throttle Setting选择enable throtting
下面提供了各种模式供选择如果只想对某个hosts下的内容进行网速控制也可勾选only for selected hosts进行添加。
概念介绍Bandwidth带宽、Utilistation利用百分比、Round-trip往返延迟、MTU最大传输单元
3G300k-2Mbps左右
2.5G(GPRS)一般在100kbps
2GGSM一般在5-9kbps
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/23.png)
添加完成后,可看到顶部的小乌龟变了颜色,这个时候已经在进行网速控制了,可通过点击小乌龟取消网速控制;设置好之后,下次也可通过点击小乌龟快速开启网速控制。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/24.png)
## 黑名单功能
勾选黑名单黑名单即使选择接口返回错误的形式404 或者403
弹出界面后选择enable这里blocking action中可以选择drop connection”或者 “return 403 respose”选择第一个会直接返回404错误第二个则返回403。
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/25.png)
![](https://limeng-blog.oss-cn-hangzhou.aliyuncs.com/Charles/26.png)