百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Fiddler抓包测试基础教程

bigegpt 2024-08-14 14:42 2 浏览


1.抓包概念

抓包就是将网络传输发送(请求)与接收(响应)的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。

2.为什么抓包测试?(fiddler开源,C#)

1:有时候公司中接口文档某几个信息可能不详细,要测试这些接口的请求参数与响应结果,以及数据传输是否安全,那么可以通过抓包测试实现;
2:通过抓取数据请求,可以放到Jmeter中对服务器做压力或者接口测试;
3:通过抓包工具,可以分析接口的请求参数,响应结果,以及数据传输是否安全;
4:通过抓包工具,可以编辑请求或者响应,达到测试效果。

3.抓包测试原理

设置代理的通信过程


4.抓包工具Fiddler

4.1安装Fiddler

根据链接下载Fiddler:

https://www.telerik.com/download/fiddler

下载完成之后,按缺省选项安装

双击安装FiddlerSetup.exe

4.1.1findler界面

4.2设置Fiddler

Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。开启后再左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。


设置Fiddler

*点击Tools-->Options-->Connections-->勾选Allow remote computer to connect(允许远程设备连接到Fiddler上),端口号8888

以上设置之后只能抓取http协议的地址

* 在抓取http数据包设置的基础上进行以下的设置Fiddler抓取https数据包
Tools-->Options-->Https
勾选decrypt https traffic....> 可能会弹出安装证书的询问框(信任fiddler证书吗?)


* 如果不弹框,action-->reset all ca(重置 删除证书)

设置浏览器上网经过代理服务器(IE和谷歌会自动设置)

从Firefox 浏览器右上角首选项->常规->网络设置

注意:如果不选择也将此代理用于FTP和HTTPS默认只能抓取HTTP协议地址

设置手机上网经过代理服务器(模拟器/真机)

* 必须保证手机网络和电脑网络在同一个网络内(要么连接同一个wifi,要么电脑开wifi,手机连接)

*首先获取PC的ip地址:命令行中输入:ipconfig,获取ip地址


* 长按-->修改网络-->显示高级选项-->手动代理-->电脑ip和fiddler端口号

手机抓包https操作

* 在手机上下载Fiddler的安全证书并安装证书(在抓取http设置基础上)
浏览器上输入ip+端口号,进行证书下载安装
使用Android手机的浏览器打开:http://电脑ip:8888, 点“FiddlerRoot certificate” 然后安装证书。(最好用手机自带浏览器下载安装)

如图:


4.3.抓取app和web网页数据包

抓取app数据包

打开Fiddler,然后打开手机中app,Fiddler抓包如下:

抓取web数据包

打开Fiddler,然后打开浏览器,输入url,Fiddler抓包如下:

通过以上设置,可以进行http请求的抓取
* 以抓取 儿歌多多 为例-->http请求

http://bb.ergeduoduo.com

若出现乱码,点击提示

4.4.抓取内容的分析

Fiddler抓到的数据包的含义

名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值


Statistics 请求的性能数据分析

*随意点击一个请求,就可以看到Statistics关于HTTP请求的性能以及数据分析了


Inspectors 查看数据内容

*Inspectors是用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容:

4.5.AutoResponder 允许拦截指定规则的请求

AutoResponder允许你拦截指定规则的请求,并返回本地资源或Fiddler资源,从而代替服务器响应。 >> AutoResponder:文件代理【常用】。例如,将一个需要服务端返回的文件,使用本地文件做代理。

匹配规则,如:


我将“http://ergeduoduo.com”这个关键字与我电脑“C:\Users\jiangnengbao\Desktop\phone_bg.jpg”这张图片绑定了,点击Save保存后勾选Enable rules,再访问http://ergeduoduo.com,就会被劫持。


4.6.Composer 自定义请求发送服务器(接口测试)

Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求 》》 n.(尤指古典音乐的) 创作者; 作曲者; 作曲家;

Parsed模式下你只需要提供简单的URL地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)

>> 前后端接口连调——Composer

