首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >使用 FiddlerCore 自定义 HTTP/HTTPS 网络代理

使用 FiddlerCore 自定义 HTTP/HTTPS 网络代理

作者头像
jgrass
发布2024-12-25 16:16:23
发布2024-12-25 16:16:23
5590
举报
文章被收录于专栏:蔻丁杂记蔻丁杂记

Fiddler 是个很好用的网络请求查看与调试工具,还可以写插件来扩展其功能。

Fiddler 插件开发,使用 WPF 作为 UI 控件

但部分场景下,需要自定义很多网络监控操作,集成到自己的程序中。这时就需要 FiddlerCore 了。

关于 Fiddler的使用,Fiddler插件开发,FiddlerCore 详细的说明,都可以看 《Fiddler权威调试指南》一书,网上可以找到电子版。

FiddlerCore 安装

FiddlerCore 的最新版本是收费版,但 nuget.org 上可以下载到之前版本(最后更新时间:2016-01-01),基础的功能是够用的,不能直接拉取的话,则需要配置本地 Nuget 源,然后把这个 Nuget 包放进去。 并在项目 csproj 文件中,添加:

代码语言:javascript
复制
    <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 启动代理
代码语言:javascript
复制
FiddlerApplication.Startup(9898, FiddlerCoreStartupFlags.Default | FiddlerCoreStartupFlags.RegisterAsSystemProxy);

这里 FiddlerCoreStartupFlags.RegisterAsSystemProxy 是将你的这个程序(或者说 127.0.0.1:9898)注册为系统代理,所有走系统代理的,都会通过此程序。

如果不设置 FiddlerCoreStartupFlags.RegisterAsSystemProxy ,则被监控的程序,需要手动指定代理到 9898 这个端口。

  • 2 监听事件
代码语言:javascript
复制
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 请求,需要安装证书,安装证书时,会有一个弹窗,让用户同意。

代码语言:javascript
复制
// 安装证书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 关闭代理

这点很重要,因为如果程序结束之后代理不关闭,则无法正常上网。(因为设置了代理,但代理程序关闭了。)

代码语言:javascript
复制
if (FiddlerApplication.IsStarted()){    FiddlerApplication.Shutdown();}

在真正使用的时候,以上这些操作,建议做一层抽象和封装,不然业务和网络监控的代码会耦合的太紧。

更多关于网络测试与监控的实现,可以参考这个项目:

RickStrahl/WestWindWebSurge: Quick and easy URL and Load Testing for your Web applications on Windows

参考资料

原文链接: https://cloud.tencent.com/developer/article/2481465

本作品采用 「署名 4.0 国际」 许可协议进行许可,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年12月15日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • FiddlerCore 安装
  • FiddlerCore 使用
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档