.NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求
2023/6/19 18:23:48
本文主要是介绍.NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
关于Titanium.Web.Proxy详细信息可以去这里仔细看看,这里只记录简单用法
安装引用Titanium.Web.Proxy
NuGet直接获取Titanium.Web.Proxy
使用
- 配置
与其说是配置,不如就说这一部分就是未来你需要使用的部分,想知道具体每个部分是干什么的就去看原文链接全放过来太占地方
var proxyServer = new ProxyServer(); proxyServer.CertificateManager.CertificateEngine = Titanium.Web.Proxy.Network.CertificateEngine.DefaultWindows; proxyServer.CertificateManager.EnsureRootCertificate(); proxyServer.BeforeResponse += OnResponse; proxyServer.ServerCertificateValidationCallback += OnCertificateValidation; proxyServer.ClientCertificateSelectionCallback += OnCertificateSelection; var explicitEndPoint = new ExplicitProxyEndPoint(IPAddress.Any, 8000, true){ }; explicitEndPoint.BeforeTunnelConnect += OnBeforeTunnelConnect; proxyServer.AddEndPoint(explicitEndPoint); proxyServer.Start(); proxyServer.SetAsSystemHttpProxy(explicitEndPoint); proxyServer.SetAsSystemHttpsProxy(explicitEndPoint); Console.Read();
最后的Console.Read();
是一个等待函数,你可以写一个其他函数代替或是直接不用,比如说一个鼠标点击事件或是等待时间啥的。
这部分配置就写进一个函数体中,到时想在哪里用代理就调用这个函数便可。
- 响应事件处理
private async Task OnBeforeTunnelConnectRequest(object sender, TunnelConnectSessionEventArgs e) { await Task.Run(() => { }); }
这部分是接收到链接请求时需要做的事情就是个事件,想做什么就写在这个地方写,没有想做的就干脆直接不要。
事件问题去网上自己去学😡!。
public async Task OnResponse(object sender, SessionEventArgs e) { e.HttpClient.Response.Headers; if (e.HttpClient.Request.Method == "GET" || e.HttpClient.Request.Method == "POST") { if (e.HttpClient.Response.StatusCode == 200) { } } if (e.UserData != null) { // 从存储在RequestHandler中的UserData属性的访问请求 var request = (Request)e.UserData; } }
这里就能对你想要的反应体进行操作了。
可以看到其中有两个if
条件,第一个是Http请求动作方法,也就是说它在筛选GET
和POST
,如若想监控其他方法,改这个地方就好。
第二个if
是对某一个状态的请求进行监控,示例代码中是状态200
,也就是成功状态的请求。
public Task OnCertificateValidation(object sender, CertificateValidationEventArgs e) { if (e.SslPolicyErrors == System.Net.Security.SslPolicyErrors.None) e.IsValid = true; return Task.CompletedTask; } public Task OnCertificateSelection(object sender, CertificateSelectionEventArgs e) { return Task.CompletedTask; }
这部分其实就是对证书验证之类的问题,无脑放进去就好了。
应用
接下来我举个栗子。
我想对要监控一个网页给我返回的数据,看看里面有没有一些有助于人类繁衍的神奇代号
这时候,你就可以这样写if(e.HttpClient.Request.RequestUri.ToString().StartsWith("这个地方写你需要监控的请求头")){ }
把这段扔进刚才说的OnResponse
第二个if
里就好了,然后在判断体里解析数据,把想要的数据写进一个文档里。这样在你浏览网页的时候,就可以边学习边记录,防止以后迷路辣🫣。
当然过程可能会复杂那么一捏捏,但大体上是差不多的。
后记
本篇只写了关于反应体的捕获和处理,对于请求体也大差不差,自己捣鼓捣鼓吧
这篇关于.NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#