抓包测试
1.概念:
抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全
2.为什么抓包测试?
1:有时候公司中接口文档某几个信息可能不详细,要测试这些接口的请求参数与响应结果,以及数据传输是否安全,那么可以使用抓包工具
2:通过抓取数据请求,可以放到Jmeter中对服务器做压力或者接口测试
3:通过抓包工具,可以分析 接口的请求参数,响应结果,以及数据传输是否安全
4:通过抓包工具,可以编辑请求或者响应,达到测试效果
3.抓包http请求原理
4.抓包工具之Charles
4.1charles安装与破解(未破解半小时退出)
1.双击安装charles-proxy-4.1.4-win64.msi
2.破解:
help-->register charles
* https://zhile.io
* 48891cf209c6d32bf4
3.关闭电脑的防火墙
4.2抓取http请求
* 设置charles允许代理 proxy-->proxy setting -->勾选enable....
* 设置手机/模拟器手动代理 ip地址 端口号
* 操作手机,弹出是否允许的询问框,点击allow
4.3抓取内容分析:
4.4添加过滤器
4.5抓取https原理
4.6charles抓包完整设置
4.7断点
proxy-->breakpoints setting -->enable breakpoints(允许断点)
* 断请求
* 断响应
断点操作的原因
* 我们在做前后台联调测试的时候,需要修改后台数据库中的数据,来查看前台页面上数据是否对应的改变,但是很多情况下我们没有修改数据库的权限,可以借助于断响应的操作来模拟的修改后台数据
* 1.把响应的数据 全部删除 再给app返回 .,...判断app有没有做非空校验,如果没有做app将会崩溃
* 2.改变某一个字段的值 来查看页面上的数据是否会动态改变
注意 不做断点操作的时候 直接关闭断点
4.8弱网测试
* 原理:限制带宽
proxy-->throttle setting-->勾选enable throttle-->only for select hosts(只限速选中的主机路径)
charles模拟弱网的原理是限制带宽;fiddler模拟弱网是延长时间
charles可以只对某个主机路径进行限速;而fiddler是对所有的路径进行限速
2G:15-20kb/s
* 一般设置10kb/s的速度
注意:不使用的时候 一定关闭限速
4.9模拟本地数据MapLocal
* 不使用的时候 关闭map local : tools-->map local-->取消勾选enable map local
*
什么时候map local模拟本地数据的功能?
* 我们在做前后台联调测试的时候,需要修改后台数据库中的数据,来查看前台页面是否会 对应改变,但是没有数据库修改权限,可以借助map local的功能,通过修改本地数据来模拟的修改后台数据库数据
4.10模拟远程服务器MapRemote
4.11web_PC_小程序抓包
演示:
web网站抓包:12306
PC客户端:酷我音乐
* 注意,小程序抓包需要使用mumu模拟器,并且处于调试阶段才能抓取或者使用ios或者android7.0以后的系统,微信开发平台设置证书信任
4.12抓包常见问题
是不是所有的app都能被抓取到数据?
* 如果一个上线的app能够被抓取到数据 本身就是不安全的
* 一个上线的app是不应该被抓取到数据的
避免被抓包的方式:
1.可以判断是否使用了代理服务器,如果使用代理服务器不继续网络请求
2.前台程序员还可以判断证书的正确性,如果是假证书不继续发送请求,也抓取不到
3.让抓 但是抓取出来的请求 和 响应全都是加密的乱码数据,不是明文
app抓取不到数据的表现:
* 不开代理服务器charles,app正常能够使用
* 开了代理服务器之后,发现app总是提示网络异常提示证书错误
到公司之后 按照步骤设置手机 charles等,先抓取瓜子二手车,如果抓不到说明设置有问题;;;如果抓到了,但是你们公司的app抓不到,说明你们公司的app不让抓;需要程序员给你打包一个可以抓包的apk文件
4.13抓包工具能干什么
* 分析接口响应时间及响应速度是否满足要求(2-5-8原则),接口响应时间一般1s内
举例:其他页面打开都会正常显示,但是其中一个页面需要等待5s左右才显示?
1.接口响应时间长 2.前台程序员接受到数据之后,解析渲染到页面的时间长
* 分析接口中关键的数据(请求+响应)有没有进行加密传递 --- 安全性
* 抓包工具还可以进行断点操作,可以判断app有没网络重连机制
* 断请求可以修改请求方式 请求参数等 来达到接口测试效果
* 断响应可以通过修改响应的数据来模拟修改后台服务器的数据,来查看前台页面是否对应改变
* map local可以通过修改本地数据,来模拟修改后台服务器数据,来查看前台页面是否对应改变
前后台联调测试的时候
* 可以模拟弱网来进行弱网测试
* 可以定位bug是在前台还是后台????
举例:进入页面展示空白,其他页面都没有问题,bug属于前台还是后台?
* 定位bug过程::::::!!!!!!
1.抓取请求,分析请求参数 路径 方式等,跟接口文档中的接口进行对比,如果有问题,说明前台程序员发送的请求是有问题的,bug在前台
2.查看响应内容,如果有问题说明后台返回数据有问题,bug属于后台
3.如果后台返回数据也正常,说明前台程序员在接受到数据之后的解析展示有问题,bug属于前台
5.抓包工具Fiddler
双击安装FiddlerSetup.exe
- 抓取http请求,设置fidder
* tools-->options-->connections-->勾选allow remote computer to connect(允许远程设备连接到fiddler上)
- 设置手机上网经过代理服务器(模拟器/真机):
* 必须保证手机网络和电脑网络在同一个网络内(要么连接同一个wifi,要么电脑开wifi,手机连接)
* 长按-->修改网络-->显示高级选项-->手动代理-->电脑ip和fiddler端口号
通过以上设置,可以进行http请求的抓取
* 以抓取 儿歌多多 为例-->http请求
- 抓取内容的分析
- 添加过滤器
filter-->勾选use filter-->show only the following hosts(只展示下面的主机)-->填写主机名,分号隔开
* 过滤器不使用的时候取消勾选
- 抓包https
* 在抓取http设置的基础上进行以下的设置fiddler
tools-->options-->https
勾选decrypt https....> 可能会弹出安装证书的询问框(信任fiddler证书吗?)
* 如果不弹框,action-->reset all ca(重置 删除证书)
* 在手机上安装证书(在抓取http设置基础上)
浏览器上输入ip+端口号,进行证书下载安装
瓜子二手车为例
- 断点操作
rules-->automatic breakpoints-->
- 断请求
* before request 请求之前 :修改请求方式 请求路径 请求头 请求参数等...
编辑请求的内容 查看对应的响应结果,来达到接口测试的目的
- 断响应
* after response 响应之后: 修改响应内容 响应头....
有时需要修改数据库中的数据,查看页面内容是否动态跟随改变,但是不是所有人都有数据库操作权限,此时可以借助断点编辑响应的内容 查看页面展示内容是否动态改变
断点可以查看app里面网络有没有重连机制,,,一个网络健壮的app是应该有重连机制的
- 模拟弱网
rules--->custome rules
搜索m_Simulate
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
//1000/300=3.3kb/s 1000/1kb/s=1000ms
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "300";
}
1000/想要的速度(kb/s) = 延时毫秒值--->1000/0.2kb/s = 5000
* fiddler限速的原理是通过延长请求/响应的时间进行上行 下行的限速
让规则起作用,打开规则
* rules-->performance-->勾选 simulate modem speed(启用限速规则)
- 模拟本地数据
6.抓包常见bug
* 1.抓取数据过程中,发现其他接口响应时间正常,有一个接口返回数据量不是特别大,但是响应时间已经超过了1S
* 在抓我们公司app的时候,发现线上的版本也能抓取数据,并且是明文传递 --- 登录接口(12306)
* 在抓包过程中,断请求或者响应发现我们app刚开始没有网络重连
* 通过断响应把响应的数据删除或者删除了部分数据,破坏了原来后台返回的json内容,前台发生崩溃,说明前台程序员没有对后台返回的数据进行判断
* 通过断响应修改某个字段的内容,例如商品的名称/价格,发现app页面上没有动态改变,原因前台程序员把商品名称/价格在前台写的是固定的
* 在抓包工具模拟弱网的时候 数据返回延时 程序崩溃等