fiddler抓包4-工具介绍

部分内容来源于:上海悠悠、一加一等博客园;

一、Fiddler的工作原理

 Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据。

 既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,所以web客户端和服务器的请求如下图所示:

 注:使用Fiddler的话,需要先设置浏览器的代理地址,才可以抓取到浏览器的数据包。而很方便的是在你启动该工具后,它就已经自动帮你设置好了浏览器的代理了,当关闭后,它又将浏览器代理还原了。当然如果发现没有自动设置浏览器代理的话,那就得自己动手去浏览器进行设置代理操作了。(可自行百度每个浏览器是如何设置代理的),反正一定要设置相应的代理,否则fiddler是无法捕获到HTTP请求的。

 

二、Fiddler界面简介

1.第二块区域是一些快捷功能键;

2.第三块是抓捕的请求会话列表,每一个请求就是一个会话;

3.第四块区域是request请求的详细信息,提供headers、textview、hexview、Raw等多种方式查看单条http请求报文的信息;

4.第五块区域是response信息,可以查看服务端返回的数据及详细信息;

5.第六块左下角黑色区域是命令行模式,例如输入:cls    清屏的作用,还有其它命令;

三、会话框

1. 会话框里会显示抓到的数据包,各个字段和#字段下的图标是什么意思:

image

名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值

图标

含义

clip_image001[13]

请求已经发往服务器

clip_image002[4]

已从服务器下载响应结果

clip_image003[4]

请求从断点处暂停

clip_image004[4]

响应从断点处暂停

clip_image005[4]

请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body)

clip_image006[4]

请求使用 HTTP 的 POST 方法

clip_image007[4]

请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道

clip_image008[4]

响应是 HTML 格式

clip_image009[4]

响应是一张图片

clip_image010[4]

响应是脚本格式

clip_image011[4]

响应是 CSS 格式

clip_image012[4]

响应是 XML 格式

clip_image013[4]

响应是 JSON 格式

clip_image014[4]

响应是一个音频文件

clip_image015[4]

响应是一个视频文件

clip_image016[4]

响应是一个 SilverLight

clip_image017[4]

响应是一个 FLASH

clip_image018[4]

响应是一个字体

clip_image019[4]

普通响应成功

clip_image020[4]

响应是 HTTP/300、301、302、303 或 307 重定向

clip_image021[4]

响应是 HTTP/304(无变更):使用缓存文件

clip_image022[4]

响应需要客户端证书验证

clip_image023[4]

服务端错误

clip_image0244

会话被客户端、Fiddler 或者服务端终止

 

 

1)关闭/开启抓包功能

Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。开启后在左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。

image

 

2)Fiddler中的查询会话

Edit->Find Sessions(或Ctrl+F)打开Find Sessions的对话框,输入关键字查询你要的会话。 查询到的会话会用黄色显示,如下图所示:

 

3)Fiddler中的保存会话

有些时候我们需要把会话保存下来,以便发给别人或者以后去分析。  保存会话的步骤如下:File->Save->Selected Sessions

4)中断会话后修改表单内容

       不知道什么原因捕获不了登录界面的会话(除了博客园网站外,其他很多网站的会话都捕获不到。解决方法:按上面‘Fiddler 设置解密HTTPS的网络数据’所写的步骤设置一下)

  举个实例,模拟博客园的登录, 在IE中打开博客园的登录页面,输入错误的用户名和密码,用Fiddler中断会话,修改成正确的用户名、密码。这样就能成功登录:

  1. 用IE 打开博客园的登录界面  http://passport.cnblogs.com/login.aspx

  2. 打开Fiddler,  在命令行中输入bpu http://passport.cnblogs.com/login.aspx

  3. 输入错误的用户名和密码,点击登录;

  4. Fiddler 能中断这次会话,选择被中断的会话,点击Inspectors tab下的WebForms tab 修改用户名密码,然后点击Run to Completion 如下图所示;

  5. 结果是正确地登录了博客园(Fiddler中也能修改Response)

(该实例来源于博客:http://kb.cnblogs.com/page/130367/)

5)Fiddler中会话比较功能

选中2个会话,右键然后点击Compare,就可以用WinDiff来比较两个会话的不同了(注:需要安装WinDiff,自行百度安装就可以了,这里就不细说安装步骤),如下图所示

(compare功能)

四、Statistics 关于HTTP请求的性能

1. Statistics关于HTTP请求的性能(例如发送/接受字节数,发送/接收时间,还有粗略统计世界各地访问该服务器所花费的时间)以及数据分析。如下图所示:

(Statistics选项卡)

五、Inspectors 查看某一会话的Request 和Response

1.Request是客户端发出去的数据,Response是服务端返回过来的数据,这两块区域功能差不多

2.headers:请求头,这里包含client、cookies、transport等

3.webfroms:请求参数信息表格展示,更直观。可以直接该区域的参数

4.Auth:授权相关,如果现实如下两行,说明不需要授权

No Proxy-Authorization Header is present.

No Authorization Header is present.

5.cookies:查看cookie详情

6.raw:查看一个完整请求的内容,可以直接复制

7.json:查看json数据

8.xml:查看xml文件的信息

1)decode解码

1.如果response的TextView区域出现乱码情况,可以直接点下方黄色区域解码;

