Fiddler实战深入研究(二)

简介: 来源:http://www.cnblogs.com/tugenhua0707/p/4637771.html Fiddler实战深入研究(二) 阅读目录 Fiddler不能捕获chrome的session的设置理解数据包统计请求重定向(AutoResponder)Composer选项卡Filters选项卡断点调式Fiddler 中的Stave插件 回到

来源:http://www.cnblogs.com/tugenhua0707/p/4637771.html


Fiddler实战深入研究(二)

阅读目录

Fiddler不能捕获chrome的session的设置

    我家里的电脑是使用的是Fiddler4,fiddler目前都可以捕获到chrome的session,但是我公司还是使用的是Fiddler2,因为我是开发人员,很喜欢使用chrome调式代码,所以经常Fiddler捕获不到chrome下session。所以对这个可以做个总结,为了自己以后忘记了或者即将和我一样对chrome下的session捕获不到的同学一个帮助;

   1.  建议装一个SwitchySharp的Chrome插件,为fiddler创建一个规则,代理到本地的8888端口(fiddler所用的端口)。安装SwitchySharp步骤可以看我这篇博客,如下:

http://www.cnblogs.com/tugenhua0707/p/3999174.html

   2. 安装好后,chrome右上角有一个图标,点击选择 “选项”如下:

进入如下界面,进行如下设置即可!

接着点击保存即可~ 这样在需要的时候可以切换到Fiddler;

如上设置就可以使用了~

理解数据包统计

    我们代开Fiddler后开启左下角的 “Capturing”,比如我现在在chrome浏览器下进入淘宝首页后,我们可以使用Fiddler把客户端同服务器端的所有数据包都记录下来,现在我们可以切换到右侧的选项卡中的Statistics中查看数据统计信息;如下所示:

1 中的框含义是:请求总数,请求包大小,响应包大小。

2 中的框含义是:请求的起始时间,响应结束时间,等待时间,握手时间,路由时间,TCP/IP传输时间。

3 中的框含义是:http状态码统计。

4 中的含义是:返回各种类型数据大小统计以及拼图展现。

如下饼图是根据4中的来展现的;如下所示:

请求重定向(AutoResponder)

  所谓请求在我们前端就是一些基本的css,js,图片等请求,重定向是指页面请求资源文件替换成其他需要替换成的文件。

  比如我们现在需要调式线上一个js或者css文件等,我们可以使用fiddler捕获这个文件的请求,然后复制线上一份文件(比如JS或者css)代码放到本地,然后在本地的文件(JS或者css)修改完后,替换线上的文件来调式,当一切都好了话,我们可以直接把代码提交到服务器上即可;如下所示:

如上:Enable automatic responses复选框的含义是:控制是否激活AutoResponder选项卡,如果没有选中该选项,选项卡上的其他选项就不可选。

Unmatched  requests passthrough 复选框的含义是: 如果选中该选项,不匹配的请求会正常发送到服务器,如果没有选中该选项,Fiddler会为所有和该规则完全不匹配的HTTP请求生成HTTP/404 Not Found响应,比如我现在不勾选它;如下所示:

那么我现在再来访问淘宝网,就访问不了,提示如下所示:

Enable Latency的含义是:控制匹配某个规则的请求时立即执行,还是延迟Latency字段中所指定的毫秒数。如果没有选中该选项,Latency字段就不会显示,使用这个选项可以更准确地模拟现实中的服务器响应,取消该选项可以提升性能。如下所示:

我们也可以点击右键进行毫秒数设置它,如下:

在下方的Rule Editor选项卡中可以调整上面的请求替换,如下:

第一个下拉框是指 需要替换的文件,第二个下拉框a.js是替换上面的下拉框的文件;当然我们不一定要这样替换,如果我们正则非常好的话,我们可以使用正则替换需要替换的文件。当我们点击 save后即可替换。

 

Composer选项卡

Composer选项卡支持手动构建和发送HTTP,HTTPS和FTP请求,我们还可以从web session列表中拖曳session,把它放到composer选项卡中,当我们点击Execute按钮,把请求发送到服务器端。

Composer选项卡是由4个子选项卡组成的,如下所示:

其中Scratchpad选项卡不用的;

我们先来看看Options选项卡中 Request Options的复选框中的含义如下:

Inspect  Session  请求执行后,Inspectors选项卡会被激活,可以查看请求结果。

Fix Content-Length header*  该选项控制Composer是否会自动添加或修改Content-Length请求头,表示请求体的大小。在很多情况下,缺少适当的Content-Length头的请求会导致http请求响应出错。

