简介

前几天发表了《基于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. Log4j 配置多个 Logger

    引言 Log4j 是 Java 的主流日志框架,通过灵活的配置可以提供各种类型的日志服务. 在使用 Log4j 进行实际项目开发的过程中,有时不想使用 rootLogger 记录器,把所有的日志都输出 ...

  2. 基于Centos 7.4 搭建ELK整合SpringBoot日志收集

    基于Centos 7.4搭建es7.12.0+logstash-7.12.0+kibana-7.12.0(ELK)整合SpringBoot日志收集 注:Skywalking和logstash可共用一个 ...

  3. 第9章 case条件语句的应用实践

    case语句企业级生产案例 范例9-7:实现通过传参的方式往/etc/openvpn_authfile.conf里添加用户,具体要求如下. 1)命令用法为: USAGE: sh adduser {-a ...

  4. Centos7.4 docker安装包下载以及离线安装

    docker安装包下载地址:https://download.docker.com/linux/centos/7/x86_64/stable/Packages/ 需要下载一个selinux包:dock ...

  5. Gorm入门使用

    Gorm GORM CRUD 数据库的增删改查 go get -u github.com/jinzhu/gorm go get -u github.com/jinzhu/gorm/dialects/m ...

  6. IP子网如何划分?so easy!

    IP地址与子网掩码 1. IP地址划分 1.1 IP地址 1.2 由两部分组成 1.3 IP地址的分类 1.4 IP地址的规划原则 2.子网掩码划分 2.1 32个二进制位 2.2IP地址和子网掩码作 ...

  7. Swagger的学习

    Swagger 号称世界上最流行的Api框架; RestFul Api文档在线自动生成工具=>Api文档与API定义同步更新 直接运行,可以在线测试API接口 支持多种语言:(Java,Php. ...

  8. Mybatis基础使用方法

    1.首先在数据库中建立一张表 create table login( name varchar(20) not null, username varchar(20) not null, passwor ...

  9. ONNX MLIR方法

    ONNX MLIR方法 MLIR中的开放式神经网络交换实现. Prerequisites gcc >= 6.4 libprotoc >= 3.11.0 cmake >= 3.15.4 ...

  10. Linux内存技术分析(上)

    Linux内存技术分析(上) 一.Linux存储器 限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型.越往塔顶,存取效率越高.但成本也越高,所以容量也就越小.得益于程序访问的局部性原理 ...