Fiddler 是个很好用的网络请求查看与调试工具,还可以写插件来扩展其功能。
Fiddler 插件开发,使用 WPF 作为 UI 控件 - J.晒太阳的猫 - 博客园
但部分场景下,需要自定义很多网络监控操作,集成到自己的程序中。这时就需要 FiddlerCore 了。
关于 Fiddler的使用,Fiddler插件开发,FiddlerCore 详细的说明,都可以看 《Fiddler权威调试指南》一书,网上可以找到电子版。
FiddlerCore 安装
FiddlerCore 的最新版本是收费版,但 nuget.org 上可以下载到之前版本(最后更新时间:2016-01-01),基础的功能是够用的,不能直接拉取的话,则需要配置本地 Nuget 源,然后把这个 Nuget 包放进去。
并在项目 csproj 文件中,添加:
FiddlerCore 官网:FiddlerCore - Fiddler Proxy Engine for .NET and .NET Standard - Telerik
FiddlerCore Nuget: NuGet Gallery | FiddlerCore 4.6.2
FiddlerCore Nuget 包(4.6.2) 下载地址:https://pan.baidu.com/s/1ueTCsJ5Jv7wovCeWVN4gDw
FiddlerCore 使用
FiddlerCore 的使用非常简单,主要的就是 1 启动代理,2 监听事件,3 安装证书,4 关闭代理
- 1 启动代理
FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default | FiddlerCoreStartupFlags.RegisterAsSystemProxy);
这里 FiddlerCoreStartupFlags.RegisterAsSystemProxy
是将你的这个程序(或者说 127.0.0.1:9898)注册为系统代理,所有走系统代理的,都会通过此程序。
如果不设置 FiddlerCoreStartupFlags.RegisterAsSystemProxy
,则被监控的程序,需要手动指定代理到 9898 这个端口。
- 2 监听事件
FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;
FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse;
private static void FiddlerApplication_BeforeResponse(Session oSession)
{
}
private static void FiddlerApplication_BeforeRequest(Session oSession)
{
}
通过这两个事件,就可以拿到 FiddlerCore 所截获的请求。然后进行操作或者记录。
- 3 安装证书
如果需要监听 HTTPS 请求,需要安装证书,安装证书时,会有一个弹窗,让用户同意。
// 安装证书
public static bool InstallCertificate()
{
if (!CertMaker.rootCertExists())
{
if (!CertMaker.createRootCert())
return false;
if (!CertMaker.trustRootCert())
return false;
}
return true;
}
// 卸载证书
public static bool UninstallCertificate()
{
if (CertMaker.rootCertExists())
{
if (!CertMaker.removeFiddlerGeneratedCerts(true))
return false;
}
return true;
}
- 4 关闭代理
这点很重要,因为如果程序结束之后代理不关闭,则无法正常上网。(因为设置了代理,但代理程序关闭了。)
if (FiddlerApplication.IsStarted())
{
FiddlerApplication.Shutdown();
}
在真正使用的时候,以上这些操作,建议做一层抽象和封装,不然业务和网络监控的代码会耦合的太紧。
更多关于网络测试与监控的实现,可以参考这个项目:
RickStrahl/WestWindWebSurge: Quick and easy URL and Load Testing for your Web applications on Windows
参考资料
- 使用FiddlerCore来测试WebAPI - 独上高楼 - 博客园
- Using FiddlerCore to capture HTTP Requests with .NET - Rick Strahl's Web Log
- Fiddler调试权威指南
原文链接:https://www.cnblogs.com/jasongrass/p/12044321.html