高逼格前端开发工具-FIDDLER
1.Fiddler相对其他调试工具的优势
HttpWatch 和 Firebug绝大多数前端开发人员都比较熟悉,但是HttpWatch虽然可以抓到每个 HTTP 请求的全部数据,但无法修改返回的数据;尽管Firebug可以修改 HTML和CSS,但是在调试CGI接口时无法干预HTTP请求的参数值和CGI返回的数据。而 Fiddler作一个 HTTP 调试代理,不但能够记录客户端同服务器之间的所有 HTTP 通讯数据,还能够修改请求数据和返回数据,也叫做“构造请求”和“模拟响应”。除此之外, 添加了willow插件的Fiddler 还可以:统计数据包、修改Host、请求重定向、编码转换、低网速模拟、断点调试以及过滤HTTP请求…Fiddler包含了一个强大的基于事件脚本的子系统,并且能够使用.net框架语言扩展。相信你已经迫不及待安装它了。
2.Fiddler安装和FireFox配置
Fiddler2官方下载地址:http://www.fiddler2.com/Fiddler2/version.asp, 安装程序600KB左右,目前一直都免费。Fiddler安装非常简单,双击.exe文件然后直接下一步就可以,如果首次运行报错那很可能是因为当前计算 机没有与之匹配的.NetFrameWork,由于Fiddler是由C#语言编写而C#软件的运行环境就是微软的.NetFrameWork,所以还要 下载安装,下载地址仍然为:http://www.fiddler2.com/Fiddler2/version.asp,如果首次运行Fiddler没有报错,那么很幸运你的计算机之前就已经有.NetFrameWork。
如果平时习惯用IE浏览器那么现在就可以开始用Fiddler进行调试了,如果平时习惯用FireFox那么还需要手动设置代理才能支持 Fiddler。配置方式——FireFox主菜单: 选项 -> 高级 -> 网络 -> 设置(如下图),选择“手动配置代理”输入HTTP代理为127.0.0.1,然后“确定”。此时开启的Fiddler就支持FireFox了,当关闭 Fiddler后为使FireFox能正常连接网络应该取消上面设置的代理。
4. Fiddler使用细则
① 数据包统计
运行Fiddler并开启左下角的“Capturing”,在浏览器地址栏或者Fiddler命令行处随便输入一个网址:http://tid.tenpay.com如图:
回车后Fiddler就会把客户端同服务器之间所有的数据包都记录下来,此时选择多条请求后点击“Statistics”即可查看到详尽的数据报统计信息:
(1) 请求总数、请求包大小、响应包大小;
(2) 请求起始时间、响应结束时间、握手时间、等待时间、路由时间、TCP/IP传输时间;
(3) HTTP状态码统计;
(4) 返回的各种类型数据的大小统计以及饼图展现。
②监听范围设置
Fiddler不仅能监听HTTP请求而且默认情况下也能捕获到HTTPS请求,但如果要进一步了解客户端同服务器之间的HTTPS通信细节还要到 Tool -> Fiddler Option -> HTTPS下面进行设置,勾选上“Decrypt HTTPS traffic”,如果不必监听服务器端得证书错误可以勾上“Ignore server certification errors”,也可以跳过几个指定的HOST来缩小或者扩大监听范围。
③ HOST 修改
安装了willow插件的Fiddler使用起来会方便很多。比如Host的修改不必再去系统盘寻找host文件了,我们只需在willow窗口 下,新建一个项目,然后在里面加入该项目涉及到的所有host。具体方法:右键选择“Add Project”,右键单击这个新建的project选择“add host”,在弹出的对话框中分别填入IP和对应的Domain即可。
建好后的Host对以后的调试使用十分方便,需要使用时勾上对勾,不需要时取消,而且控制之分灵活,Host的修改可以域名(单个Host)为单位也可以具体项目为单位。上图:
④ 请求重定向(模拟响应)
所谓请求无非就是需要调用到的一些资源(包括JS、CGI、CSS和图片等),所谓重定向就是将页面原本需要调用的资源指向其他资源(你能够控制的资源或者可以引用到的资源)。
- 你可以将前台服务器的诸多或者某个CGI在本地做个副本,如果正常网络访问环境下该CGI出现了BUG而导致开发环境崩溃时,可以先将这个CGI的请求重定向到本地副本,这样就可以继续进行开发调试你的页面,从而大量节省CGI维护的等待时间。
- 你也可以将多人同时维护的某个JS文件复制一份出来在本地,当你的开发调试收到他人调试代码干扰时,可以将这个JS的调用重定向到本地无干扰的 JS文件,进行无干扰开发,功能开发完成并调试OK之后再将你的代码小心合入到开发环境中,这样就可以避免受到他人干扰专心搞你的模块开发,也就是说能够 将JS文件脱离开发环境却不影响线上调试。
- 你还可以将样式文件或者图片指向本地如果需要的话。开发过程中的很多页面其实都是惨不忍睹的,究其原因很大程度上是因为缺少对应的样式文件或者没有图片资源,所以样式文件和图片的重定向会对美感稍有要求的开发人员带来福音。
此外,你还可以借此神器搞些有取的事,比如换换百度主页的图片欢乐一下。
具体方法:在AutoResponser窗口下,点击“Add”添加一个新的重定向规则在打开的规则对话框的“If URL matches”一栏填入百度主页的主图片资源地址:http://www.baidu.com/img/baidu_sylogo1.gif,在对应的“then respond with”一栏填入你所希望看到的本地图片地址(或者网络图片地址)C:\Users\xxx\Desktop\111111.BMP (这图是我本地图片有我签名,你也可以换成你心爱的女友的美图,给她一个惊喜,说你是花了大价钱才展示一天…)。然后刷新百度主页, 你会惊喜的发现百度和Google原来是可以这样更换节日图片的啊!上图:
⑤ 请求构造
请求构造顾名思义就是我们可以模拟请求,也就是说我们可以借助Fiddler的Request Builder 在不改动开发环境实际代码的情况下修改请求中的参数值并且方便的重新调用一次该请求,然后双击这次新调用的请求包查看CGI的返回和上次调用相比较有何具 体不同。任何一个请求参数只要是合法的取值再次调用后CGI都会有相应的响应,那么你想要的任意一个合法请求组合自然也能够按照你的意愿构造出来,然后再 次调用以及查看返回数据,十分方便!
下面我举一个交易查询请求构造的例子。首先进入交易查询页面抓包找到目标请求https://pay.tenpay.com/main/app/v1.0/trans_manage.cgi?OutPutType=JSON,双击该包在Inspectors标签下查看返回数据为JSON格式,而XML格式一栏为空:
将该请求鼠标左键单击拖入Fiddler右侧Request Builder标签内并修改原请求参数OutPutType=JSON为OutPu tType=XML,然后点击Execute按钮再次触发调用请求,
双击这次请求包在Inspectors标签下查看返回数据为XML格式,而JSON格式一栏为空:
另外你还可以点击左下方的Expand All和Collapse按钮将返回数据全部展开或收缩。
⑥请求过滤
对一个重新载入的页面进行抓包,如果包的条目过多而你需要关注的就那么几项的话,可以使用Fiddler的过滤器Filters进行抓包,那么抓包 时只会抓取你希望抓到的那些包。切换到Filters标签勾选Use filter 以便激活过滤器,这样下面的各种过滤方式就可以进行选择了。
(1) 可以只抓取最近的N个sessions,如果选中此项默认为200个sessions 。
(2) 可以根据host是内网还是外网类型进行过滤,也可指定特定的多个host,并且定义是抓取还是隐藏这些特定的host,也可对其进行标记。
(3) 可以只抓取浏览器通信包,也可只抓取和服务器进行通信的包。
(4) 可以根据请求头部进行过滤
(5) 还可根据响应的状态码以及类型和大小进行过滤。
⑦编码转换
前端开发人员的编码查看、验证、转换、对比等操作也是经常性的,Fiddler还提供了多种编码转换集成的一个功能,用起来也是相当方便。在”Tools”的“Text Encode/Decode”下面可以将编码转换打开:
⑧ 低网速模拟
有时出于兼容性考虑或者对某处进行性能优化,在低网速下往往能较快发现问题所在也容易发现性能瓶颈,可惜其他调试工具没能提供低网速环境,而强大的 Fiddler考虑到了这一点,能够进行低网速模拟设置Rules > Performance > Stimulate Modem Speeds。
⑨ 命令行
命令行的使用往往能够事半功倍,那么看下面这些实用命令是如何具体使用:
(1) ?sometext
输入过程中,fiddler会高亮包含输入内容的url,回车可以选中这些会话。
Eg:?searchtext
(2) >size
选中返回字节数大于输入数的会话。
Eg:>40000 <– Select responses over 40kb
(3) <size
选中返回字节数小于输入数的会话。
Eg:<5k <– Select responses under 5kb
(4) =statu或=method
选中response status = status 或者 request method = method 的会话。
Eg:=301 <– Select 301 redirect responses
Eg:=POST <– Select POST requests
(5) @host
选择主机名包含输入内容的会话,回车选中。
Eg:@msn.com <– Select www.msn.com, login.msn.com
(6) bold
将后面出现的包含输入字符的url标记为粗体。
Eg:bold /bar.aspxbold <– Call with no parameter to clear
(7) bpafter
将所有RequestUTI中包含输入字符的response 截断。
Eg:bpafter /favicon.icobpafter <– Call with no parameter to clear
(8) bps
将所有response返回码与输入相同的请求截断。
Eg:bps 404bps <– Call with no parameter to clear
(9) bpv or bpm
在相应的HTTP请求 method上设置断点,设置这个命令会清空之前的设置,不加参数取消断点。
Eg:bpv POSTbpv <– Call with no parameter to clear
(10) bpu
在包含参数的request 上设置断点,设置这个命令会清空之前的设置,不加参数取消断点。
Eg:bpu /myservice.asmxbpu <– Call with no parameter to clear
(11) cls or clear 清空会话列表 cls 。
(12) dump 打包所有会话为zip文件并放于C:\ dump 。
(13) g or go 恢复所有中断的会话 g 。
(14) help 显示帮助页面 help 。
(15) hide 最小化到系统托盘 hide 。
(16) urlreplace
将URL请求中的字符串替换成其他,设置这个命令会清除前面的设置
Eg:urlreplace SeekStr ReplaceWithStrurlreplace
(17) start 注册为系统代理,抓取http协议
(18) stop 关闭抓取 stop
(19) show 从系统托盘中恢复,在脚本命令中比较有用 show
(20) select MIME
选中response Content-type header包含输入参数的会话。
Eg:select imageselect css
Eg:select htm
Eg:select ui-bold * <– unless preceded by a slash, * means any value
Eg:select ui-comments \* <– Find comments with a *
Eg:select @Request.Accept html <– Find requests with Accept: html
Eg:select @Response.Set-Cookie domain <- Find responses that Set-Cookie on a domain
(21) allbut or keeponly
隐藏除了Content-Type header 包含输入参数的其他会话。
资料来源:TENPAY INNOVATION DESIGN
高逼格前端开发工具-FIDDLER的更多相关文章
- Web前端开发工具总结
前端开发工具: web前端开发乃及其它的相关开发, 推荐sublime text, webstorm(jetbrains公司系列产品)这两个的原因在于,有个技术叫emmet, http://docs. ...
- 在线调试和演示的前端开发工具------http://jsfiddle.net/
在线调试和演示的前端开发工具------http://jsfiddle.net/
- 前端开发利器—FIDDLER 转
http://www.cnblogs.com/yuzhongwusan/archive/2012/07/20/2601306.html 前端开发利器—FIDDLER 1.Fiddler相对其他调试工具 ...
- sublime 前端开发工具
http://code.kpman.cc/2014/10/14/sublime-text-3-mac-%E6%8C%87%E5%8D%97/ gif 屏幕录制:http://recordit.co/ ...
- 【翻译】我钟爱的Visual Studio前端开发工具/扩展
原文:[翻译]我钟爱的Visual Studio前端开发工具/扩展 怎么样让Visual Studio更好地编写HTML5, CSS3, JavaScript, jQuery,换句话说就是如何更好地做 ...
- Sublime Text前端开发工具介绍
Sublime Text前端开发工具介绍.. Sublime Text这款前端开发工具中的非常优秀的特性进行介绍 ------------ sublime text 3 3114 注册码 —– BEG ...
- 超高速前端开发工具——Emmet
[由于 CSDN 不支持富文本编辑器写的文章迁移到 Markdown 编辑器中修改,已重发了一个重新排版的版本, 新版链接:http://blog.csdn.net/ys743276112/artic ...
- 【前端开发工具】WijmoJS 2018 v3 正式发布,全面支持Angular7
WijmoJS(前端开发工具包)2018年度第三个大版本已经正式发布,本次更新除了全面支持Angular7之外,还允许用户使用Web Workers在前端更高效地导出PDF.智能的分组表头属性.全新的 ...
- 前端开发工具icestar
前端开发工具icestar 最近忙里偷闲,把之前的mock工具进行了全面的重构,最大的改变就是换了个名称icestar,icestar意思就是"爱死他",首先他的预想并不只是替代m ...
随机推荐
- 如何自行处理写好的eclipse插件安装不生效
本帖最后由 anrainie 于 2013-7-23 11:31 编辑 对于eclipse插件开发的新手,经常会遇到插件写好了,拷贝到plugins或dropins文件下,但是没有生效.上网各种问,也 ...
- Sensor(LIGHT)
package com.example.sensor01; import java.util.List; import android.hardware.Sensor; import android. ...
- dijit样式定制(三)Button、RadioButton、CheckBox
dijit.form.DropDownButton dijit的button中除了ComboButton使用table布局外,其他的button都是用span嵌套布局,下图中可看一下button的主要 ...
- 用 C 扩展 python
本文介绍如何用 C 语言来扩展 python.所举的例子是,为 python 添加一个设置字符串到 windows 的剪切板(Clipboard)的功能.我在写以下代码的时候用到的环境是:window ...
- MVVM架构~knockoutjs系列之验证信息自定义输出~续
返回目录 上一讲中,我以一个实际中的例子说明了knockoutjs的自定义验证功能,在使用过程中,出现了一个问题,当然了不是问题,只是一种需求,上一讲中自定义验证的表现是:当页面加载后,自动显示有问题 ...
- EF架构~充血模型设置不被持久化的属性
回到目录 在Poco实体中,一般只有属性没有方法,这在软件设计中称为贫血模型,而在DDD领域驱动设计中,比较提倡充血模型,即你的Poco实体中,即有属性,也有操作属性的方法,注意这里说的是操作属性的方 ...
- php中的常用函数
1.随机数和时间 echo rand(); //随机数生成器 echo rand(0,10); //某个范围之间的随机数:第一个参数最小,第二个参数最大:例子是从0-10之间的随机数 echo tim ...
- Html5+asp.net mvc 图片压缩上传
在做图片上传时,大图片如果没有压缩直接上传时间会非常长,因为有的图片太大,传到服务器上再压缩太慢了,而且损耗流量. 思路是将图片抽样显示在canvas上,然后用通过canvas.toDataURL方法 ...
- ubuntu下在apache部署python站点
ubuntu下在apache部署python站点 我的是ubuntu14 32为的虚拟机,默认安装的python为3.4 环境:apache + mysql + django + python3 软件 ...
- C++11模板类使用心得
1.推荐使用std::shared_ptr<TaskT>代替指针TaskT*使用,shared_ptr是一种智能指针,能自主销毁释放内存,在c++11中被引入,在多线程编程中有很大的用处, ...