首页>软件资讯>常见问题

常见问题

抓包神器Fiddler

发布时间:2023-11-24 09:44:01人气:107

Fiddler是一款功能非常强大的HTTP协议代理工具,能监听客户端和服务器间的HTTP通讯。在日常工作中,Fiddler是应用非常广泛的抓包和调试工具。掌握Fiddler,帮你轻松搞定接口调试。  

Fiddler介绍  

Fiddler简介  

Fiddler是一款免费、灵活、操作简单、功能强大的HTTP代理工具,是目前最常用的HTTP抓包工具之一。可以抓取所有的HTTP/HTTPS包、过滤会话、分析请求详细内容、伪造客户端请求、篡改服务器响应、重定向、网络限速、断点调试等功能。  

Fiddler工作原理  

Fiddler是在客户端和服务端之间建立的的HTTP代理服务器,能够监听客户端发出的请求和服务端返回的响应结果。  

Fiddler 工作原理.png

图解:  

在客户端和服务器之间,建立了一个HTTP代理服务器  

当启动的时候,Fiddler会默认把自己设置为系统代理,来监听客户端的HTTP/HTTPS请求  

默认代理地址为:127.0.0.1默认端口为:8888  

浏览器访问WEB网站的时候,请求报文会先发送到Fiddler  

Fiddler再把请求报文转发给服务器  

Web服务器返回的响应报文,也会先达到Fiddler  

Fiddler再把响应报文返回给浏览器  

原理剖析  

(1)系统代理  

上面说过,Fiddler启动的时候,会把自己设置为系统代理。下面我们来进行验证(win10为例)。  

双击启动Fiddler后,依次点击操作系统的开始菜单-->设置-->网络和Internet-->代理,可以看到手动设置代理这里,<使用代理服务器>的开关变为「开」,地址的内容为Fiddler的代理地址,端口为8888。  

系统代理端口设置.png 

我们还可以看一下Fiddler操作界面。依次点击Fiddler菜单栏-->Tools-->Options,选Connections,可以看到Fiddler默认的端口是8888。  

端口设置8888.png 

由此,充分说明Fiddler作为一个服务器启动,它默认占用的端口为8888,启动的同时,会自动去修改操作系统的代理设置。  

此外,我们还可以在浏览器的地址栏中,输入:http://localhost:8888,可以看到出现一个和Fiddler相关的网页。  

当关闭Fiddler后,系统代理开关又自动变回「关」状态,地址栏中内容变为空,客户端请求和服务端响应不再通过Fiddler进行代理转发。  

(2)抓包  

当我们访问网页时,浏览器会通过HTTP(S)协议向服务端请求资源,当开启Fiddler后,HTTP请求不会直接发送给服务端,而是需要通过Fiddler代理进行转发,服务端收到请求进行响应,服务端响应同样会通过Fiddler代理进行转发。在Fiddler左侧的会话列表,我们可以看到刚才浏览过的所有网页,会话列表中的1条session对应1个(HTTP/HTTPS)请求。  

抓包.png

主要抓包工具比对  

市场上抓包工具有很多,如:wireshark、httpwatch、charles、BurpSuite开发者工具,为何选择Fiddler。  

主要抓包工具比对.png

HTTPS证书安装  

默认情况下,Fiddler只能监听HTTP请求。当打开HTTPS网页时(如https://www.baidu.com),请求使用HTTPS协议建立连接通道,Fiddler无法解析这些加密请求。如下图,会话列表中HTTPS的请求,Host列显示为:Tunnelto,#列显示灰色的锁状态,请求报文的请求体显示乱码。这种种迹象表明Fiddler没有安装HTTPS证书,导致无法抓取HTTPS请求包。  

证书安装.png  

想要抓取HTTPS请求包,需要进行设置。设置路径:Tool->Options->HTTPS,勾选如图内容。  

https请求包设置.png 

点击“Actions”,选择ExportRootCertifificatetoDesktop,点击“yes”,导出证书到桌面后,重启Fiddler。  

Actions.png  

打开谷歌浏览器,点击隐私和安全-管理设备证书,将Fiddler证书导入受信任的证书,点击“关闭”。  

安全设置.png

浏览HTTPS网页,可以在Fiddler会话列表中看到,HTTPS数据包已经成功被抓取。  

抓取成功.png

局部断点  

局部断点,是针对某条特定的请求设置断点进行调试。在命令行中输入需要设置断点的请求指令,也是常用的一种断调试方式。常用断点调试命令如下:  

请求前断点:bpu空格+接口地址,回车  

响应后断点:bpafter空格+接口地址,回车  

响应状态码断点:bps空格+响应状态码,回车HTTP  

请求方式断点:bpm空格+请求方式,回车  

取消所有请求前断点:bpu+回车  

取消所有响应后断点:bpafter+回车  

取消所有响应状态码断点:bps+回车  

取消所有请求方式断点:bpm+回车  

请求前断点  

通过设置请求前断点,来篡改请求参数  

案例:以博客园的用户注册为例  

第一步:浏览器打开网页:  

https://account.cnblogs.com/signup  

第二步:在fiddler命令窗口输入:  

bpuhttps://account.cnblogs.com/signup  

第三步:在第一步打开的网页中,填写注册信息,滑动验证码,点击【注册】按钮  

第四步:在Fiddler会话列表中,可以看到这个请求已经被设置了请求前断点。  

第五步:点击这个会话请求,再点击右侧的WebForms表单,可以看到我们刚才填写的注册信息  

第六步:篡改刚才填写的邮件地址、手机号码  

第七步:点击【BreakonRep】、【RuntoComp】2个按钮。  

第八步:观察响应报文  

 请求断点.png

响应报文如下:  

响应报文.png

从这个案例可以看出,web前端填写的邮件地址、手机号码等信息,可以在fiddler中可以进篡改。如果后端接口没有对数据进行校验,那么我们填写的不合法邮件地址、手机号码将变得合法了。但是后端接口,如果不通过篡改数据来做测试,web前端根本没办法输入非法的邮箱和手机号。  

常用设置与技巧  

隐藏Host为tunnelto的会话  

Rules->HideConnects,把前面的勾勾起来。HTTPS解密失败的会话不会显示。  

隐藏图片类会话  

Rules->Hideimagerequests,把前面的勾勾起来。图片类会话不会显示。  

快速清空会话列表  

按快捷键:Ctrl+X,可以快速清空会话列表。



上一条:Python数据挖掘-应用toad包中的detect函数进行描述性统计

下一条:Fiddler抓包软件入门