Fiddler的安装与使用(进阶篇)

测试过程中的一些常见场景。

一、限速

背景:进行日常测试时通常网络情况都比较好(内网),所以有时会忽略在低速或网络状况不好的情况下系统页面的表现

手机可以用2G、3G、4G,也是一种方式,但这都是网络模式,而Fiddler可以设置上传和下载的延时时间,这种控制非常灵活,可以帮助我们模拟低速网络情况下页面、APP的显示与交互情况,比如响应时间过长时是否有弹出网络不好的提示、页面crash以及显示错乱、session是否一致等。

1.设置限速时间

(1)打开 【Rules---Customer Rules】,Ctrl+F搜索(m_SimulateModem),默认发送数据是300毫秒,接收数据是150毫秒,根据实际情况限速后进行保存(Ctrl+S)
(2)启用限速:Rules---Performance---Simulate Modem Speeds

演示:对于发送数据(uploaded)每KB延迟30000毫秒,接受数据(downloaded)每KB延迟30000毫秒。

打开浏览器,访问百度,搜索python,页面加载非常慢,等全部加载完成时可以到Statistics查看时间。

注意:测试结束后记得取消限速

二、篡改数据

篡改分两种:

1.一种是修改请求数据,检查接口的处理情况,这种适用于不方便直接调接口,其不关心页面,只看接口处理是否正常,返回的数据对不对。

比如 Harbor House官网注册页面 用户名限制的字符长度是2-20 ,把字符加到21以上,看效果,根据前端页面的预期结果是提示用户名超长了,而实际结果是注册成功了。

于是去数据库查了下表结构,发现用户名字段的长度是50,所以重新注册下,字符超过50,看接口返回的信息,提示“信息输入有误”,OK,测试通过,说明接口在这块做了保护。

用刚注册成功的用户名进行登录,提示“账号长度只能在2-20位字符之间”,登录失败
(引申:这些不会生效的数据,也会被称为脏数据,不改掉会影响到后续性能)

在这里做个假设:
仍然是上面的例子,页面上注册时提示没成功,但实际数据库中已经保存数据了,这样就算bug了,前端不应该在用户捕获到超过长度的字符时还去调用接口

理论上前后端对于输入参数的限制应该保持一致,但实际上数据库字段长度是要比前两者多的,因为要留有富裕的空间作为优化

再比如注册页面对用户邮箱有进行验证,Fiddler中修改后查看服务端是否有验证,有兴趣的朋友可以自己去尝试下

修改页面请求值

构造请求数据,突破表单的限制,可以随意提交数据,避免页面JS和表单限制,从而影响相关调试(绕过前端)

1)设置断点:Fiddler菜单栏->Rules->Automatic Breakpoints->选择Before Request,也就是发送请求之后,在Fiddler代理中转之前是可以修改请求数据的。

2)观察inspector,页面内容出现变化后修改Body的Value值,然后点击 “Run To Complete“,回到浏览器查看响应结果

访问百度时,设置一些错误的参数,点击“Run to Completion”会发现无法访问百度首页了。

 2.另一种是修改返回包的数据,关心的是页面处理情况

比如理财app上显示金额,那么我们在测试时肯定要考虑金额的长度,此时可以通过篡改数据来看服务端返回不同的结果来看页面显示是否正常

修改页面响应结果(拦截响应数据,修改响应实体)

1)设置断点:

Fiddler菜单栏->Rules->Automatic Breakpoints->选择After Responses,
也就是服务器响应之后,但是在Fiddler将响应中转给客户端之前是可以修改响应的结果

2)观察inspector,页面内容出现变化(说明拦截成功)

3)切换到TextView,修改message,然后点击 “Run To Complete“,回到浏览器查看响应结果

PS:可以试着将message信息改的很长,页面变形了,那就能说明问题了。

三、利用AutoResponder替换服务器的返回数据(即原资源)

AutoResponder:重定向功能,将HTTP请求重定向到本地的文件,进行调试。

1.比如 百度官网 logo,用户提出来要更新下,这时可以通过这功能实现,也就是不需要修改代码,就能预览换个logo图片文件的效果。

在右上角选择AutoResponder页签,勾选Enable rules、Unmatched requests passthrough 两个选项,点击Add rule 按钮,在下方填写替换的规则,编辑好之后,点击保存

第一行填写地址完全匹配,也可以写正则表达式进行模糊匹配,也可以从左侧把请求数据拖过来
第二行填写要替换的内容,下拉框有很多选项可以选择, 比如201、302、404,502等status code

设置好替换图片后点击重新访问百度,请求回来的数据已经是替换后的内容了

