Fidder工具详解

Fidder抓包工具的基本使用
1.工作原理
fidder是http代理服务器,它使用的代理地址:127.0.0.1,端口:8888.它会抓取浏览器向服务器发送的http请求,然后将该请求发送到服务器。再获取从服务器返回的请求结果,将结果发送到浏览器。

2.代理模式
流模式与缓冲模式。流模式:fidder会实时吧服务器返回给客户端的数据进行返回。缓冲模式:fidder会等待所有的请求都准备好之后才返回给客户端。区别:缓冲模式下可以控制最后的服务器响应;而流模式下不能控制,是什么就是什么,更接近浏览器本身的真实行为。
3.设置代理
默认下,fidder不会捕获https会话,需要设置,打开fidder->tool->fidder options->https tab

fiddler>Tools>Fiddler Options>Connections 勾选Allow remote computers to connect。(此处设置的监听端口与代理服务器的端口要保持一致)

能支持http代理的任意程序的数据包都能被fidder嗅探到,fidder的运行机制其实就是本机上监听8888端口的http代理。在firefox上设置代理步骤: 工具->选项->高级->网络->设置  。并配置相应的代理如下:

4.设置捕获HTTPS请求
1.打开菜单栏:Tools>Fiddler Options>HTTPS
2.勾选Decrypt HTTPS traffic,里面的两个子菜单也一起勾选了。

3.点右上角Actions按钮
4.选第二个选项,导出到桌面,此时桌面上会多一个文件:FiddlerRoot.cer,如图。

5.打开右上角浏览器设置》选项》高级》证书》查看证书》证书机构》导入

6.勾选文件导入

  1. 打开文件后,会弹出个框,勾选三个选项就完成操作。

5.fidder基本界面

5.1.fidder工具栏
给捕捉到的绘画增加一个备注,不太常用
用于重播会话,快捷键是R。按住CTRL无条件补发,按住SHIFT多次补发。
用来清空监控面板,右侧的小三角形可以选择条件清空。
对应的中文版为
这个要结合状态栏的断点使用,这里简单插播一下状态栏的图标介绍:
右下角的状态栏中如果有这个图标的话表示正在捕获会话中,点击一下就停止捕获
这个是指捕获的哪些进程,第一个是指全部进程,第二个是web浏览器,第三个是非浏览器,最后一个是隐藏所有。
这个就是添加断点功能,就在上个图标后面小白框框内点击一下就有了。当对指定进程设置断点之后,点击,就会在断电进程停止,必须点击才能够继续捕获后面的会话。
如果我再次点击,就会变成箭头向下的这个图标,这个意思是指客户端发送个已请求在服务器未返回请求时停止捕获,再点击继续。
这个按钮就是切换模式的按钮,之前已经讲过了,这里略过。
解码按钮,就是帮我们将http中的东西解压出来,能够帮助我们更好的查看数据。适用于下次捕获的会话。
保持会话,保存的越多,内存占用越大
这个按钮很重要,当这样显示的时候表示捕捉的所有进程的信息。当我只想捕捉某一个进程的信息时,我们将把心拖动到此进程的图标之上,例如只想捕获谷歌浏览器的会话,就把靶心拖动到下方谷歌浏览器的图标上面,成功后按钮变成
就说明已经锁定了这个进程。辣么后面再捕获的进程就不会有其他的会话了。
查找功能,在会话比较多的时候点击这个可以查找指定会话并标记颜色,点开之后是这个样子的
中文版就是这张图

当我们标记之后想取消标记怎么办,点击这个按钮就可以了。

保存按钮,可以保存为有密码的saz文件,也可以是没有密码的。
五秒钟之后会把截图保存下来
计时器,点击一下开始,再单击一下停止,第三下清零或右键清零。
可以快速启动下拉菜单中的浏览器
快速清除缓存,一般在抓包之前要做的事情
文字编解码,点开后选择解码方式就可以编解码了
将右侧面板变成浮窗,关闭浮窗之后就变回原样。
MSDN首座和帮助按钮,不常用到。
5.2.fidder会话框
会话框主要是查看请求的一些基本信息,如#、result、protocol、host、URL、body、caching、content-type、process
#:会话框列表最左侧,#号这一栏是代表这个请求大概是什么内容
<>这个符号就是我们一般要测试的请求与响应的类型。

