Fiddler 是個很好用的網絡請求查看與調試工具,還可以寫插件來擴展其功能。
但部分場景下,需要自定義很多網絡監控操作,集成到自己的程序中。這時就需要 FiddlerCore 了。
關於 Fiddler的使用,Fiddler插件開發,FiddlerCore 詳細的說明,都可以看 《Fiddler權威調試指南》一書,網上可以找到電子版。
FiddlerCore 安裝
FiddlerCore 的最新版本是收費版,但 nuget.org 上可以下載到之前版本(最后更新時間:2016-01-01),基礎的功能是夠用的,不能直接拉取的話,則需要配置本地 Nuget 源,然后把這個 Nuget 包放進去。
並在項目 csproj 文件中,添加:
<ItemGroup>
<PackageReference Include="FiddlerCore" Version="4.6.2.0"/>
</ItemGroup>
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