Fiddler 抓包软件的安装和使用

1. Fiddler 简介
Fiddler 专用抓包工具,工作在应用层,只能对HTTP协议(包含HTTPS协议)进行抓取。
Fiddler 功能丰富,体积小巧,支持HTTP断点调试,且是一款免费的软件。
Fiddler 是用 C# 编写的HTTP协议调试代理工具,它以代理服务器的方式监听你的电脑和互联网之间的http通讯。运行Fiddler后,就会在本地电脑打开8888端口,网络数据流通过Fiddler进行中转时,可以对HTTP/HTTPS数据流进行记录并加以分析,甚至还可以修改发送或接收的数据。

工作原理是Fiddler在浏览器(或者其他使用HTTP协议的进程)和服务器之间扮演代理的角色,所有的HTTP通讯,只要设置了系统代理,就要经过它。

Fiddler以8888端口开本地代理服务器,只要你的HTTP通信将代理设置为本地8888,Fiddler就能帮助你截获数据,然后中转给服务器或者客户端。它最大的一个特点是可以中途修改HTTP通信的内容。

2. Fiddler 的下载与安装
可以直接到 Fiddler 的官网下载,也可以   点击此处  下载。
下载完成后,双击安装程序,按照提示安装即可。安装完成后,打开Fiddler软件,在浏览器中输入  http://127.0.0.1:8888/ ,如果能够访问,就说明安装成功。
在 Fiddler 软件打开的情况下,如果通过浏览器浏览网页,Fiddler就会抓取到浏览器和服务器之间交互的数据包。

打开 Fiddler 软件后,抓包默认是启用的(如果想要关闭抓包功能,点击菜单栏的File,取消Capture Traffic的勾选即可),一般不需要进行设置,在各种浏览器下 Fiddler 都能顺利工作。实际上,Fiddler与浏览器也无关。如果在某种浏览器中打开网页时,Fiddler 并没有抓取到HTTP通信记录,则只需检查浏览器的代理设置,将浏览器的代理设置为“使用系统代理设置”即可。系统代理是本地的8888端口代理,它是浏览器的默认代理。

使用PHP的curl扩展库,来模拟浏览器的HTTP请求时,curl层的HTTP请求无法被Fiddler抓取,因为curl请求默认是没有使用代理的。如果想让curl请求也能被Fiddler抓取,可以设置curl的选项,将 127.0.0.1:8888 作为本地 的代理服务器,即加上如下的选项设置:
curl_setopt($ch,CURLOPT_PROXY,'127.0.0.1:8888'); // 设置本地系统代理服务器 

3. Fiddler 的基本界面
Fiddler 最基本的功能就是抓包和观察数据,下面简单介绍它的界面。
Fiddler 的界面分为左右两栏:
  • 左栏是Sessions记录(注意:它不同于PHP中的session),即 HTTP 会话记录,每个HTTP会话记录了数据包的序号、状态码、协议类型、Host、URL、响应内容的长度、Caching、Content-Type、Process等基本信息。
  • 右栏划分为上下两个部分,上面是HTTP请求时的数据,下面是HTTP响应时的数据。常用的三种查看数据的方式为:Raw(HTTP协议标准格式)、Header(header头格式)、HexView (十六进制数据流)。

在Sessions栏里,选择某一条会话记录后,右击鼠标,通过弹出的快捷菜单可以对其执行保存、标记、删除、重放和注释等操作。
下面介绍几个常用的操作:
保存:保存HTTP会话数据,便于以后查看或者做资源重定向。
标记:标记醒目的颜色方便查看。
删除:删除不重要的会话记录。
重放:再次执行该请求
注释:给该会话记录添加注释,注释将显示在该Session的Comment列。

另外,在对HTTP协议进行分析时,对于image、css、javascript类型的静态资源的请求通常无助于我们进行协议分析,但这类Session(会话请求)往往还比较多,这就干扰到了我们寻找需要的会话。故需要删除这类会话记录。可以通过鼠标选择后删除,也可以通过Fiddler的命令窗口来选择后删除。

在Sessions栏的最下面有一个黑色的命令窗口,在命令窗口输入 select image,会选中所有image类型的session,按delete键删除;输入 select css,会选中所有的css资源的session,按delete键删除;输入 select javascript,会选中所有的javascript资源的session,按delete键删除。如果要删除所有的session,在命令窗口输入 cls,回车即可。

4. 使用 Fiddler 进行 HTTP 断点调试
Fiddler的断点调试功能分为两种:After Responses(响应后断点)和 Before Requests(请求前断点)。默认是禁用调试功能的。

(1)After Responses
响应后断点的原理是:在服务器响应到达Fiddler后,转发给浏览器客户端之前,设置断点,这样,我们就可以对响应的原始数据进行修改,然后,再将修改后的结果返回给客户端。
操作方法如下:
首先,点击菜单栏的 Rules → Automatic Breakpoints → After Responses,开启响应后断点调试功能;其次,在浏览器中访问某个URL,可看到响应一直被挂起;然后,到 Fiddler 右侧的响应数据窗口,修改原始的(Raw)响应数据;最后,点击 Run to Completion,将修改后的响应数据返回给客户端。

(2)Before Requests
请求前断点的原理是:在浏览器客户端把请求发送给Fiddler后,转发给服务器之前,设置断点,这样,我们就可以修改HTTP请求相关的原始数据,然后,再将修改后的请求发送给服务器。
操作方法如下:
首先,点击菜单栏的 Rules → Automatic Breakpoints → Before Requests,开启请求前断点调试功能;其次,在浏览器中访问某个URL,可看到请求一致被挂起;然后,到 Fiddler 右侧的请求数据窗口,修改原始的(Raw)请求数据;最后,点击  Run to Completion,将修改后的请求发送给服务器。

这两个功能对于调试Ajax程序特别有用,比如:修改请求内容、GET数据、POST数据、header头、cookie等等。

原文链接:https://blog.csdn.net/lamp_yang_3533/article/details/52497981

猜你喜欢

转载自blog.csdn.net/qq_29494019/article/details/80329229