选中一个接口——>拖拽到Composer面板;
准备工作:
接口请求方式、请求参数;
Get请求:参数直接写在接口里面

4.7.添加过滤器

Fiters 是过滤请求用的,左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。这个时候通过过滤规则来过滤掉那些不想看到的请求。


勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host

filter-->勾选use filter-->show only the following hosts(只展示下面的主机)-->填写主机名,号隔开


* 过滤器不使用的时候取消勾选

4.8.断点操作(篡改参数)

rules-->automatic breakpoints-->
* before request 请求之前 :修改请求方式 请求路径 请求头 请求参数等...


编辑请求的内容 查看对应的响应结果,来达到接口测试的目的



* after response 响应之后: 修改响应内容 响应头....
有时需要修改数据库中的数据,查看页面内容是否动态跟随改变,但是不是所有人都有数据库操作权限,此时可以借助断点编辑响应的内容 查看页面展示内容是否动态改变


断点可以查看app里面网络有没有重连机制,一个网络健壮的app是应该有重连机制的

4.9.模拟弱网

rules--->custome rules
搜索m_Simulate

if (m_SimulateModem) {

//每延迟300ms发送1kb的数据,也就是每1s发送3kb的数据
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";

//每延迟150ms下行1kb的数据
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150";
}

网络取值的算法就是: 1000/下载速度 = 需要delay的时间(毫秒),比如50kb/s 需要delay20毫秒来接收数据。


1000/想要的速度(kb/s) = 延时毫秒值--->1000/50kb/s = 20ms
* fiddler限速的原理是通过延长请求/响应的时间进行上行 下行的限速
让规则起作用,打开规则
* rules-->performance-->勾选 Simulate Modem Speeds(启用限速规则)

请注意,当你存档之后,原本已经勾选的SimulateModem Speeds 会被取消勾选,要记得再到Rules → Performances → Simulate Modem Speeds 勾选喔!

4.10.moke测试 》》 它的主要作用是模拟一些在应用中不容易构造或者比较复杂的对象,从而把测试与测试边界以外的对象隔离开。

测试过程中往往遇到测试数据不全等问题,使用fiddler来作为代理对网络请求进行重定向来实现mock测试的功能。

重定向到本地数据,返回本地数据:

1. 编写本地数据(数据源根据具体接口来)


2. 选择目标消息,并且点击“AutoResponder”--》“Add Rule”,添加到右框中,并输入拦截链接。

3.导入本地数据


4.勾选三个选项

5.访问链接,返回本地数据

重定向到其他链接上:

1.只需要改动一步,在最下面一栏改成需要访问的链接即可


注意:不管是重定向到本地或其他链接都需要选中规则条目才能生效


抓包颜色锁的说明

》》》

使用fiddler抓包时,会看到左侧按照顺序显示session,并且前边有个图标,但通常,不知道图标是什么意思。

参考官方文档:UIGuide

这里尤其注意“锁图标”这里写图片描述,它用来标记,在网络环境受限时,为https建立http tunnel

· 响应是图片

使用fiddler抓包时,会看到左侧按照顺序显示session,并且前边有个图标,但通常,不知道图标是什么意思。

具体文档可以关注私信我哦,各种教程哦!

相关推荐

为3D手游打造, Visual Studio Unity扩展下载

IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...

由ArcMap属性字段自增引出字段计算器使用Python的技巧

1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...

微软首次回答 HoloLens 相关问题,终于爆料了

fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...

C#指针的应用(c#指针类型)

C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...

C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)

C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...

欢迎回来:Fortran意外重回流行编程语言20强榜单

TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...

C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案

简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...

C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤

在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...

C# (一)状态机模式(状态机代码实现)

最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...

C# 中 Predicate 详解(c#中的replace)

Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...

C#中$的用法?(c#中&&什么意思)

文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...

C#并行编程:Parallel类(c# 并行处理)

在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...

颠覆认知!用Span重构foreach循环竟让数据处理快如闪电

在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...

Unity3D手游开发实践《腾讯桌球》客户端开发经验总结

本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...

.NET 7 AOT 的使用以及 .NET 与 Go 互相调用

目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...