使用 FiddlerCore 自定义 HTTP/HTTPS 网络代理
使用 FiddlerCore 自定义 HTTP/HTTPS 网络代理
Fiddler 是个很好用的网络请求查看与调试工具,还可以写插件来扩展其功能。
但部分场景下,需要自定义很多网络监控操作,集成到自己的程序中。这时就需要 FiddlerCore 了。
关于 Fiddler的使用,Fiddler插件开发,FiddlerCore 详细的说明,都可以看 《Fiddler权威调试指南》一书,网上可以找到电子版。
FiddlerCore 安装
FiddlerCore 的最新版本是收费版,但 nuget.org 上可以下载到之前版本(最后更新时间:2016-01-01),基础的功能是够用的,不能直接拉取的话,则需要配置本地 Nuget 源,然后把这个 Nuget 包放进去。
并在项目 csproj 文件中,添加:
1 2 3 | <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 启动代理
1 | FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default | FiddlerCoreStartupFlags.RegisterAsSystemProxy); |
这里 FiddlerCoreStartupFlags.RegisterAsSystemProxy
是将你的这个程序(或者说 127.0.0.1:9898)注册为系统代理,所有走系统代理的,都会通过此程序。
如果不设置 FiddlerCoreStartupFlags.RegisterAsSystemProxy
,则被监控的程序,需要手动指定代理到 9898 这个端口。
2 监听事件
1 2 3 4 5 6 7 8 9 10 | 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 请求,需要安装证书,安装证书时,会有一个弹窗,让用户同意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | // 安装证书 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 关闭代理
这点很重要,因为如果程序结束之后代理不关闭,则无法正常上网。(因为设置了代理,但代理程序关闭了。)
1 2 3 4 | if (FiddlerApplication.IsStarted()) { FiddlerApplication.Shutdown(); } |
在真正使用的时候,以上这些操作,建议做一层抽象和封装,不然业务和网络监控的代码会耦合的太紧。
更多关于网络测试与监控的实现,可以参考这个项目:
RickStrahl/WestWindWebSurge: Quick and easy URL and Load Testing for your Web applications on Windows
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
2018-06-16 关于并发量的简单计算公式
2017-06-16 天融信堡垒机