1、fiddler抓包原理
Fiddler 是一个 HTTP 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析;可以设置断点调试、截取报文进行请求替换和数据篡改,也可以进行请求构造,还可以设置网络丢包和延迟进行 APP 弱网测试等。一般而言,fiddler用于手机端抓包较多。
2、fiddler安装与配置
(1)下载
官网:Fiddler | Web Debugging Proxy and Troubleshooting Tools
下载网址:Download Fiddler Web Debugging Tool for Free by Telerik
这样就下载完成啦;
(2)安装
打开下载的exe文件,根据提示进行安装;
(3)打开报错
问题描述
之前安装过fiddler后来卸载了,今天需要用到刚再次安装好,就报错Machine-wide Progress Telerik Fiddler Classic installation has saz.icobeen found at D:\搜狗高速下载 Fiddler2\ . Please, use that one or uninstall it before starting the per user Fiddler installation.
提示无法安装,某文件夹中已经有Fiddler2,提示需要卸载之前的,但是在提示文件夹中却没有。这种情况是上一次卸载是时注册表没有删除干净,需要删除注册表。
解决办法
1、win+R,输入regedit打开注册表
2、找到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Fiddler2,右键删除
3、找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fiddler2,右键删除
4、删除注册表以后,重新打开Fidder,成功打开
3、fiddler使用方法
(1)手工调用接口
(2)抓取PC端数据包
(3)抓取手机端数据包
①由于fiddler是一个代理请求工具,它需要配置自己的代理;
②保证手机与fiddler所在pc处于同一网段;
③打开pc端命令行(win+R,输入cmd),输入ipconfig,查看本地pc的ip,并记录;
④手机端wifi配置代理,代理ip为本地pc的ip,端口为fiddler所配置的port,默认8888;
⑤打开手机端浏览器,输入pc端的ip:port,会提示安装证书,此时根据提示安装安全证书,一般而言,安装证书需要进入手机系统的设置进行安全安装;
⑥安装成功后,pc的fiddler可以正常进行抓包操作;
(4)拦截请求与拦截响应
fiddler中,可以正常抓到协议包,一般而言是http与https的网络包,当我们需要mock数据请求时,就需要进行拦截操作;
所谓拦截,这里包括两种情况,第一种情况,当fiddler抓到对应请求,假设我们需要模拟请求发送异常的情况,fiddler进行操作拦截,然后通过修改参数或者直接发送异常请求进行转发,达到发送异常的效果;第二种情况,当fiddler收到服务端的响应后,假设我们需要模拟请求正常,但是服务器接口异常,这里我们就需要配置fiddler进行拦截服务端的响应,修改错误的参数或者转发错误的响应结果返回给客户端,这时,客户端就会收到服务端异常的消息,从而达到我们模拟的结果。
这里的拦截,也就是我们常说的断点,fiddler是支持断点操作的,如下图:
往往这种情况是针对为某一个服务打断点,也就是说同一个域名设置断点,拦截对应域名的断点,但是在工作中,还遇到过同一个域名下不同路径的断点,也就是局部断点,这里就需 要做以下操作:
①在fiddler中打开:rules菜单,然后选择:cutomize rules;
②在打开的编辑器中,找到:OnBeforeRequest方法;
③在该方法代码块中,添加以下类似代码片段:
if (oSession.host=="example.com" && oSession.PathAndQuery=="/specific-path"){
oSession["ui-color"]="yellow";
oSession["x-breakrequest"]="uri";
}
注意将:example.com替换成你想要设置断点的服务器host,将:/specific-path替换成你想要设置为断点的具体路径;
④保存脚本,并关闭脚本编辑器;
⑤确保fiddler正在监听请求,并使用你设置的host和指定路径进行请求;
⑥当fiddler捕获到匹配设置断点的请求时,它将使用:ui-color属性将其突出显示,并自动暂停请求;
请注意,显示为黄色的请求表示已设置的断点。通过这种方式,你可以在fiddler中设置同一个host下的特定接口为断点,而不会影响其他接口。
(5)包过滤
往往用fiddler抓取的网络包有很多,想要快速查看自己想要的包,就需要设置过滤;如下,只需要在输入框中输入自己想要过滤的域名即可;