Follow Redirects*  该选项控制Composer是否会自动使用响应的Location头,遵循HTTP/3xx重定向,如果选中该选项,Composer在失败之前最多会执行10次重定向。

Automatically Authenticate*  该选项控制composer是否会自动响应服务器的HTTP/401或HTTP/407认证需求。

Tear off button  该按钮会从主Fiddler窗口删除Composer,并把它作为独立的悬浮窗口打开。如果选中Inspect   Session选项,该选项就非常有用,因为它支持同时查看Composer和Inspector选项卡;如下所示:

上面的以*标示的选项只适用于使用Parsed选项卡发送的请求,从Raw选项卡发送的请求不支持这些选项。

Raw选项卡一般很少使用。

比如我现在获取到淘宝首页的请求,我们可以使用fiddler中的composer选项卡来重新调用一次该请求,如下所示:

我们双击该左侧的请求,到右侧Inspectors选项卡来查看如下:

我们可以点击下面的2个按钮,一个是展开,一个是收缩来查看json数据,如下所示:

Composer选项卡总体介绍如下:

Composer使用场景如下:

比如我们开发想测试post请求接口,我们都知道浏览器请求只能是get请求,所以无法使用浏览器来测试,因此我们可以使用Composer构造post请求,点击execute发送请求。

Filters选项卡断点调式

首先我们可以使用一下左侧的session,我有时候觉得filter很好玩,我就不经意间选中左侧任意一条session,然后右键也看到有filter这个选项,然后看到他们的子菜单也有很多项,我就好奇分别点击某一项后;如下所示:

做完hide所有子菜单后呢,我就再刷新淘宝页面,或者百度页面或者博客园或者任何一个页面,结果fiddler都捕获不到请求,但是偶尔会出现几条请求,但是这明显不是我们想要的,如下所示:

这是什么情况呢?我们接着再看下fiddler左侧的底部如下:

看到我们之前的右键点击子菜单后的每一项,现在我们只需要选择某一项后右键即可删除当前选中的项,我现在一个个右键,就把所有的删除掉后,我再刷新淘宝页面,就可以捕获到所有的请求了,如下所示:

下面让我们来系统的学习Filters选项卡吧!界面图如下所示:

选中Filters选项卡左上方的Use  Filters复选框后,就可以使用其中随后给出的过滤器对流量进行过滤了;

选项卡右上方的Actions按钮支持把当前选中的过滤器作为过滤集,加载之前保存的过滤集,并对之前扑捉到的数据流应用当前过滤规则,如下:

Host Filter下拉框支持标示或隐藏在随后的文本框中指定的域名下的数据流;比如如下下拉框如下:

Not Host Filter 的含义是不过滤host的请求;

Hide the following Hosts的含义是:隐藏下面文本框中指定的域名下的数据流;如下所示:

Show only the following Hosts的含义是:只显示下面文本框指定的域名的数据流,如下所示:

如上我访问的是淘宝网,那么只会显示对a.tbcdn.cn和g.alicdn.cn的数据流;如上所示:

注意:文本框不会自动通过通配符匹配子域名。这意味着如果你设置了 show only the following hosts , 并且在文本框中只写了alicdn.com, 那么将无法看到g.alicdn.com或者www.alicdn.com域名下的所有数据流,如下所示:

我们需要添加通配符  *.alicdn.com,就可以看到所有子域名下的数据流;如下所示:

如果我们想查看根目录下alicdn.com下的数据流,可以把通配符改成如下 *alicdn.com即可,这样就可以包含所有域名以alicdn.com结束的数据流。前面不要加点;如下所示:

客户端进程(Client Process)

进程过滤器控制显示那个进程的数据流。正在运行的应用进程和Fiddler在相同的主机时,Fiddler才能判断出是那个进程发出的哪个请求;

下拉框 Show only traffic from的列表中包含了系统中当前正在运行的所有进程,如下所示:

如果我们选中上面的某个进程的话,就会只显示该进程下的数据流,比如我现在选中的是淘宝进程;

Show only Internet Explorer 选项只显示进程名称以IE开头或请求的User-Agent头包含compatible;MSIE的数据流;

Hide traffic from Service Host选项会隐藏来自进程svchost.exe的数据流,svchost.exe进程是个系统进程,会同步RSS Feeds以及执行其他后台网络活动。其选项一般用的不多。

请求头Request Headers

通过这个选项,你可以添加或删除HTTP请求头,也可以标示包含某些请求头的请求。

Show  only  if URL contains:的含义是支持基于URL显示某些请求;可以使用前缀EXACT来限定大小写敏感;

Hide if URL contains 和上面的是相反的含义,也就是隐藏的意思;

Flag  requests with header选项支持指定某个http请求头名称,如果在web session列表中存在该请求头,会加粗显示该session;

