不知道读者在使用 Fiddler 软件时,是否考虑过 Fiddler 是怎样抓包的,原理是什么?
Fiddler 本质上是一个 Web 代理服务器,默认的工作端口是 8888。查看端口方式为,点击菜单 “Tools”,选择“Options...” 菜单项,如下图:
在打开的 “Options” 配置框的 “Connections” 选项卡,如下图:
什么是 Web 代理服务器?
Web 代理(Web Proxy Server)服务器是网络的中间实体。Web 代理位于 Web 客户端和 Web 服务器之间,扮演 “中间人” 的角色。HTTP 代理服务器既是 Web服务器又是 Web客户端。如下图:
上图中,浏览器发起请求到 Fiddler 代理服务器,然后由 Fiddler 代理服务将请求转发给真实的服务器。服务器收到请求后,进行各种处理,然后将响应返回给 Fiddler 代理服务器,Fiddler 代理服务器再将响应返回给浏览器。
既然浏览器的请求和服务器的响应均要通过 Fiddler 代理服务器来转发,在进行转发之前,我们可以对请求/响应报文进行任何操作。例如:修改请求参数、修改响应数据、在请求发送到服务器之前打断点、在响应到达浏览器之前打断点、创建Mock服务等等。
代理服务器的作用
(1)共享网络:能解决仅仅有一条线路、一个公有 IP 的问题。在公有 IP 资源严重不足的情况下,可以满足局域网大量用户同时共享上网的需求。
(2)提高了访问速度:因为大部分的代理服务器都有缓存功能,可以直接从缓存读取,无须再连接到远程 Web 服务器,下载访问资源。这可以加快访问网站的速度、节约带宽资源。
(3)突破访问限制:当访问权限受到限制时,可以使用有权限的代理服务器去访问受限资源。
(4)隐藏身份:内部网络的用户要对外发布信息,就需要使用代理服务器的反向代理功能。这样就不会影响内部网络的安全性能,起到隐藏身份的目的。
Fiddler 工作原理
在了解工作原理前,我们先看看一个具体实例。详细步骤如下:
(1)打开 Fiddler 软件,处于抓包状态的 Fiddler 监听的端口是 8888,如下图:
(2)打开 “控制面板”,选择 “Inte.NET选项”。选择 “连接” 选项卡,然后点击 “局域网设置(L)” 按钮,如下图:
在局域网设置弹框中,选择 “高级” 按钮。如下图:
打开“代理设置”弹框,如下图:
从上图中可知,其实 Fiddler 已经自动将系统 HTTP 和 HTTPS 代理设置为 127.0.0.1:8888 了。如果我们浏览器默认使用的是系统代理,那么 Fiddler 就能正常抓包了。
但是,Firefox 浏览器是个例外,它可以手动配置是否使用系统代理设置,如果设置不是使用系统代理设置,则 Fiddler 将抓不到 Firefox 浏览器的包。如下图:
如果我们此时将 Fiddler 关闭,再次查看 “Internet选项” 关于局域网的设置。如下图:
上图中,已经没有配置代理服务器信息了,即不走代理,Fiddler 也就不能抓包了。
通过上面的例子的分析,应该明白为什么 Fiddler 能够抓包了吧!!
Fiddler 抓包的原理和我们生活中快递代收点类似,快递员将我们的快递放在代收点(如果我们快递没有使用胶带等封口,那么代收点是不是可以任意查看、替换我们快递中的东西,这就类似HTTP;如果我们快递使用胶带等封了口的,那么代收点就不能随意查看快递中是什么、甚至替换,这就类似HTTPS),我们有时间就到代收点去取快递。