Fiddler抓包教程,教你怎样抓得好抓得快

你是否了解Fiddler是,有何作用?
1. Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的HTTP抓包工具之一。
2. Fiddler能够记录客户端和服务器之间的所有HTTP请求,可以针对特定的HTTP请求,分析请求数据、断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试器。
本期小编献上一份Fiddler抓包教程,教你抓得又快又好~
1. Fiddler抓包原理
Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。
Fiddler退出的时候会自动注销,这样就不会影响别的程序。
如果Fiddler非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问的问题。解决办法是重新启动下Fiddler。
既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器。
反之服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。
使用了Fiddler之后,web客户端和服务器的请求过程如下图所示:

【小知识】
B/S架构(如上图):
1. 编写程序部署到web服务器,web服务运行在服务器上,绑定ip地址并监听某端口,接收和处理http请求。
2. 客户端通过http协议获取服务器上的网页、文档等资源。
超文本传输协议(Hyper Text Transfer Protocol):
1. 用于从万维网服务器传输超文本到本地浏览器的传送协议。
2. HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80。
3. http是基于请求与响应模式的、无状态的、应用层的协议。
2. Fiddler工具介绍
Fiddler主界面分为:菜单栏、工具栏、会话列表栏、命令区…等区域,详见下图:

接下来会一一讲解图中标注的内容。
2.1 菜单栏
(1)常用功能“文件→捕获通信”:

捕获通信:通过快捷键F12控制。
导入会话:将抓取到的会话导出,方便其他人查看。
导出会话:导入会话,追溯历史记录。
(2)常用功能“编辑→移除”:

(3)常用功能“编辑→查找会话”:


移除:删除不需要的HTTP请求信息,支持选中、反选、全选。
查找:通过关键字快速定位HTTP请求信息位置,常用的过滤条件为仅请求和仅响应,结果突出显示(Yellow)。
标记:使用不同颜色标记请求,可使用6种颜色分类标记。
(4)常用功能“工具”:

工具→选项:


工具→WinINET选项:
用于对PC端进行设置代理,Fiddler启动的时候,浏览器的代理就自动挂上了。

工具→文字编/解码
作为编码工具,可以用来进行编码、解码、转码操作。

2.2 会话列表栏
2.2.1 HTTP请求报文
HTTP请求报文主要由请求行、请求头部、请求正文、空白行4部分组成;GET没有请求体。

注意:空白行 也就是在请求头结束的下方,会存在一个空白行, 这是必须存在的, 是由HTTP标准规定的。

【小知识】
GET与POST区别:
1. 最直观的区别就是GET把参数包含在URL中,POST通过request body (请求体)传递参数。
2. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
3. GET在浏览器回退时是无害的,而POST会再次提交请求。
4. GET请求只能进行url编码,而POST支持多种编码方式。
5. GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
6. GET请求在URL中传送的参数是有长度限制的,而POST没有。
注意:这个限制是由浏览器导致。
7. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
8. GET参数通过URL传递,POST放request body中。
2.2.2 HTTP响应报文
HTTP响应报文:主要由状态行、消息报头、响应正文、空白行4部分组成。



2.2.3 会话列表
Fiddler抓取到的每条http请求(每一条称为一个session),包含了请求的ID编号、状态码、协议、主机名、URI、内容类型、body大小、进程信息、自定义备注等信息。

注意:
响应数据的长度,通常返回的数据内容越多,用户等待时间越长。
响应数据的类型,除了可以返回网页数据外还可以返回: 图片、文字、音乐、视频...等信息。

【小知识】
在Fiddler的会话面板中不会展示请求方式,虽然请求头中有展示,但是每次看接口,都得一个一个点开查看,也很麻烦,因此就以此为例子,添加请求方式列在会话面板。
操作步骤如下:
1. 界面操作配置自定义列:



2. 通过脚本自定义列:

StatusText位置添加一行内容:
FiddlerObject.UI.lvSessions.AddBoundColumn("客户端IP", 120, "X-HostIP");重启Fiddler,查看新增的列:

2.2.4 功能面板

(1)过滤器
通过过滤器可以过滤掉不需要的HTTP请求,使得抓包更精确。

① 点击选择过滤器页签。
② 勾选“使用筛选器”。
③ Hosts下方的第二个下拉框,选择“仅显示下列主机”。
④ 性能测试过程中不需要抓取静态资源,在请求标头中填写正则表达式过滤。

REGEX:(?insx)/[^\?/]*\.(css|ico|jpg|png|gif|bmp|wav)(\?.*)?$
⑤ 在下方输入框中输入要抓包的主机地址(多个地址用英文分号隔开,如: localhost;127.0.0.1),点击右上角的“动作”选择“现在运行筛选器”。
⑥ 如果取消过滤,去掉“使用筛选器”的勾选。
(2)统计

“实际性能”参数注解:
客户端连接:客户端与Fiddler建立了连接的时间。
客户端开始请求:客户端开始把请求发给Fiddler的时间。
客户端得到请求:Fiddler接收到客户端发来请求头的时间。
客户端完成请求:客户端完成将HTTP请求发送给Fiddler的时间。
确定网关:确认网关使用的时间。
DNS解析:DNS解析使用的时间。
TCP/IP连接:Fiddler与服务器建立连接(三次握手)使用的时间。
HTTP 握手:Fiddler与服务器HTTPS握手使用的时间。
连接服务器:Fiddler与服务器已建立连接的时间。
Fiddler开始请求:Fiddler开始把请求发给服务器的时间。
服务器请求:服务器接收完Fiddler发来的整个请求的时间。
服务器开始响应:Fiddler接收到服务器返回的第一个响应字节的时间。
得到响应头:Fiddler接收完成服务器发来请求头的时间。
服务器响应:服务器已将整个HTTP响应完全发送到Fiddler的时间。
客户端开始响应:Fiddler开始向客户端返回已接收到的HTTP响应数据的时间。
客户端做出响应:Fiddler已将整个HTTP响应数据完全发送给客户端的时间。
(3)检查

① 可以用多种不同格式查看每个请求和响应的内容。
② 页签分为上下两部分,上部显示的是发出的请求相关信息,下部显示的是接收的响应相关信息。
请求部分:
标头:显示客户端发送到服务器的 HTTP 请求的 header,显示为一个分级视图,包含了 Web 客户端信息、Cookie、传输状态等。
文本视图:显示 POST 请求的 body 部分为文本。
语法视图:为Textview
Fiddler抓包教程,教你怎样抓得好抓得快
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



