当前位置: 首页 > news >正文

.NET 开发者的“Fiddler”:Titanium.Web.Proxy 库的强大魅力

在日常开发中,我们经常需要监控和分析网络请求。虽然 Fiddler 和 Charles 等工具功能强大,但有时我们需要将抓包功能集成到自己的应用中。Titanium.Web.Proxy 就是一个强大的 .NET 库,它允许我们在自己的应用中实现完整的 HTTP/HTTPS 抓包功能。

本文将基于一个实际的 Windows Forms .net 8.0项目,展示如何使用 Titanium.Web.Proxy 构建一个功能完善的网络监控工具。

一、安装NuGet 包

Install-Package Titanium.Web.Proxy

二、代理服务器初始化

private void InitializeProxy()
{proxyServer = new ProxyServer();proxyServer.CertificateManager.CreateRootCertificate();proxyServer.CertificateManager.TrustRootCertificateAsAdmin();
}

证书管理是 HTTPS 抓包的关键,Titanium.Web.Proxy 会自动处理证书的创建和信任,使我们可以解密 HTTPS 流量。证书安装一次后不会重复提示安装。(之前在用FiddlerCore的时候,每次启动应用都需要安装一次证书,所以找替代库,就找到了Titanium.Web.Proxy)

三、启动代理服务器

private async Task StartCapture()
{try{// 验证端口号if (!int.TryParse(txtPort.Text, out int port) || port < 1 || port > 65535){MessageBox.Show("请输入有效的端口号 (1-65535)");return;}// 创建代理端点var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, port, true);if (proxyServer != null){// 注册请求处理事件proxyServer.BeforeRequest += OnRequest;proxyServer.BeforeResponse += OnResponse;// 启动代理proxyServer.AddEndPoint(explicitEndPoint);proxyServer.Start();// 设置系统代理proxyServer.SetAsSystemHttpProxy(explicitEndPoint);proxyServer.SetAsSystemHttpsProxy(explicitEndPoint);isCapturing = true;LogManager.Log($"代理已启动,监听端口: {port}\r\n");}}catch (Exception ex){MessageBox.Show($"启动代理失败: {ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}
}

四、逻辑处理

OnRequest这是抓包的核心功能,所有经过代理的请求都会触发这个事件。

private async Task OnRequest(object sender, SessionEventArgs e)
{//这里我们经常需要过滤特定类型的请求//DataManager.HandleData(e.HttpClient.Request.Url);
}private async Task OnRequest(object sender, SessionEventArgs e)
{// 这里可以修改请求和响应// 修改请求头e.HttpClient.Request.Headers.Add("X-Custom-Header", "Value");// 修改请求体if (e.HttpClient.Request.Method == "POST"){var body = await e.GetRequestBody();var modifiedBody = body.Replace("old", "new");await e.SetRequestBody(modifiedBody);}
}

http://www.dtcms.com/a/366856.html

相关文章:

  • 以数据与自动化驱动实验室变革:智能化管理整体规划
  • “乾坤大挪移”:耐达讯自动化RS485转Profinet解锁HMI新乾坤
  • 数据安全章节考试考点及关系梳理
  • Hadoop(七)
  • 服务器数据恢复—服务器断电,RAID数据恢复大揭秘
  • Python - 通用滑块验证码识别库 Captcha-Recognizer
  • MySQL复制技术的发展历程
  • 【论文阅读—深度学习处理表格数据】ResNet-like FT Transformer
  • 当电力设计遇上AI:良策金宝AI如何重构行业效率边界?
  • 学习嵌入式的第三十三天——网络编程
  • HTB Sau
  • 服务器异常磁盘写排查手册 · 已删除文件句柄篇
  • 稠密矩阵和稀疏矩阵的对比
  • C++面试突击(1)
  • 【面试】MySQL 面试常见优化问题
  • 面试官:如何确保动态线程池任务都执行完?
  • 计算机网络模型入门指南:分层原理与各层作用
  • EasyExcel:阿里开源的高效 Excel 处理工具,轻松解决 POI 内存溢出问题
  • SolidWorks对电脑的硬件配置要求具体有哪些
  • [Sublime Text]-显示菜单栏
  • 《云原生深坑实录:让团队卡壳的不是配置,是底层逻辑盲区》
  • 【Dify】使用工具节点实现 API 接口调用与 JSON 处理
  • 25高教社杯数模国赛【B题超高质量思路+问题分析】
  • 具身智能多模态感知与场景理解:视觉探索
  • 第二阶段WinForm-13:图表控件,N层架构,Dapper
  • 数据结构与排序算法:从理论到场景,解锁高效数据处理的核心逻辑
  • 【项目思路】基于STM32+ZigBee的智能家居--浴室场景设计
  • 服务器异常负载排查手册 · 隐蔽进程篇
  • QT面经(含相关知识)
  • elasticsearch学习(五)文档CRUD