.NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求

这篇具有很好参考价值的文章主要介绍了.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请求动作方法,也就是说它在筛选GETPOST,如若想监控其他方法,改这个地方就好。

第二个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里就好了,然后在判断体里解析数据,把想要的数据写进一个文档里。这样在你浏览网页的时候,就可以边学习边记录,防止以后迷路辣🫣。

当然过程可能会复杂那么一捏捏,但大体上是差不多的。

后记

本篇只写了关于反应体的捕获和处理,对于请求体也大差不差,自己捣鼓捣鼓吧文章来源地址https://www.toymoban.com/news/detail-490318.html

到了这里,关于.NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java使用Netty实现端口转发&Http代理&Sock5代理服务器

    这里总结整理了之前使用Java写的端口转发、Http代理、Sock5代理程序,放在同一个工程中,方便使用。 开发语言:Java 开发框架:Netty 端口转发: HTTP代理服务器,支持账号密码认证 Sock5代理服务器,支持账号密码认证 支持连接后端时直接连接或采用代理连接,也后端代理连接认

    2024年01月25日
    浏览(21)
  • 前端开发服务器中的 Proxy 代理跨域实现原理解读

    各位朋友你们好,我是 桃小瑞 ,微信公众 @ 桃小瑞 。在这给大家拜个晚年,祝各位朋友新年快乐。 在前端的开发过程中,尤其是在浏览器环境下,跨域是个绕不开的话题,相信每个前端都会涉及到这个问题,记住的就直接手敲解决跨域问题,记不住的就只能问度娘了。😂😂

    2024年01月16日
    浏览(18)
  • 使用Java实现HTTP代理服务器:为你当个“中间人“

    在互联网世界里,代理服务器就像是一个\\\"中间人\\\",帮助客户端和服务器之间传递信息。那么,如果你想用Java实现一个代理服务器,该怎么做呢?下面就带你走进这个有趣的\\\"中间人\\\"世界! 首先,我们需要了解代理服务器的工作原理。简单来说,当一个客户端向代理服务器发

    2024年02月19日
    浏览(18)
  • smiley-http-proxy-servlet 实现springboot 接口反向代理,站点代理,项目鉴权,安全的引入第三方项目服务

    2023-11-15 SmileSayBoot 开源,项目内扩展 实现了动态代理,可代理API接口/站点,若对你有用,请点个☆star 谢谢,能力有限,不喜勿喷。 背景: 项目初期 和硬件集成,实现了些功能服务,由于是局域网环境,安全问题当时都可以最小化无视。随着对接的服务越来越多,部分功能

    2024年02月12日
    浏览(17)
  • 第二节:基础入门-Web 应用&架构搭建&漏洞&HTTP 数据包&代理服务器

    基础入门-Web 应用架构搭建漏洞HTTP 数据包代理服务器 #网站搭建前置知识 域名,子域名,DNS,HTTP/HTTPS,证书等 购买一台服务器,填完信息之后,会有两个内外网地址,这两个地址就是内部地址和公网地址 得到公网地址后可以用xshell或远程桌面管理连接这台服务器,这里我们

    2024年02月19日
    浏览(12)
  • 爬虫requests使用代理报错Your proxy appears to only use HTTP and not HTTPS...

    python版本:3.9.4 requests版本:2.28.2 详细报错如下 代理使用如下: 使用如下代理设置,报错得到解决 总结:由于之前使用的是python3.6.8版本,代理设置为’https’: \\\'https://xxxx’可以正常使用,而升级到python3.9.4则出现了上述问题。建议代理的使用统一为 ‘https’: ‘http://xxxx’

    2024年02月15日
    浏览(23)
  • .NET6入门:2.使用模板创建.NET Core Web

                    在目前B/S盛行的时代,本文将通过创建一个.NET Core Web模板的方式来带领大家进入.NET6开发的大门。         1.1 打开Visual Studio(不同版本VS可能创建新项目所在位置不同),单击创建新项目。         1.2 选择C#语言和Web平台,在下面的项目中选中ASP.NET Core Web应

    2024年02月12日
    浏览(10)
  • Docker设置http proxy代理

    需求: 由于公司服务器无法正常访问公网,想要下载一些外部依赖包需要配置公司的内部代理。 Docker构建镜像或拉取镜像时需要通过代理访问外网,可以按照以下步骤设置HTTP代理 目录 创建目录 创建并编辑配置文件 重新加载Docker服务配置 重启Docker服务 检验是否加载配置

    2024年02月12日
    浏览(18)
  • ASP.NET Core Web API入门之三:使用EF Core

    一般来讲我们做项目都会用实体类跟数据库实体进行关系对应,这样的好处方便我们维护、增删改查,并且可以减少SQL的编写,从而统一风格,那么 Entity Framework Core 就是很不错的ORM框架。 1、跨数据库支持能力强大,只需修改配置就可以轻松实现数据库切换。 2、提升了开发效

    2024年02月10日
    浏览(16)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包