Fiddler工作原理:
浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器。 而Fiddler是http代理服务器,fiddler工作于七层中的应用层,能够捕获到通过的http(s)请求。fiddler启动后会自动将代理服务器设置为本机,端口是fiddler监听端口。监听的端口号在fiddler 菜单 Tools- TeleriK Fiddler options-connections中可以修改。
所以,fiddler作为一个代理服务器,跟浏览器建立连接之后,浏览器像目标服务器发送的请求都会经过fiddler代理,所以fiddler可以捕获到http(s)请求,从而可以解释、分析、甚至重写发出去的http(s)请求。
简单说就是:
浏览器 < -> Fiddler < -> 服务器
Fiddler是以代理WEB服务器的形式工作的,浏览器与服务器之间通过建立TCP连接以HTTP协议进行通信,浏览器默认通过自己发送HTTP请求到服务器,它使用代理地址:127.0.0.1, 端口:8888。当Fiddler开启会自动设置代理, 退出的时候它会自动注销代理,这样就不会影响别的程序。
不过如果Fiddler 非正常退出,这时候因为Fiddler没有自动注销,会造成网页无法访问。解决的办法是重新启动下Fiddler。
代理模式:流模式与缓冲模式
流模式:fiddler会实时把服务器返回给客户端的数据进行返回。
缓冲模式:fiddler会等待所有的请求都准备好之后才返回给客户端。
区别:缓冲模式下可以控制最后的服务器响应;而流模式下不能控制,是什么就是什么,更接近浏览器本身的真实行为。
在平常的调试中,fiddler常用于:
1、解析请求:如:解析http请求状态,请求头,请求正文,返回头,返回正文等
2、修改请求,如:设置断点,则可以修改发出去的请求数据,或者修改请求返回的数据
3、重定向请求,如:替换远程文件,则可以调试线上的js/css代码
4、构造请求,如:构造请求发送数据,比如可以用于的测试网站安全性
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式,Fiddler 是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。