Delete request header 支持指定某个HTTP请求头名称,如果包含该请求头,会删除该请求头;

set request header选项支持创建一个指定了名称和取值的HTTP请求头,或将HTTP请求头更新为指定取值。

断点Breakpoints

Fiddler提供了断点调式功能,session在执行过程中,有2个可能执行中断的时间点;

  1. 从客户端读到请求后,在请求被发送到服务器端之前。
  2. 在服务器端返回响应之后,在响应返回客户端之前。

当程序在请求中断点停止执行时,你可以任意修改该请求,包括URL,headers或body,我们还可以不发送该请求到服务器端,我们可以直接自定义数据返回给客户端,同样,当程序在响应断点停止执行时,我们也可以任意修改响应的内容,包括headers或body。我们先来操作一下如下:

一: 菜单栏 Rules –》 Automatic Breakpoints –》 Before Requests(请求被发送到服务器端之前);或者 After Responses(响应返回客户端之前)

比如我现在后台系统,我点击查询按钮,需要发送一个POST请求,如下:

现在我们再来看看Fiddler中截取请求,如下所示:

如上,红色的小图标是被中断的会话,我们可以左键双击两下,进入Inspectors选项卡,如下所示:

我们在Inspectors –》 WebForms选项卡中可以看到请求中携带的参数如上,我们可以任意修改参数名值对,我们也可以任意添加参数,或者增加cookies或者headers等等,现在我们来看看浏览器中请求响应了没有?如下所示:

现在我们可以再点击黄色小图标 Break on Response 小按钮,如下所示:

可以看到,请求直接返回数据,现在黄色小图标是不能点击的按钮,现在我们可以来修改响应的内容,模拟请求返回,我们也可以自定义返回的json数据,或者我们以后来模拟get或者post请求,我们不需要服务器端(比如php)返回对应JSON数据,我们完全可以使用Fiddler来模拟数据,发送一个空的请求,然后使用fiddler来截取,自己自定义返回json数据,我们可以自定义返回的数据,如下所示,我是修改返回的内容如下所示:

当我们点击Run to Completion按钮后,在浏览器端可以响应数据,接着如下:

然后我们在页面上可以看到修改返回的数据内容如下:

如上是整个断点调式的过程。

如下所示:

当然我们可以在filters里面的选项勾选也可以进行调式如下:

断点选项框支持对包含给定属性的请求或响应设置断点;

Break request on POST选项含义是:会为所有POST请求设置断点;

Break request on GET with query string的含义是:会为所有方法为GET且URL中包含了给定查询条件的请求设置断点。

Break on XMLHttpRequest的含义是:对所有能够确定是通过XMLHTTPRequest对象发送的请求设置断点,由于从数据流上无法判断该请求是否通过XMLHTTPRequest对象发送,因此该方法是通过查找请求头是否为X-Requested-With实现的。

Break response on Content-Type选项的含义是:会为所有响应头Content-Type中包含了指定文本的响应设置响应断点。

响应状态码 Response Status Code

如下所示:

我们可以通过这些选项,基于响应状态码来过滤session;含义如下:

Hide success(2xx)的含义是:会隐藏状态码在200到299之间(包含200和299)的响应。

Hide non-2xx的含义是:会隐藏状态码不在200到299之间的响应。

Hide Authentication demands(401,407)的含义是:会隐藏状态码是401和407的响应,这些响应需要用户进一步确认证书。

Hide redirects的含义是:会隐藏对请求进行重定向的响应。

Hide Not Modified(304) 会隐藏状态条件中状态码为304的响应。

响应类型和大小

通过如上选项,我们可以控制在Web sessions列表中显示那些类型的响应,并堵塞符合某些条件的响应。

我们先来看看上面的下拉框有哪些选项;如下所示:

Show all Content-Types的含义是 不过滤;