result:这里是服务器返回的代码,如
–200,请求ok;2xx一般是服务器接受成功了并处理
–3xx,重定向相关
–4xx,404最常见的的就是找不到服务器,一般是请求地址有问题
–5xx,这个一般是服务器本身的错误
protocol:这个是协议类型,如http、https
host:主机地址或域名
url:请求的路径
body:该条请求产生的数据大小
caching:缓存相关
content-type:连接类型
process:客户端类型
5.3.控制面板
5.3.1.命令行工具

常见的命令有:
help 打开官方使用页面介绍,所有的命令都会列出来
cls 清屏(ctrl+x)
select 选择会话的命令
?png 用来选择png后缀的图片
bpu 截获request
5.3.2.状态栏

Capturing:开启/关闭 fiddler的监听;
Web Browsers:过滤会话选择;
5.4.Statistic(数据统计面板)
关于HTTP请求的性能和其他数据分析:

5.5.Inspectors(解包分析)
分为上下两个部分,上半部分是请求头部分,下半部分是响应头部分。对于每一部分,提供了多种不同格式查看每个请求和响应的内容。JPG格式使用 ImageView就可以看到图片,HTML/JS/CSS使用 TextView可以看到响应的内容。Raw标签可以查看原始的符合HTTP标准的请求和响应头。Auth则可以查看授权Proxy-Authorization和 Authorization的相关信息。Cookies标签可以看到请求的cookie和响应的set-cookie头信息。
5.6.AutoResponder(文件代理)
Fiddler比较重要且比较强大的功能之一。可用于拦截某一请求,并重定向到本地的资源,或者使用Fiddler的内置响应。可用于调试服务器端代码而无需修改服务器端的代码和配置,因为拦截和重定向后,实际上访问的是本地的文件或者得到的是Fiddler的内置响应。当勾选allow autoresponser 并设置相应的规则后(本例中的规则是将http://blog.csdn.net/ohmygirl的请求拦截到本地的文件layout.html),如下图所示

然后在浏览器中访问http://blog.csdn.net/ohmygirl,得到的结果实际为:

这刚好是本地layout.html的内容,说明请求已经成功被拦截到本地.当然也可以使用Fiddler的内置响应。下图是Fiddler支持的拦截重定向的方式:

因此,如果要调试服务器的某个脚本文件,可以将该脚本拦截到本地,在本地修改完脚本之后,再修改服务器端的内容,这可以保证,尽量在真实的环境下去调试,从而最大限度的减少bug发生的可能性。
不仅是单个url,Fiddler支持多种url匹配的方式:
I. 字符匹配
如 example可以匹配http://www.example.com和http://example.com.cn
II. 完全匹配
以EXACT开头表示完全匹配,如上边的例子
EXACT:http://blog.csdn.net/ohmygirl
III. 正则表达式匹配
以regex: 开头,使用正则表达式来匹配URL
如:regex:(?insx).*.(css|js|php)$ 表示匹配所有以css,js,php结尾的请求url

5.7.Composer(前后端接口联调,伪造请求)
版本的fiddler中叫request-builder.顾名思义,可以构建相应的请求,有两种常用的方式构建请求:
(1)Parsed 输入请求的url之后executed即可,也可以修改相应的头信息(如添加常用的accept, host, referrer, cookie,cache-control等头部)后execute.
(2)Raw。使用HTTP头部信息构建http请求。

准备工作:
接口请求方式、请求参数;
Get请求:参数直接写在接口里面

Post请求:参数写在Request Body里面。

同时,我们还能够伪造Request Header中的Cookie。

5.8.TimeLine(性能分析)

5.9.Filter(设置过滤)
Fiddler另一个比较强大的功能。Fiddler提供了多维度的过滤规则,足以满足日常开发调试的需求。如下图示:

过滤规则有:
a. host和zone过滤。可以过滤只显示intranet或则internet的HTTP请求
也可以选择特定域名的HTTP请求

b. client process:可以捕获指定进程的请求。
这对于调试单个应用的请求很有帮助。
5.9.1.域名过滤
只显示特定域名的记录:

设置好了后一定要点击Actions生效;
5.9.2.类型过滤
一般对各种图片、CSS、JS这类的静态素材也不需要看的情况下,直接全部过滤掉,需要过滤多少自己直接加入就好了。
.*.(bmp|css|js|gif|ico|jp?g|png|swf|woff)

5.9.3.根据返回状态码
比如只想显示200的状态,其他的不显示:

5.10.request请求

headers:请求头,这里包含client、cookies、transport等
Client 头域:
Accept: text/html, application/xhtml+xml, image/jxr, /                     ---------浏览器端可以接受的媒体类型
Accept-Encoding: gzip, deflate                    ---------压缩方法
Accept-Language: zh-CN                              ---------语言类型
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 ---------客户端使用的操作系统和浏览器的名称和版本
Transport 头域:
Connection:当网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接是否关闭。keep-alive表示不会关闭,客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接;close表示关闭,客户端再次访问这个服务器上的网页,需要重新建立连接。
HOST:主机名或域名,若没有指定端口,表示使用默认端口80.
webfroms:请求参数信息表格展示,更直观。可以直接该区域的参数
Auth:授权相关,如果显示如下两行,说明不需要授权,可以不用关注
No Proxy-Authorization Header is present.
No Authorization Header is present.
cookies:查看cookie详情
raw:查看一个完整请求的内容,可以直接复制
json:查看json数据
xml:查看xml文件的信息

5.11.response响应

HTTP Response Header:继续以百度为例,如图所示:

协议:HTTP/1.1
状态码:200
Cache头域:
Cache-Control: private --此响应消息不能被共享缓存处理,对于其他用户的请求无效
Date: Sat, 05 Aug 2017 04:37:43 GMT ---------生成消息的具体时间和日期
Expires: Sat, 05 Aug 2017 04:37:42 GMT    ---------浏览器会在指定过期时间内使用本地缓存
Cookie/Login 头域:
Set-Cookie: BDSVRTM=264; path=/                           ---------把cookie发送到客户端
Set-Cookie: BD_HOME=1; path=/
Set-Cookie: H_PS_PSSID=1425_21097_22157; path=/; domain=.baidu.com
Entity头域
Content-Length:202740       ---------正文长度
Content-Type:text/html;charset=utf-8 ------告知客户端服务器本身响应的对象的类型和字符集
Miscellaneous 头域:
Bdpagetype: 2
Bdqid: 0x99791efd00036253
Bduserid: 2577220064
Server: BWS/1.1                                                      --------指明HTTP服务器的软件信息
X-Ua-Compatible: IE=Edge,chrome=1
Security头域:
Strict-Transport-Security: max-age=172800           ---------基于安全考虑而需要发送的参数
Transport头域:
Connection: Keep-Alive
TextView:显示请求或响应的数据。
WebForms:请求部分以表单形式显示所有的请求参数和参数值;响应部分与TextView内容是一样的。
Auth:显示认证信息,如Authorization
Cookies:显示所有cookies
Raw:显示Headers和Body数据
JSON:若请求或响应数据是json格式,以json形式显示请求或响应内容
XML:若请求或响应数据是xml格式,以xml形式显示请求或响应内容。
6.设置断点
6.1.设置断点
点击rules->Automatic Breakpoints,在这个选项下,我们可以看到三个可选项:
Before requests:在请求发出前拦截请求(也就是发送请求之后,在fiddler代理中转之前,这时可以修改请求的数据);

After request:拦截返回信息(服务器响应之后,fiddler将响应中转给客户端之前);

Disabled:不可用(默认);

命令行设置断点:
Bpu 域名:这种方式只会对配置的域名添加断点,在请求开始时中断;
Bpafter 域名:这种方式只会对配置的域名添加断点,在响应到达时中断;
6.2.修改数据
6.2.1.修改请求数据
点击rules->Automatic Breakpoints->after request,点击需要修改请求数据的网页,在左侧会话框中选中请求,点击inpectors->webforms中,修改表单数据,修改参数后,点击run to complention执行,查看网页返回的信息;
6.2.2.修改响应数据
点击rules->Automatic Breakpoints->before request,点击需要修改响应数据的网页,选中请求,点击inpectors->json中修改响应数据,修改参数后,点击run to complention执行,查看网页返回的信息;
6.3.取消断点
Rules–Automatic breakpoints–disabled(或者按shift+F11键)
命令行:如果是before request—使用bpu取消;
如果是after response—使用bpafter取消;
7.应用场景
7.1.任意修改用户资料
通过抓取发送修改用户资料请求的数据包,修改参数可篡改重置用户资料

7.2.任意查询用户信息
通过抓取查询的数据包,获取用户信息。
7.3.任意短信内容编辑
点击“获取短信验证码”,并抓取数据包内容。通过分析数据包,可以修改为攻击者想要发送的内容。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值