2.也可以选中上方快捷菜单中decode,这样后面的请求都会自动解码了;

 

六、AutoResponder 选项卡

AutoResponder 可用于拦截某一请求,即按自己添加的指定规则重定向到本地的资源或Fiddler资源,从而代替服务器响应。

举例:将“baidu”这个关键字跟本地电脑的一张图片绑定了,再访问带有“baidu”关键字的地址,就会被劫持,具体步骤如下图所示: 

(AutoResponder 选项卡)

启用规则后(勾选enable rules),在浏览器输入pan.baidu.com,会发现被劫持了,显示的是绑定的本地图片,而不是pan.baidu.com的页面

(被劫持)

 

七. Composer 自定义请求发送服务器

Composer允许自定义请求发送到服务器,可以手动创建一个新的请求,也可以在会话表中,拖拽一个现有的请求

Parsed模式下你只需要提供简单的URL地址即可(如下图,也可以在RequestBody定制一些属性,如模拟浏览器User-Agent)

1. 拖拽一个请求到Composer,

2. 修改Request Body 中的字段值,

3. 点击Execute,

4. 点击Inspectors,查看测试结果;

image

 

八、FiddlerScript 系统

 首先先安装SyntaxView插件,Inspectors tab->Get SyntaxView tab->Download and Install SyntaxView Now... 如下图所示

(安装SyntaxView插件)

  安装成功后Fiddler 就会多了一个Fiddler Script tab,如下图所示:

 

  在里面我们就可以编写脚本了, 看个实例让所有cnblogs的会话都显示红色。

  把这段脚本放在OnBeforeRequest(oSession: Session) 方法下,并且点击"Save script"

  (该段脚本来源于博客:http://kb.cnblogs.com/page/130367/)

if (oSession.HostnameIs("www.cnblogs.com")) {

  oSession["ui-color"] = "red";

}

  这样所有的cnblogs的会话都会显示红色。


九、 Filters 请求过滤

Fiters 是过滤请求用的,左边的窗口不断的更新,当你想看你系统的请求的时候,你刷新一下浏览器,一大片不知道哪来请求,看着碍眼,它还一直刷新你的屏幕。这个时候通过过滤规则来过滤掉那些不想看到的请求。

image

勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host

1、Zone 指定只显示内网(Intranet)或互联网(Internet)的内容:

image

 

2、Host 指定显示某个域名下的会话:

image

如果框框为黄色(如图),表示修改未生效,点击红圈里的文字即可

 

十、 Timeline 请求响应时间

在左侧会话窗口点击一个或多个(同时按下 Ctrl 键),Timeline 便会显示指定内容从服务端传输到客户端的时间:

image

 

十一、 Fiddler 内置命令与断点

Fiddler还有一个藏的很深的命令框,就是眼前,我用了几年的Fiddler都没有发现它,偶尔在别人的文章发现还有这个小功能,还蛮好用的,整理下记录在这里。

FIddler断点功能就是将请求截获下来,但是不发送,这个时候你可以干很多事情,比如说,把包改了,再发送给服务器君。还有balabala一大堆的事情可以做,就不举例子了。

image

命令

对应请求项

介绍

示例

?

All

问号后边跟一个字符串,可以匹配出包含这个字符串的请求

?google

>

Body

大于号后面跟一个数字,可以匹配出请求大小,大于这个数字请求

>1000

<

Body

小于号跟大于号相反,匹配出请求大小,小于这个数字的请求

<100

=

Result

等于号后面跟数字,可以匹配HTTP返回码

=200

@

Host

@后面跟Host,可以匹配域名

@www.baidu.com

select

Content-Type

select后面跟响应类型,可以匹配到相关的类型

select image

cls

All

清空当前所有请求

cls

dump

All

将所有请求打包成saz压缩包,保存到“我的文档\Fiddler2\Captures”目录下

dump

start

All

开始监听请求

start

stop

All

停止监听请求

stop

断点命令 

bpafter

All

bpafter后边跟一个字符串,表示中断所有包含该字符串的请求

bpafter baidu(输入bpafter解除断点)

bpu

All

跟bpafter差不多,只不过这个是收到请求了,中断响应

bpu baidu(输入bpu解除断点)

bps

Result

后面跟状态吗,表示中断所有是这个状态码的请求

bps 200(输入bps解除断点)

bpv / bpm

HTTP方法

只中断HTTP方法的命令,HTTP方法如POST、GET

bpv get(输入bpv解除断点)

g / go

All

放行所有中断下来的请求

g

 

十二、Fiddler中提供的编码工具

点击Fiddler 工具栏上的TextWizard,  这个工具可以Encode和Decode string,如下图所示

(TextWizard界面)


十三、如何在VS调试网站的时候使用Fiddler

  我们在用visual stuido 开发ASP.NET网站的时候也需要用Fiddler来分析HTTP, 默认的时候Fiddler是不能嗅探到localhost的网站。不过只要在localhost后面加个点号,Fiddler就能嗅探到。

  例如:原本ASP.NET的地址是 http://localhost:9999/Default.aspx,  加个点号后,变成 http://localhost.:9999/Default.aspx 就可以了

 

posted @ 2018-11-21 17:56  西安-小迪  阅读(332)  评论(0编辑  收藏  举报