一、前言
为鹿寨等地区用户提供了全套网页设计制作服务,及鹿寨网站建设行业解决方案。主营业务为网站设计制作、成都网站建设、鹿寨网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
Fiddler 是目前最强大最好用的调试工具之一,它能记录所有客户端和服务器的http和https请求,设置 CGI 请求的断点,甚至修改输入输出数据。
fiddler 的工作原理,是它在 web server 和 web browser 之间搭了一层 proxy,所有的请求都会经过它,如下图所示:
fiddler可以针对web端和移动端网络请求进行抓包分析,如何安装和实现抓包,以及如何在无数请求中运用强大的过滤机制进行精准定位,这里不再进行介绍。fiddler除了进行以上常用功能之外,还能针对抓包过程和请求进行设置。以下将按照fiddler菜单和fiddler script分类介绍fiddler的一些功能。
二、Fiddler 菜单页面
除了对web端和移动端进行抓包之外,fiddler菜单还可以实现以下常用功能。
1. 设置断点
断点可以分为request和response断点。request断点是打在request请求的时候,未到达服务器之前,response断点是打在服务器响应之后,在Fiddler将响应传回给客户端之前拦截。可以通过打断点,修改请求内容,达到需要的目的。
Fiddler可以修改以下请求:
全局断点:这种方法会中断所有的会话
单个断点
(1) 请求前断点(before response): bpu
(2) 响应后断点(after requests): bpafter
断点设置并成功拦截请求,可以在右侧分析区修改数据,并选择 run to continue 或者继续 break on response。
2. Fiddler AutoResponder 请求地址重定向
AutoResponder 是 Fiddler 比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。
如图所示,勾选按钮,并点击 Add Rule ,将 Rule Editor 第一行修改为线上档案位址,按下 Rule Editor 第二行右边的箭头,选择 Find a file ... ,选择要替换成的本机端档案,按下右边的 SAVE ,大功告成;将线上档案替换成另一个线上档案,只需在 Rule Editor 第二行填入的是另一线上档案位址。
如图:
3. Fiddler 限速
web 前端研发过程中,我们都希望在网速很慢的时候,用户首先看到的是渲染出的界面,而不是一片空白。那么这个时候,网络限速就能很方便在 localhost 针对类似的情况来做性能调试与优化。
通过 fiddler 来模拟限速,是因为 fiddler 本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里面自定义一些逻辑。Fiddler 的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。
开启方法如下:Rules → Performances → Simulate Modem Speeds。勾选之后,会发现网速瞬间慢下来了很多。
菜单栏可以直接开启限速,但是网络限速数值是多少,需要通过 fiddler script 进行查看和设置。
三、Fiddler script
在 web 前端开发的过程中,大多数情况下,通过 fiddler 默认菜单的功能可以满足开发者的很多调试需求,然而当有更复杂的调试场景时,需要通过 Fiddler Script 实现。
Fiddler Script 的本质其实是用 JScript.NET 语言写的一个脚本文件 CustomRules.js,语法类似于 C#, 通过修改 CustomRules.js 可以实现很多菜单栏不能直接实现的功能。
Fiddler script 可以实现的功能:
打开脚本文件CustomRules.js有两种方法:
1. 设置限速数据
打开fiddler script编辑框,找到如下代码:
- if (m_SimulateModem) {
- // Delay sends by 500ms per KB uploaded.
- oSession["request-trickle-delay"] = "500";
- // Delay receives by 150ms per KB downloaded.
- oSession["response-trickle-delay"] = "150";
- }
“500”和“150”就是当前delay的时间,可以按照需要手动修改。
算法就是 1000/下载速度 = 需要delay的时间(毫秒),比如50kB/s 需要delay20毫秒来接收数据,所以根据你需要的网络速度来修改上述值。
【注】:存档之后,原本已经勾选的Simulate Modem Speeds 会被取消勾选,需要再到Rules → Performances → Simulate Modem Speeds 勾选,同时需要注意一定要禁用浏览器代理插件,以及修改完成后重启浏览器才能生效。
2. 修改http的Request或Response
修改 Request 和 Response 要在 FiddlerScript 中的 OnBeforeRequest 和 OnBeforeResponse 函数中添加规则即可。OnBeforeRequest 函数是在每次请求之前调用,OnBeforeResponse 函数是在每次响应之前调用。
将请求转发到相同端口号的不同服务器(修改请求的 Host)
- if(oSession.HostnameIs("www.baidu.com")) {
- oSession.hostname = "www.sina.com.cn";
- }
这个例子是将发送到百度的请求转发到新浪,这里只是改变了host,并不改变后面的地址。如下面图片所示:
除此之外,通过修改 fiddler script 文件内容,可以实现很多通过菜单栏无法实现的功能,包括修改 session 的样式,修改 http(s) 请求内容,还可以定制 rule 菜单的子菜单等,可以自行学习。
Fiddler 作为目前最好用的调试工具之一,功能很强大,这里仅做简单介绍,有兴趣的可以深入学习。
四、与其他抓包软件的区别
1. 与charles:
fiddler 有win和linux版本,linux版本需要在Mono环境中运行;charles 没有平台限制。Fiddler属于上游,在fiddler里面对http进行的一些修改直接会影响到Charles里面的请求结果。
2. 与WinPcap:
Winpcap是一个Win32平台下用于抓包和分析的系统,包括一个内核级别的packet filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll)。主要抓取底层通信数据包,比如协议栈、数据流组装等,是底层环境可以直接操纵网络通信的程序。
它不依靠主机的诸如TCP/IP协议去收发数据包,这意味着它不能处理同一台主机中各程序之间的通信数据。跟fiddler抓取的http(s)数据包有本质区别。
【本文是专栏机构“岂安科技”的原创文章,转载请通过微信公众号(bigsec)联系原作者】
本文标题:测试工程师良品——Fiddler工具简介
标题路径:http://www.shufengxianlan.com/qtweb/news0/271050.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联