抓包:用特定的工具获取客户端与服务端发送和返回的数据包。目的是分析数据包的内容与协议,从而来判断是否符合设计要求。
什么情况下需要抓包?
1.开发要你重现bug,截取数据,定位问题的时候
2.判断一个问题是前端bug还是后端bug的时候
3.开发要你做接口测试,但又没给你接口文档的情况--》方法,接口地址,传递参数,头部,返回内容
4.在不修改任何环境的情况下,修改返回的结果,即通常说的mock--》模拟接口
1:下载:

2:安装:
按照提示安装即可。
3:web 抓包:
1:web抓http协议:
Charles Web抓包非常简单,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置,接下来我就就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。
2:web抓https协议:
1:https协议需要安装SSL证书才可以抓包;
2:Charles下配置;
- 点击顶部菜单栏【Help】-->选择【SSL Proxying】,点击【install Charles Root Certificate 】安装Charles根证书即可; 这里由于用的笔记本截图快捷键问题,没发截取,这里截取证书安装,证书安装一直下一步就可以;






- 点击【Proxy】-->【SSL Proxying Settings...】 ;
- 在弹出选项卡中,勾选【Enable SSL Proxying】点击【add】,在Host输入【*】表示接收任何主机,在Prot输入【443】最后点击【ok】保存。

4:App抓包
手机抓包需要在电脑端配置下,并且同时需要手机和电脑在同一网络下
1:电脑配置:
1:启动安装好的Charles抓包工具;
2:点击【Help】-->【local IP Address】获取下ip地址,也可以直接通过电脑自带的CMD命令来获取电脑IP【ipconfig】;

3:点击【Proxy】-->【Proxy Settings】我们在设置下端口号“9999”;(端口号可自行设置,注意不要和电脑别的软件端口一致,会导致冲突)

2:手机端设置:
1,打开手机的设置页面;
2,选择【WIFI】;
3,点击连接的WIFI后面的感叹号 & 长按连接的WIFI;
4,点击【配置代理】-->【手动】;
5,输入本机【IP地址】以及端口号【9999】;
6,点击【存储】



接下里验证下手机请求,当我们看到Charles里能抓到这个连接,就说明配置没问题,看到unknown,这个不要紧,那是我们没有安装针对手机端的证书,下面继续我们手机端HTTPS证书安装。

如果出现下图,将框起来的url添加到【proxy】->【Access Control Settings】

3:抓取手机HTTPS协议
1:点击顶部菜单栏【Help】-->选择【SSL Proxying】,点击【install Charles Root Certificate】安装Charles根证书即可;(和web安装https证书一致,可上滑查看)
2:确认手机已连接Charles代理,打开浏览器输入chls.pro/ssl,下载手机端证书;
如果手机连接Charles代理后无网络,将电脑IP放入【proxy】->【Access Control Settings】中

3:安装证书即可
如果证书无法安装将证书后缀修改为‘.crt’。
4:如果浏览器下载后安装时提示去设置中安装;

- 设置中找到安装证书;
- 进入后选择安装CA证书,找到证书,进行安装即可(部分手机需要有PIN密码才可安装证书)
至此,已经可以使用Charles抓取手机http协议了
5:数据筛选:
1:filter功能过滤请求:
filter输入框输入要查找的关键字,就自动筛选出 URL 中带指定关键字的网络请求

2:Find in Session,在会话中查找
按ctrl+F,出现查找会话框,输入要找的接口,点击find按钮,就可以过滤对应的请求

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

4:过滤焦点域名,Focus方法
Charles面板右侧请求列表,在目标的请求上右键,选中focus(此时,该域名已经被设置为一个焦点标记了),再次发起请求,focus的请求显示在最上面,非focus的请求都显示在Other Host下面,这样只要看focus的请求就好。

6:弱网:
1:点击【Proxy】-->【Throttle Setting】;
2:勾选上【Enable Throttle】,也可以勾选【only for selected host 】 设置一个指定注解访问进行网络限制,不影响其他软件;
3,在【Throttle preset】选择常见预设的网络情况,也可以在【Bandwidth】自己设置网络的上传和下载速率 。

Enable Throttling:可以指定域名拦截,也可以所有请求拦截
Only for selected hosts:勾选后可选择需要配置弱网的设备或者软件

Protocol:选择http或者https协议
Host:设备或软件的域名
Port:设备或软件的端口
Throttle preseet:软件自带的预设弱网配置
Bandwidth(kdps):自行设置弱网的上行和下行
Utilisation(%):宽带利用率
Round-trip latecy(ms) :第一个请求的时延
MTU(bytes):最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况
Reliability(%):指连接的可靠性。用于模拟网络不稳定。
Stability(%):连接稳定性,也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。
Unstable quality range(%):不稳定数量范围
7:打断点篡改数据:
在我们的测试场景中,可能需求修改请求参数或者返回参数进行测试,比如支付方面的接口,涉及用户登陆权限的接口参数
1:修改请求数据
1:选择请求会话右键勾选【Breakpoints】这是我们会发现工具栏有个六边形按钮已经变为红色 ;
2:设置断点,点击菜单栏【proxy】勾选【Breakoint Setting ...】这是会弹出断点设置弹窗;

3:在弹出的断点设置弹窗,双击想打断点的接口,进行断点编辑;
4:编辑断点,如果修改Request数据,就将Request勾选,如果修改Response数据,就将Response勾选,当然你也可以都勾选;
5:重新请求接口,会弹出下图界面,输入要更改的数据,点击Execute重新请求

6:数据篡改成功

浙公网安备 33010602011771号