一、Filter介绍
Fiddler是一款免费的web调试代理工具,不仅可以查看和修改HTTP请求和响应数据,并且还有非常强大的过滤功能,这让我们在调试过程中能够过滤掉不必要的内容,大大提高调试效率。Filter是Fiddler中非常重要的一个功能,通过Filter可以实现只展示特定内容、过滤掉无关内容、快速定位调试信息等功能。
二、Filter的基础使用
Fiddler的主界面中最上方是Filter选项卡,我们在这里可以输入过滤的关键词,下方会自动显示符合条件的会话列表。最简单的使用方法就是输入关键词,然后点击“Show Only Matching Sessions”按钮,就可以看到符合条件的会话列表,如下所示:
//简单filter示例 //过滤掉所有URL地址中包含“baidu”关键字的会话 if (oSession.uriContains("baidu")) { oSession["ui-hide"] = "true"; }
除了uriContains,Fiddler还支持其他多种过滤方式,例如:uriMatches、uriEquals、oSession.RequestHeaders.AllKeys.Contains()等。同时,我们还可以利用not关键字实现反向匹配,例如:“not(uriContains("facebook"))”,这样的Filter就是过滤掉所有包含“facebook”的会话。
三、Filter高级功能
1、正则表达式的使用
除了简单的文本过滤之外,Fiddler还支持使用正则表达式进行过滤。在Filter选项卡中,勾选“Use regular expressions”选项,就可以在过滤关键字输入框中使用正则表达式了。
//正则表达式filter示例 //过滤掉URL中以.baidu.com为结尾的会话 if (oSession.uriMatches(".*/[.]?baidu[.][^/]*$")) { oSession["ui-hide"] = "true"; }
2、自定义列的添加和过滤
Fiddler中可以方便地添加自定义列,在自定义列中可以显示我们需要的信息,例如请求头、响应头信息、页面加载时间、HTTP状态码等。自定义列中的内容也支持过滤操作,在Filter选项卡中,点击“Filter by Column”按钮就可以进行自定义列的过滤。
//自定义列和自定义列过滤filter示例 //自定义列名“MyHeader”,显示oSession.RequestHeaders["MyHeader"]的值 FiddlerObject.UI.lvSessions.AddBoundColumn("MyHeader","MyHeader value","RequestHeaders", "MyHeader"); //过滤掉MyHeader值为"SensitiveValue"的会话 if (oSession.RequestHeaders["MyHeader"]=="SensitiveValue") { oSession["ui-hide"] = "true"; }
3、JavaScript脚本的使用
Fiddler支持在Filter中使用JavaScript脚本,这让我们在过滤方面有了更强大的控制。通过JavaScript脚本我们可以实现更为复杂的逻辑过滤,以及定位特定的会话信息。
//JavaScript脚本filter示例 //过滤掉所有含有图片和脚本的会话 if(oSession.oResponse.headers.ExistsAndContains("Content-Type", "image/") || oSession.oResponse.headers.ExistsAndContains("Content-Type", "script/")){ oSession["ui-hide"] = "true"; }
四、Filter的效率和性能
Filter的效率和性能对于Fiddler的使用和性能至关重要。当我们的过滤条件变得复杂或者数据量变得庞大时,Filter的效率和性能就会受到一定的影响。在实际使用中,推荐在Filter条件中使用最简单的文本过滤,避免使用反复匹配的过滤条件以及复杂的JavaScript操作。
五、总结
Fiddler的Filter功能非常强大,可以让我们快速定位并修复错误。无论是基础还是高级的Filter操作,都可以通过Fiddler的帮助文档和详细的API进行实现。在实际开发中,我们可以灵活地使用Filter功能,达到根据需求进行快速和准确的定位与调试的目的。