简介

前几天发表了《基于Yarp实现内网http穿透》,当时刚刚从原理图变成了粗糙的代码实现,项目连名字都还没有,也没有开放源代码。在之后几天的时间,我不断地重构,朝着“可集成、可二次开发”的要求来完善项目,并项目取名为HttpMouse,象征着穿越能力很强的老鼠,同时把代码开源在Github/HttpMouse上。

原理

开发库

HttpMouse以库的形式提供给开发者,让开发者可以构建符合自身业务的http内网穿透系统。相比提供编译好的二进制可执行文件,库的方式更灵活,对于没有特殊定制要求的项目,samples里的例子就可以直接满足。

HttpMouse

HttpMouse库做为服务端库,基于Yarp开发与扩展,遵循Yarp的设计,将自身设计为asp.netcore的中间件。开发者除了可以使用asp.netcore生态里丰富的其它功能,还可以继续使用Yarp灵活的配置功能。

HttpMouse在Yarp之上实现了以下功能:

  • 可重写的路由提供者;
  • 可重写的集群提供者;
  • 可重写的内网客户端连接认证者;
  • 内网客户端连接管理功能;
  • 反向连接管理功能;
  • 配置反向连接的ForwarderHttpClientFactory;

HttpMouse.Client

HttpMouse.Client库做为客户端库,其作为公网的HttpMouse和局域网的http服务的通讯桥梁,它既是公网HttpMouse的客户端,也是局域网http服务的客户端。

HttpMouse.Client的集成方式可以如下:

  • 独立部署,与局域网http服务不同进程或不同机器
  • 集成部署,在局域网http服务器直接引用HttpMouse.Client

StarMe

开源不容易,尤其是.net生态,以下是博主开源的其它一些项目,欢迎来start

项目 简介
WebApiClient 可扩展的声明式的Http客户端库
Influxdb2.Client Influxdb2读写性能最快的dotnet客户端
FastGithub github定制版的dns服务,解析github最优的ip
PredicateLib 谓词筛选表达式Expression<Func<T, bool>>的一个扩展库

基于Yarp的http内网穿透库HttpMouse的更多相关文章

  1. frp实现基于反向代理的内网穿透

    个人博客主页: xzajyjs.cn frp是什么 简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP.TCP.UDP等众多协议 ...

  2. 基于frp的内网穿透实例4-为本地的web服务实现HTTPS访问

    原文地址:https://wuter.cn/1932.html/ 一.想要实现的功能 目前已经实现将本地的web服务暴露到公网,现想要实现https访问.(前提:已经有相应的证书文件,如果没有就去申请 ...

  3. 基于4G Cat.1的内网穿透实例分享

    上一篇分享了:小熊派4G开发板初体验 这一篇继续BearPi-4G开发板实践:内网穿透实验. 基本TCP的socket通信测试 之前我们学习WiFi模块时,与PC进行TCP协议的socket通信测试我 ...

  4. 基于C#的内网穿透学习笔记(附源码)

    如何让两台处在不同内网的主机直接互连?你需要内网穿透!          上图是一个非完整版内外网通讯图由内网端先发起,内网设备192.168.1.2:6677发送数据到外网时候必须经过nat会转换成 ...

  5. 基于frp的内网穿透实例1-通过SSH访问内网机器

    原文地址:https://wuter.cn/1804.html/ 老母鸡终于到了,作为一个能运行linux系统的四核1G硬件,它还是比较小巧的. FRP 全名:Fast Reverse Proxy.F ...

  6. 内网穿透神器(ngrok)服务端部署【分享一台自己的ngrok服务器】【多平台】

    Ngrok为何物 “ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放.”这是百度百科上给Ng ...

  7. 【代理】内网穿透工具 frp&frps

    frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发. ### frp 的作 ...

  8. 分享一个内网穿透工具frp

    首先简单介绍一下内网穿透: 内网穿透:通过公网,访问局域网里的IP地址与端口,这需要将局域网里的电脑端口映射到公网的端口上:这就需要用到反向代理,即在公网服务器上必须运行一个服务程序,然后在局域网中需 ...

  9. nodejs内网穿透

    说明 本地服务注册,基于子域名->端口映射.公网测试请开启二级或三级域名泛解析 无心跳保活.无多线程并发处理 服务器端 请求ID基于全局变量,不支持PM2多进程开服务端.(多开请修改uid函数, ...

随机推荐

  1. Linux_配置认证访问FTP服务

    [RHEL8]-FTPserver:[Centos8]-FTPclient !!!测试环境我们首关闭防火墙和selinux(FTPserver和FTPclient都需要) [root@localhos ...

  2. nginx的四层转发功能

    架构图 配置过程 配置web服务器 # 1.配置web01,更改配置文件 [root@web01 /etc/nginx/conf.d]# vi test1.conf server { listen 8 ...

  3. 利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app -(转载)

    第一步:先打开第一个hex文件, 第二步:选择 "Merge data file",合并文件 第三步:两个工程有可能地址相同,会有如下提示:(如果在编译的时候设置好Flash的地址 ...

  4. 自己封装的mysql应用类示例

    from pymysql import *class my_mysql_mud(object): def __init__(self,host,port,db,user,passwd,charset= ...

  5. 6.6 rsync:文件同步工具

    rsync 是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据镜像同步备份的优秀工具.rsync适用于Unix/Linux/Windows等多种操作系统平台.   rsync命令有三种常 ...

  6. java 集合梳理

    使用 processOn 画的java 集合图谱,应付面试应该可以了

  7. python批量向kafka塞数据

    python批量向kafka塞数据 from kafka import KafkaClient from kafka.producer import SimpleProducer from kafka ...

  8. Docker学习(15) Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker使用网桥跨主机容器连接 Docker使用Open cSwitch实现跨主机容器连接 Docker使用weave实现跨主机容器连接

  9. lms框架模块详解

    模块的定义 一般地,开发者如果想要在一个自定义的程序集(包)中注册相关的服务,或者在应用初始化或停止时执行一段自定义的代码,那么您可能需要将该程序集(包)定义为一个模块. lms框架存在两种类型的模块 ...

  10. 十四、.net core(.NET 6)搭建ElasticSearch(ES)系列之给ElasticSearch添加SQL插件和浏览器插件

     给ES添加SQL插件的方法: 下载SQL插件地址:https://github.com/NLPchina/elasticsearch-sql 当前最新的是7.12版本,我的ES是7.13版本,暂且将 ...