使用Fiddler对手机App应用进行抓包,可以对App接口进行测试,也可以了解App传输中流量使用及请求响应情况,从而测试数据传输过程中流量使用的是否合理
抓包过程:
1、Fiddler设置
1)启动Fiddler->Tools->Fiddler Options
2)HTTPS选项卡中,设置如下,勾选过程中如有弹窗允许即可;
3) Connections选项卡中,勾选Allow remote computers to connect,勾选时如有弹窗确定即可;
Fiddler listens on port:8888是监控端口;
2、手机设置
1)手机和电脑连同一个WiFi;
2)通过ipconfig查看计算机IP地址,如本机IP地址为:192.168.9.150;打开手机无线网络,选择连接的WiFi,设置代理,IP输入192.168.9.150,端口:8888;
3)手机浏览器访问:192.168.9.150:8888,出现响应页面说明连接成功,点击响应界面中的“fiddlerRoot certificate”安装证书,然后就可以操作App通过Fiddler进行抓包了。
可以在Fiddler Statistics中查看各个请求发送和接受数据大小及传输时间
面板各字段含义
3 . fiddler模拟限速的原理
我们可以通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。
他提供了一个功能,让我们模拟低速网路环境…启用方法如下:
Rules → Performances → Simulate Modem Speeds :模拟调制解调器的速度
启动fiddler需要进行如下设置:
1.设置端口号:
allow remote computers to connect “允许远程计算机连接”为设置的代理可以连接到fiddle上,必须勾选
2.重启fiddle;
3.设置模拟调制解调器的速度:
4.设置手机代理
手机代理设置“ip地址为本机的ip,端口号为之前设置的端口号(确保端口号不被占用)”
5.手动设置设置上行,下行速率,模拟网路速度的原理,每上传/下载1KB 要delay 多久…
fiddler中延迟设置公式:
要根据上行和下行的带宽要求来计算延迟时间,可以使用以下公式:
延迟时间(毫秒) = 数据包大小(比特) / 带宽(比特/秒) * 1000
对于上行带宽要求为 10kb/s,即 10,000 比特/秒:
- 如果要发送一个 1000 比特的数据包,延迟时间 = 1000 / 10000 * 1000 = 100 毫秒
对于下行带宽要求为 5kb/s,即 5,000 比特/秒:
- 如果要接收一个 1000 比特的数据包,延迟时间 = 1000 / 5000 * 1000 = 200 毫秒
根据上述公式,您可以根据实际的数据包大小和带宽要求来计算对应的上行和下行延迟时间。
各个网络的上行速率、下行速率参考值:
不同的移动网络标准(如5G、4G、3G、2G)具有不同的上行速率和下行速率。以下是它们的典型速率范围:
- 5G网络:理论上行速率可达数千兆比特每秒(Gbps),下行速率可达数千兆比特每秒(Gbps)。
- 4G网络:上行速率通常在1Mbps到50Mbps之间,下行速率通常在10Mbps到300Mbps之间。
- 3G网络:上行速率通常在100Kbps到2Mbps之间,下行速率通常在400Kbps到10Mbps之间。
- 2G网络:上行速率通常在20Kbps到250Kbps之间,下行速率通常在20Kbps到500Kbps之间。
需要注意的是,这些速率是理论值,实际速率可能会受到网络负载、信号强度、设备性能等因素的影响而有所不同。
查看发送包的大小:
查找代码如下:
if (m_SimulateModem) {
//Delay sends by 300ms per KB uploaded. //每延迟300ms发送1kb的数据,也就是每1s发送3kb的数据
oSession["request-trickle-delay"] = 300
//Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = 150//每延迟150ms下行1kb的数据
}
请注意,当你存档之后,原本已经勾选的SimulateModem Speeds 会被取消勾选,要记得再到Rules → Performances → Simulate Modem Speeds 勾选喔!
6.设置完成后,清空原有的log,并使用你的app进行弱网条件下的操作,
选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化
如下图:
不同请求耗时多少的图形表,获取那种资源耗时最大,进而进行优化:
如下图