Fiddler抓包设置及常见问题
Fiddler简介
官网:https://www.telerik.com/fiddler
Fiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试,
Fiddler抓取HTTPS请求配置
由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置。配置方式:
Tools--->Options--->HTTPS,勾选CaptureHTTPS CONNECTs、Decrypt HTTPS traffic 、ignore server certificate errors(unsafe),点击OK,会弹出证书直接确认即可。
此时,在电脑chrome浏览器上就可以访问https的请求了,且fiddler会话列表上就可以显示出https请求。
Fiddler抓取APP请求配置
在配置移动端证书之前检查下如下配置,Tools---->Connections---->勾选Allow remote computers to connect:
1. 保持手机和电脑处于同一网络中
2. 在手机上设置代理:设置—>无线网络,设置代理服务器ip和端口号
3. 然后手机safari浏览器输入地址:电脑ip:8888如:http://192.168.1.42:8888会出现如下页面
点击“FiddlerRoot certificate”进行证书安装,安装完成后,如下说明安装成功
此时,证书还不算完成安装完,假如手机是ios10.0以上系统,需要在手机系统设置---关于手机----证书信任设置,在此页面把证书开启即可
设置断点,篡改和伪造数据
前面讲过fiddler作为代理服务器时的请求流程图,请求时,可被篡改的两个点:Before Requests、After Responses。
修改Requests方法:Rules---->Automatic Breakpoints---->Before Requests
将右侧requests body里面的字段message内容前新增内容:“篡改requests数据成功!”,然后点击Run to Completion,先关闭掉拦截Rules---->Automatic Breakpoints---->Disabled,其他请求都放过,点击工具栏中的“Go”
还有一种方式在命令行中中断某一个域名的方式,如中断www.87testing.com,在命令行输入命令:bpu www.87testing.com,这样就可以拦截www.87testing.com的请求了,取消拦截输入命令:bpu
修改Responses方法:Rules---->Automatic Breakpoints---->After Responses,方法跟修改Requests类似,无非修改的内容变成了Response。
HTTP请求统计视图
页面请求时间的统计,比较详细,如果要看整个页面从请求,到最后一个请求结束的整体时间,也可以在会话列表中,ctrl+点击需要统计的请求,右边Statistics可以看到总体明细。
简单并发测试
在测试中,这样的场景也非常多,比如被测平台可以有多种货币,有可能从一种货币可以直接兑换成另一种平台货币,在兑换的时候,要多关注下两点安全:数据篡改及并发情况,数据篡改要测试扣减A货币时,篡改金额为负值或金额变少,那么兑换到B货币的数据校验,这个有点类似支付拿少的钱买多的东西,这里就不过多描述了。另外,并发情况,再比如经常会有一些活动相关的测试,假如抽奖活动,一般都有限制一个人一天只能抽一次,那么抽奖的时候同一个用户并发,会不会领取多次奖励。当然最好还是要有正规的压测,或者在测试中可以借助fiddler做一个简单的并发测试,都是很有必要的。
一个人一天只能有一次抽奖机会,那么在点击抽奖按钮发出请求之前,要设置Before Requests Breakpoints,点击抽奖后在会话列表中会看到一个被断点的请求,此时鼠标选中此请求,按shift+u,会弹出并发次数的设置,如下,设置并发次数5次(下面演示截图是发布帖子并发时的截图,可参考)
此时,点击工具栏“GO”,六个请求同时发到对应的服务端,即可形成6个并发请求
慢网络测试(限制网速)
1、Fiddler---》Rules---》Customize Rules ,
2、在CustomRules.js里搜索找到:m_SimulateModem,
3、在如下脚本中修改上传及下载延时毫秒数即可:
if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. oSession["response-trickle-delay"] = "150"; }
修改完成后,重启下fiddler,Rules---->Performance---->Simulate Modem Speeds,选中即可生效。
显示出服务器IP方法
Fiddler默认配置中是看不到服务器IP的,接下来简单介绍下在fiddler上也能够看到请求的服务器IP:
1、Fiddler---》Rules---》Customize Rules ,
2、在CustomRules.js里搜索找到:static function Main() ,
3、添加如下一行脚本:
FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP");
完整JS代码如下:
static function Main() { var today: Date = new Date(); FiddlerObject.StatusText = " CustomRules.js was loaded at: " + today; // Uncomment to add a "Server" column containing the response "Server" header, if present FiddlerObject.UI.lvSessions.AddBoundColumn("Server IP", 120, "X-HostIP"); }
添加完成后,重启下fiddler,就可以显示出请求的服务器ip。
命令行QuickExec用法
常用命令:
help-----打开官方QuickExct命令用法帮助
?87testing------选中带有87testing的请求
请求前断点
请求后断点
bafter https://www.baidu.com
常见问题
问题一:证书在ios上信任后仍提示不受信任的解决方法
ios 上一般信任 HTTPS 证书即可抓HTTPS的包,但最近发现 ios 系统 13以上出现即使安装并信任了证书,当用 safari 浏览百度时仍出现是否信任该网站的弹窗。经过一番搜索后发现原来 Fiddler 默认的证书生成工具对移动端可能会出现不兼容的情况,建议安装一个插件CertMaker for iOS and Android
:
iOS devices and Android devices may not work with the default HTTPS interception certificates used by Fiddler. To resolve this incompatibility, you may install a Certificate Generating plugin that generates interception certificates compatible with those platforms.

https://www.telerik.com/fiddler/add-ons
安装完后Fiddler原来的证书就会失效掉,重新安装信任即可
问题二:重新安装后可能导致firefox无法上网
解决方法:
fiddler的tools->fiddler options->Export Root Certificate to Desktop 导出到桌面
打开firefox,高级->证书->证书机构->导入刚才的证书即可