浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过系统http代理发送到服务器。 而Fiddler是c#开发(微软出品,主要作者Eric Lawrence)的http代理服务器,fiddler工作于七层中的应用层,能够捕获到通过的http(s)请求。Fiddler充当了一个在客户浏览器与服务器之间的代理服务器角色。它会在本地建立一个代理服务,默认端口为8888,可以访问 http://127.0.0.1:8888 会显示Fiddler的页面。

Fiddler 作为系统代理,当启用 Fiddler 时,IE 的PROXY 设定会变成 127.0.0.1:8888,因此如果你的浏览器在开启fiddler之后没有设置相应的代理,则fiddler是无法捕获到HTTP请求的。如下是启动Fiddler之后,IE浏览器的代理设置:

Fiddler-工作原理

工作原理如下:

Fiddler-工作原理

在安装了Fiddler的系统中,启动Fiddler之后会监听8888端口(默认8888,可以修改)。

我们可以通过监控系统的端口来查看:

1. 在启动fiddler之前端口8888的状态

命令:netstat -ano|findstr "8888"

Fiddler-工作原理

表示查不到占用状态

2. 启动fiddler之后:

Fiddler-工作原理

在启动fiddelr之后可以发现8888端口被5256线程给监听, LISTENING 表示此线程正在监听

可以查看到5256线程为fiddler程序Fiddler-工作原理

命令:tasklist |findstr "5256"

Fiddler-工作原理

3.然后启动Chrome浏览器,浏览网页就会发现:

5658进程与fiddler建立了tcp连接(ESTABLISHED 表示此线程的连接情况),发送端为5658进程占用3258端口,接收端为fiddler(5256)占用的8888端口

命令:netstat -ano|findstr "8888"
Fiddler-工作原理

查看5568进程,为chrome程序

命令:tasklist |findstr "5568"
Fiddler-工作原理

同理,打开Firefox浏览器,浏览网页也是如此:

7836进程与fiddler建立了tcp连接,发送端为7836进程占用3294端口,接收端为fiddler(5256)占用的8888端口

命令:netstat -ano|findstr "8888"

Fiddler-工作原理

查看7836进程,为firefox程序:

命令:tasklist |findstr "7836"

Fiddler-工作原理

ps:要注意的firefox中需要手工将代理设置成fiddler:127.0.0.1:8888,因为Firefox不是使用系统默认的winINET

所以,fiddler作为一个代理服务器,跟浏览器建立连接之后,浏览器像目标服务器发送的请求都会经过fiddler代理,

所以fiddler可以捕获到http(s)请求,从而可以解释、分析、甚至重写发出去的http(s)请求。

简单说就是:

浏览器 <-> Fiddler <-> 服务器

在平常的调试中,fiddler常用于:

1. 解析请求:如:解析http请求状态,请求头,请求正文,返回头,返回正文等

2. 修改请求,如:设置断点,则可以修改发出去的请求数据,或者修改请求返回的数据

3.重定向请求,如:替换远程文件,则可以调试线上的js/css代码

4.构造请求,如:构造请求发送数据,比如可以用于的测试网站安全性

后面有时间再整理一下fiddler的用法。

转自:http://lin.xiaogang.me/?p=134

相关文章:

  • 2021-12-05
  • 2021-05-28
  • 2021-11-02
  • 2022-01-13
  • 2021-05-25
  • 2022-01-06
  • 2022-01-09
  • 2021-06-05
猜你喜欢
  • 2021-06-15
  • 2021-10-23
  • 2022-02-04
  • 2022-12-23
  • 2021-12-18
  • 2021-09-05
  • 2022-01-04
相关资源
相似解决方案