Show only IMAGE/* 的含义是 显示Content-Type头是图像类型的Session。

Show  only HTML 的含义是 隐藏Content-Type头不是HTML类型的Session。

Show only Text/css 含义是 隐藏Content-Type头不是text/css类型的Session。

Show only Scripts 含义是 隐藏Content-Type头不是Scripts类型的Session。

Show only xml 含义是 隐藏Content-Type头不是xml类型的Session。

Show only JSON 含义是 隐藏Content-Type头不是JSON类型的Session。

Hide IMAGE/*  含义是 隐藏Content-Type头不是图像类型的Session。

Hide smaller than选项隐藏响应体小于指定的字节数的响应。

Hide larger than选项隐藏响应体大于指定字节数的响应。

Time HeatMap复选框会基于服务器返回给定响应所需要的时间为每个session设置背景颜色。

下面的不一一介绍具体的含义了,一般情况下我们是用不到的,具体的含义看英文也大概知道点,对此这边不一一介绍了;

Fiddler 中的Stave插件

Stave是一个Fiddler扩展插件,让Fiddler能将URL映射到本地目录,实现批量文件自动响应。

Fiddler自带的AutoResponder每条自动响应规则只能对应一个本地文件, 在文件数目较多的时候,使用起来很不方便,往往需要部署到本地web服务,有了Stave插件(扩展),一个URL匹配可以对应一个本地目录,URL规则也支持通配符,前端调试方便多了。

除支持URL映射到目录之外,还支持URL到URL的替换。

Stave扩展并不影响原本的AutoResponder功能,两者可以共同起作用。

一:首先安装Stave插件:

下载Stave 

安装完成后重新启动下Fiddler,可以看到右侧tab选项卡多了一个stave选项如下:

我们先可以看看本身的实列如上2个,第一个是替换目录的,第二个是替换单个文件;我们接下来看看他们的如何配置的,我们点击右键 —》 编辑  打开如下编辑页面:

可以看到如上配置;我们先来实践下吧!

比如我现在的项目,通过Fiddler截取请求如下:

现在我需要的是 我想把 172.16.28.183:8080/jgz/statics/easyui 这个路径下的所有js文件批量替换成我本地文件中的js,如下我本地的目录文件:

现在我们来看看配置如下:

  1. 首先点击右侧 右键 -> 添加

弹出添加规则如下:

把要匹配的目录填到匹配输入框里面去,替换为 填写本地的文件目录 如上面的;点击“确定”按钮即可;

现在的js文件都替换掉了,但是有时候我们需要替换单独的css文件,或者单独的js文件,我们可以在AutoResponder选项卡中进行替换,如下所示:

如上即可~ stave插件和AutoResponder选项卡搭配使用批量替换目录;

如上:总结了一些基本常用到Fiddler插件及知识点,以后有机会还会更多的分享自己了解这方面的东西,还会有下文的,如果分享不好,请多多理解!如果有帮助的话,可以点击下面的推荐按钮~ 不胜感谢~~


相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
2月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【2月更文挑战第3天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
66 0
|
2月前
|
缓存 监控 前端开发
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(3)-再识Fiddler让你感性认识一下
【2月更文挑战第5天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(3)-再识Fiddler让你感性认识一下 上一篇通过宏哥的介绍想必各位小伙伴或者童鞋们对Fiddler已经有了一个理性地认识,今天宏哥在从Fiddler的外貌介绍和分享一下,让小伙伴们或者童鞋们再对Fiddler有一个感性的认识,今天主要是对Fiddler的界面进行一个详细的介绍。
67 1
|
1月前
|
安全 Android开发 iOS开发
《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(8)-Fiddler如何设置捕获会话
【2月更文挑战第9天】《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(8)-Fiddler如何设置捕获会话
38 5
|
2月前
|
Web App开发 监控 前端开发
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下
【2月更文挑战第4天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下 今天的理性认识主要就是讲解和分享Fiddler的一些理论基础知识。其实这部分也没有什么,主要是给小伙伴或者童鞋们讲一些实际工作中的场景,然后隆重推出我们的猪脚(主角)-Fiddler。在这个网络信息时代里,计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及。许多电脑高手 经常利用 Fiddler 可以作为代理的这个功能去抓取会话并进行修改达到自己想要的目的。Fiddler是一个强大并且跨平台的HTTP(S)抓包神器,你可别拿去做坏事。它的英文名叫:Fiddler,
58 2
|
数据采集 机器人 Python
Python爬虫|反爬初体验
几种简单高效的反爬虫方法总结。
Python爬虫|反爬初体验
|
前端开发
前端知识学习案例-浏览器得工作原理
前端知识学习案例-浏览器得工作原理
47 0
前端知识学习案例-浏览器得工作原理
|
Web App开发 数据采集 数据可视化
实战|手把手教你如何使用抓包神器MitmProxy
大家好,我是阿辰,今天教大家如何使用MitmProxy抓包工具。 玩爬虫的小伙伴都知道,抓包工具除了MitmProxy外,还有Fiddler、Charles以及浏览器netwrok等
551 0
|
网络协议 测试技术 数据安全/隐私保护
测试工具Fiddler(一)—— 基础知识
测试工具Fiddler(一)—— 基础知识
195 0
测试工具Fiddler(一)—— 基础知识
|
缓存 网络协议 前端开发
前端利器躬行记(6)——Fiddler
前端利器躬行记(6)——Fiddler
前端利器躬行记(6)——Fiddler