抓包工具:Charles 使用笔记(CLY)
本质上就是一个HTTP代理服务器
一、抓包目的
# 1-查看接口数据
# 2-定位前后端问题
# 3-APP弱网测试
二、环境
# 安装配置jdk
# 安装charles,启动如果提示端口占用,无法打开的话,重启后再试
三、charles使用
1、设置电脑端代理
# chrome或IE浏览器
默认使用系统代理
# Firefox手动配置
手动配置代理或者配置为使用系统代理
# 打开charlese,查看是否正常抓取 http 请求
2、compose-篡改数据
# 目的:绕过前端校验,检查后端是否有校验
正常登录示例图:
使用compose复制请求,绕过前端校验,查看后端是否校验:
3、breakpoints:断点调试
# 目的:快速定位前后端问题
# 操作步骤
1-在前端页面触发,抓包捕获到对应的请求
2-选中请求,右键选择 Breakpoints(将这个接口添加到断点配置中,并自动开启断点调试)
3-在前端页面再次触发这个请求(charles自动弹出,跳转到断点调试页面)
4-点击 Edit Request,修改请求数据,然后点击 Execute,发送请求,回到前端页面查看页面显示结果
5-如果触发响应断点(charles自动弹出,跳转到断点调试页面)
6-点击 Edit Request,修改响应数据,然后点击 Execute,获取响应,回到前端页面查看页面显示结果
4、抓取电脑端HTTPS请求
# 流程:
# 1-安装charles根证书
# 2-开启SSL代理
未配置前:
安装 charles 的ca证书
# 安装过程:
# 点击证书弹窗 “安装证书” 》》 “本地计算机” 》》 “是” 》》 “将所有证书放入下列存储” 》》 “浏览” 》》
# 选择 ”受信任的根证书颁发机构“ 》》 “确认” 》》 “完成”
开启SSL代理
# 启动过程:
# 勾选 Enable SSL Proxying
# 配置 Location(需要抓取的IP和端口)
# 配置 Exclude(不需要抓取的IP和端口)
配置完成后:
5、抓取移动端HTTP请求
# 操作步骤
# 1-是移动端和电脑在用一个局域网下
# 2-电脑端配置
# 关掉防火墙
# 打开 charles,进入:Proxy >> Proxy Settings,开启 “Enable transparent HTTP proxying”
# 如果不想被 windows 请求干扰,取消勾选:Proxy >> Windows Proxy
# 3-移动端配置
# 设置网络代理(代理服务器主机名:“电脑IP”,代理服务器端口:“charles端口”)
# 4-完成设置后,执行手机任意网络请求(如果首次:charles会弹出手机请求连接的弹窗,点击 Allow)
# 5-开始抓包
6、抓取移动端HTTPS请求
# 操作步骤
# 1-完成抓取移动端HTTP请求相关配置,已经可以抓取HTTP的请求
# 2-安装charles的移动端根证书:
# 电脑端:
打开charles >> Help >> SSL Proxying >> Install Charles ROOT Certificate on a Mobile Device or Remote Browser >> 保持提示弹窗
# 移动端
(前提:配置好网络代理)移动端浏览器输入:chls.pro/ssl >> 输入证书名称(自己命名:charles) >> 安装(设置》安全》加密与凭证》安装证书》CA证书》仍然安装》选择浏览器下载的证书,进行安装)
# 电脑端:点击确定,如果没有抓到,请重启charles
# 移动端:重新发送请求(或重启应用)
# 3-开始抓包
# 4-备注:如果是IOS系统等,可能会需要其他设置,后面自行补充,流程基本一致
安装移动端CA证书
打开移动端,进入目标网页
安装证书
安装完成后,查看访问百度(安装证书之前,打开HTTPS的百度,会报该链接不是私密连接之类的,无法访问)
查看charles抓包数据
四、APP弱网测试
1、弱网测试背景
# 移动APP经常会进入一些网络不好的场景,查看在信号不好的时候,APP是否可以正常工作
2、关注点
# 1-网络不好的时候,是否有友好提示信息
# 2-网络不好的时候,是否重复提交数据
# 3-网络不好的时候,是否出现Crash(意外停止工作)、ANR(无响应)
3、模拟弱网测试
# 操作步骤
# 1-打开charles >> Proxy >> Throttle Settings >> 勾选 “Enable Throttling”
# 2-配置弱网
# 勾选 “Only for selected hosts”,配置需要限流的IP
# Throttle preset(预设网络环境)
# 其他参数
# 3-开始抓包
没开启弱网前:
开启弱网后:256kb
4、弱网设置指标
①Throttle preset:预设
# 预先设置好的常用的一些指标
②Bandwidth:带宽
#分为下载、上传速度
③Utilisation:利用率
# 总带宽的百分比,作为可用带宽的缩放比例,一般100%
④Round-trip Latency(ms):请求往返延迟
# 客户端和服务器之间往返通信延迟
⑤MTU:最大传输单元
# 任何传输的TCP数据包的最大尺寸
⑥Reliability:可靠性
# 丢包率
⑦Stability:稳定性
# 网络抖动
⑧Unstable quality range:不稳定质量范围
# 针对 Stability 中设置的范围
5、常用弱网指标
①2G
# 可以把上述配置添加进预设
五、常用抓包工具对比
1、fiddler
# 优点
1-功能强大、齐全
2-免费开源
# 缺点:
只支持 Windows 系统
2、charles
# 优点:
1-支持 Windows、MacOS、Linux(基于java)
2-简单易用
# 缺点:
不免费
3、wireshark
# 优点:
1-可以过滤特定网卡经过的数据,针对性强
2-可以抓取所有协议的报文,并以完整的OSI七层网络模型展示,非常适合学习和分析网络协议
3-提供了非常强大的过滤规则
4-可以结合TCPdump使用,分析线上服务器(Linux)下抓取的数据报文,定位线上问题
# 缺点:
1-需要使用者有一定的网络基础
2-无法分析 HTTPS 数据包,因为 wireshark 是在链路层获取数据包,所以获取的 HTTPS包时加密后的数据,解密比较复杂
4、Brup Suite
# 优点:
1-支持 Windows、MacOS、Linux(基于java)
2-不仅仅是抓包工具,还集成了很多实用小工具,具备其他功能,如HTTP请求转发、修改、扫描,很多安全测试用来进行半自动的网络安全审计,一些开发用它的扫描工具进行网站压力测试与攻击测试
# 缺点:
不免费
5、F12
# 优点:
1-简单轻量
2-抓取的报文可以得到明文数据
# 缺点:
1-层级只在应用层,只能抓取当前浏览器的报文,不能抓取其他数据报文
2-作用面和功能没有其他抓包工具强
6、TCPdump
# 优点:
1-专门用于 Linux 命令行的抓包工具,提供很多参数对网络数据包进行过滤
2-抓到的报文可以直接打印在 Linux 命令行界面,也可以保存为文件,并用 wireshark 工具打开进行分析
# 缺点:
需要使用者有一定的Linux系统操作能力