注意:访问地址不一定为百度,而是第一行中填写的地址。

2.修改Response数据时超时
设置断点【After Response】之后,修改响应数据,来实现修改Response的内容,
但是这样容易造成请求超时

超时:客户端发送一个请求出去,如果在指定的时间内,没有返回,那么就不会再来处理这个请求了

假设修改内容的操作大于设置的超时时间,就算之后将断点放行,请求返回200,这个时候客户端也不会做任何处理,可以理解为修改的内容没有产生效果。

此时就可以利用AutoResponder的功能了,直接将修改之后的内容放到文件
步骤:
1)查看该结果返回的数据内容及格式
选择请求,右击,Save -> Response -> Response Body ,保存响应体,可以是文本格式

2)修改响应体的数据,如图修改title,重新发送请求,发现title和响应头部信息都已经更新

注意:强制刷新Ctrl+F5,获取最新资源

四、发送自定义请求(request-builder)

Composer:一个小型、简易的接口测试工具,可以填接口地址,设置请求参数、填写响应结果,也可以修改相应的头信息(如添加常用的accept,host,referrer,cookie,cache-control等头部)后execute。

也可以选择POST请求,更改请求体中的内容,注意保留请求体的格式。

注意:如果是乱码,请求header那设置 Content-Type:charset=utf-8

五、APP端抓包

1.前置条件

1)手机和电脑在同一局域网(PC端可以设置wifi热点);
2)完成Fiddler的配置(允许远程连接),端口默认8888,然后重启Fiddler使其生效:
Tools——>Options——>Connections,勾选Allow remote computers to connect

2.接下来在CMD命令窗口,查看Fiddler进程是否能正常监听8888端口,如果服务没有正常开启,可以尝试使用其他端口,端口修改的位置,如上图位置
以下两种方法都可以:
1)执行 netstat  -anop tcp
2)执行 netstat -ano|findstr “8888”
注意:0.0.0.0:8888,4个0代表所有的ip都可以连接进来这个端口

3.查看本机的IP
1)命令行中输入:ipconfig

2)直接在Fiddler中查看

点击工具栏最末尾的向下的箭头,在弹出的下拉框中可以看到有个电脑图标以及Online的字样,将鼠标放在上面就可以看到。

4.手机配置代理
1)设置——>无线局域网——>选择wifi——>设置HTTP代理(输入IP,端口是Fiddler的代理端口8888)

2)打开手机浏览器Safiri下载证书 就可以抓取https的请求了

输入:http://本机的IP:8888,下载FiddlerRoot certificate

安装并进行验证

5.操作app进行抓包

正常操作app即可,app的发送的请求以及收到的请求都会被Fiddler抓到。

如果只想看移动端数据,也很简单,只需关闭pc端的代理就可以了(关闭Fiddler的“Capuring”开关)

注意:抓包之后记得关闭手机代理,以免手机上不了

原文地址:https://www.cnblogs.com/feilstar/p/10203085.html

时间: 2024-08-02 07:11:11

Fiddler的安装与使用(进阶篇)的相关文章

ToughRADIUS 安装进阶篇

在进阶篇里,我们将会提供本地化的安装参考,但相比起快速指南,进阶篇需要更强的专业知识和动手能力,为了节约您宝贵的时间,我们并不鼓励所有人都来尝试. 在安装成功之前,你可能会遇到关于 linux,git,python,mysql等一些列问题,如果你对这些都不熟悉,那么你只会遇到越来越多的问题,尽管这些问题在具备相关专业知识的人眼前不值一提.如果你觉得linux,git,python,mysql 这些都不是个事,那就继续吧. 不适合这篇教程的人 从来没有成功安装过 linux 的 装完 linux

在Horizon Workspace中配置Windows单点登录-进阶篇

在上一篇基础篇里面,简单介绍了在Horizon Workspace 1.8中如何配置Windows单点登录.在这篇博客中,会继续介绍一些针对大规模虚机或者虚拟桌面部署的配置方式.这些配置方式可以保证用模板部署出来的虚机或虚拟桌面在Workspace服务器端配置完成的情况下,不再需要用户进行手动配置就能实现HorizonWorkspace的单点登录. 1. 在模板机组策略中配置IE浏览器的设置 通过在模板虚拟机上的管理控制台中设置相应的策略,可以使后续使用模板机克隆出来的虚拟机自动使用Window

Python基础—面向对象(进阶篇)

