.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请求的更多相关文章
- .net core 源码解析-web app是如何启动并接收处理请求(二) kestrel的启动
上篇讲到.net core web app是如何启动并接受请求的,下面接着探索kestrel server是如何完成此任务的. 1.kestrel server的入口KestrelServer.Sta ...
- .net core 源码解析-web app是如何启动并接收处理请求
最近.net core 1.1也发布了,蹒跚学步的小孩又长高了一些,园子里大家也都非常积极的在学习,闲来无事,扒拔源码,涨涨见识. 先来见识一下web站点是如何启动的,如何接受请求,.net core ...
- 遇到 Error creating the Web Proxy specified in the 'system.net/defaultProxy' configuration section的解决办法
用记事本编辑*.EXE.config,在“<system.net>”节点加入<defaultProxy> <proxy usesystemdefault="Fa ...
- WinHTTP Web Proxy Auto-Discovery Service
下面是网上搜集的,个人没有做测试,----------------------------- WinHTTP Web Proxy Auto-Discovery Service 服务成功发送一个 开始 ...
- 002.Create a web API with ASP.NET Core MVC and Visual Studio for Windows -- 【在windows上用vs与asp.net core mvc 创建一个 web api 程序】
Create a web API with ASP.NET Core MVC and Visual Studio for Windows 在windows上用vs与asp.net core mvc 创 ...
- ASP.NET Core MVC中构建Web API
在ASP.NET CORE MVC中,Web API是其中一个功能子集,可以直接使用MVC的特性及路由等功能. 在成功构建 ASP.NET CORE MVC项目之后,选中解决方案,先填加一个API的文 ...
- ROS创建Web代理(Web proxy)给QQ使用HTTP代理
使用Web代理可以提高网页的访问速度,因为访问的数据会存储在内存或是硬盘中,就会直接从代理服务器中读取.同时,为了提高网络访问的安全性,可以给Web代理服务器设置相应的权限,使它的安全性得到提高. 下 ...
- javascript使用web proxy来实现ajax cross-domain通信
在现代浏览器中,都强加了对javacript代码的访问限制,比如一个页面的js无法向非同源的url实现ajax请求,获得数据.在这时,是浏览器端会报错: No 'Access-Control-Allo ...
- asp.net core 3.0获取web应用的根目录
目录 1.需求 2.解决方案 1.需求 asp.net core 3.0的web项目中,在controller中,想要获取wwwroot下的imgs/banners文件夹下的所有文件: 在传统的asp ...
- Python3网络学习案例四:编写Web Proxy
代理服务器的定义和作用请走百度百科~ 1. Web Proxy的实现思路 这是基于上一篇"编写Web Server"写的,主要逻辑见下图: 我们要写的就是中间的Web Proxy部 ...
随机推荐
- 前端ffmpeg实现视频剪切
利用ffmpeg实现纯前端视频剪切 注意:在新版本Chrome浏览器中由于安全性问题,只能在https或localhost当中才能正常使用 1. 下载ffmpeg npm install @ffmpe ...
- 开发者需掌握的超实用VS Code for Windows快捷键
链接|https://dev.to/devland/100-crucial-keyboard-shortcuts-for-vs-code-users-4474 作者|Thomas Sentre 翻译| ...
- 网络抓包 tcpdump 使用指南
在网络问题的调试中,tcpdump应该说是一个必不可少的工具,和大部分linux下优秀工具一样,它的特点就是简单而强大.它是基于Unix系统的命令行式的数据包嗅探工具,可以抓取流动在网卡上的数据包. ...
- pyhon之编译成exe
1安装pyinstaller pip install pyinstaller 2 编译 pyinstaller -F -w game.py (-F表示打包单个文件,-w是为了打开exe时候不弹出黑框 ...
- 【Vue】Vuex
Vuex简介 概念: 专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对vue应用中多个组件的共享状态进行集中管理(读.写),也是一种适用于任意组件间的通信方式. 什么时候用Vuex ①多个 ...
- count(*) count(1) count(字段)效率问题
COUNT(字段名)和COUNT(*)的查询结果有什么不同? COUNT(1)和COUNT(*)之间的效率哪个更高? 你知道答案吗?很多人都认为COUNT(1)比COUNT(*)效率高,真的是这样吗? ...
- 飞桨paddlespeech语音唤醒推理C实现
上篇(飞桨paddlespeech 语音唤醒初探)初探了paddlespeech下的语音唤醒方案,通过调试也搞清楚了里面的细节.因为是python 下的,不能直接部署,要想在嵌入式上部署需要有C下的推 ...
- ES日志存储以及备份压缩到COS
导语 为了满足用户日益增长的日志存储大小,不影响用户的写入和查询性能.满足不同用户写入流量.同时用户日志长期保存,日志存储比较占用空间和成本.ES集群规格配置高,消耗资源和成本.我们基于Go语言设计了 ...
- Arnold置乱
一.Arnold置乱概述 Arnold变换是俄国数学家弗拉基米尔·阿诺德(Vladimir Igorevich Arnold)提出,Arnold将其应用在遍历理论研究中.由于Arnold本人最初对一张 ...
- 新员工入职,前端基础环境变量的配置!node、nvm、vue-cli的安装和下载
1.安装nvm及配置 首先下载nvm不要下载node,如果电脑已经有node的话需要卸载node,并使用命令提示符来查看node的位置(where node)手动删除 nvm下载链接:https:// ...