内网穿透之http代理服务器

在公网访问内网http服务可以用内网穿透工具,例如frpnps等优秀工具。但我发现这类工具会在服务器启动不止一个端口,对于有些网络审查来说很容易发现在进行内网穿透。因此我想是否可以只在服务器启动一个http服务来完成内网穿透,公网服务只开放一个http服务端口即可。因此我完成了相关代码:点击跳转查看代码

原理如下图所示:

如上图所示,内网客户端和公网服务器只会创建一个websocket连接,很好的伪装了相关数据。而且websocket收发都是分段的,因此对这些分段数据进行加解密也非常容易(我的代码懒得做)。

方式1的示例:

sh 复制代码
# 公网服务器运行程序
go run main.go -s 192.168.1.88:8080
# 内网客户端运行程序
go run main.go -c ws://192.168.1.88:8080
# 此时会使用公网 ip:port 作为http代理使用内网机器访问 https://www.baidu.com/
curl -v -x 192.168.1.88:8080 https://www.baidu.com/

方式2的示例:

sh 复制代码
# 公网服务器运行程序
go run main.go -s 192.168.1.88:8080
# 内网客户端运行程序
go run main.go -c ws://192.168.1.88:8080 -p 172.17.1.88:1080
# 此时会使用公网 ip:port 作为http代理使用内网机器通过 代理172.17.1.88:1080 访问 https://www.baidu.com/
curl -v -x 192.168.1.88:8080 https://www.baidu.com/

我已经验证过使用 git clone https://xxx.git 方式通过公网代理克隆内网仓库代码,完美运行。

相关推荐
两斤半7 小时前
Linux配置go环境
linux·golang
比特森林探险记10 小时前
GO 入门小项目-博客-结合Gin Gorm
开发语言·golang·gin
比特森林探险记11 小时前
Go 语言 JWT 深度集成指南
golang
hacker_LeeFei11 小时前
linux环境配置Go运行环境
linux·运维·golang
q5673152311 小时前
Go语言高并发爬虫程序源码
开发语言·爬虫·golang
march of Time15 小时前
图数据库介绍及应用,go和Java使用图数据库
java·数据库·golang
西京刀客15 小时前
Go语言json.Marshal多态机制
算法·golang·json
白总Server15 小时前
Golang实现分布式Masscan任务调度系统
java·运维·服务器·开发语言·分布式·后端·golang
lb291715 小时前
关于golang热加载安装,实时响应
开发语言·后端·golang·热加载
ahhhhaaaa-16 小时前
【AI图像生成网站&Golang】部署图像生成服务(阿里云ACK+GPU实例)
开发语言·数据仓库·人工智能·后端·阿里云·golang