通过上一篇博客我们已经对面向对象有所了解,下面我们先回顾一下上篇文章介绍的内容: 上篇博客地址:http://www.cnblogs.com/phennry/p/5606718.html 面向对象是一种编程方式,此编程方式的实现是基于对类和对象的使用: 类是一个模版,模板中包装了多个方法供使用(这里方法就是函数): 对象,根据模板创建的实例,实例用于调用被包装在类中的函数: 面向对象的三大特性:封装.继承.多态. 今天博客的内容主要介绍:Python类的成员.成员修饰符.类的特殊成员.异常处理和

Visual Studio调试之断点进阶篇

Visual Studio调试之断点进阶篇 在上一篇文章Visual Studio调试之断点基础篇里面介绍了什么是断点,INT 是Intel系列CPU的一个指令,可以让程序产生一个中断或者异常.程序中如果有中断或者异常发生了以后,CPU会中断程序的执行,去一个叫做IDT的部件查找处理这个中断(或者异常)的例程(Handler).IDT是操作系统在启动的时候初始化的,至于IDT的细节问题,例如什么是IDT,怎样编写一个IDT的例程,怎样 初始化IDT,可以去网上搜索一些资料. 总之,这里我们只要知

移动端https抓包那些事--进阶篇

上一次和大家介绍了手机端https抓包的初级篇,即在手机未root或者未越狱的情况下如何抓取https流量,但是当时分析应用时会发现,好多应用的https的流量还是无法抓取到,这是为什么呢? 主要原因还是客户端在实现https请求时对于证书的校验上,如果仅仅校验是否有证书但是未严格校验证书的有效性时,就可以通过手机客户端安装抓包工具的证书来绕过签名校验,但是如果客户端做了严格的证书校验,如果不是受信任证书则无法正常进行https通信,遇到这种情况我们该如何抓取https流量来进行业务分析呢? 接

从零开始学Sketch——进阶篇

本文转自 http://www.jianshu.com/p/ff70b5f35c8f 从零开始学Sketch——进阶篇 Sketch是一款矢量绘图应用,而矢量绘图无疑是目前进行网页.图标以及界面设计的最好方式. 在初识了Sketch的界面布局和基础工具之后,我们就可以开始进入高阶的Sketch工具篇学习了.这篇文章主要会涉及Sketch模板.插件的使用,以及Sketch在具体使用过程中的一些技巧分享. 如果你曾接触过PS.AI.Axure等软件,那么接下来的内容你应该不会陌生,因为所有的设计软件

idea 插件的使用 进阶篇(个人收集使用中的)

idea 插件的使用 进阶篇(个人收集使用中的) 恭喜你,如果你已经看到这篇文章,证明在idear使用上已经初有小成!那么就要向着大神进发了! 下边就是大神之路! 插件的设置 在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都是通过插件的方式来实现的,只是 IntelliJ IDEA 本身就是它自己的插件平台最大的开发者而已,开发了很多优秀的插件. ? 官网插件库:https://plugins.jetbrains.com/ ? 如上图标注

从零开始学Sketch——进阶篇-b

从零开始学Sketch——进阶篇 Sketch是一款矢量绘图应用,而矢量绘图无疑是目前进行网页.图标以及界面设计的最好方式. 在初识了Sketch的界面布局和基础工具之后,我们就可以开始进入高阶的Sketch工具篇学习了.这篇文章主要会涉及Sketch模板.插件的使用,以及Sketch在具体使用过程中的一些技巧分享. 如果你曾接触过PS.AI.Axure等软件,那么接下来的内容你应该不会陌生,因为所有的设计软件学习的路径都是相似的,都是从认识基本功能框架到外部资源整合运用,最终形成个人风格的一个

jqGrid 学习笔记整理——进阶篇(二)

jqGrid 学习笔记整理--进阶篇(二 ) 本篇开始正式与后台(java语言)进行数据交互,使用的平台为 JDK:java 1.8.0_71 myEclisp 2015 Stable 2.0 Apache Tomcat-8.0.30 Mysql 5.7 Navicat for mysql 11.2.5(mysql数据库管理工具) 一.数据库部分 1.创建数据库 使用Navicat for mysql创建数据库(使用其他工具或直接使用命令行暂不介绍) 2.创建表 双击打开上步创建数据库--右击T

CocoaPods详解之(二)----进阶篇

CocoaPods详解之----进阶篇 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/19178709 转载请注明出处 一.Podfile.lock文件 上文讲过,在开始使用CocoaPods,执行完pod install之后,会生成一个Podfile.lock文件.这个文件看起来跟我们关系不大,实际上绝对不应该忽略它. 该文件用于保存已经安装的Pods依赖库的版本,通过CocoaPods安装了SBJson.AFNe