今天整了个活,用纯 http post 做了一个反向代理/内网穿透的工具

2023-12-22 23:25:53 +08:00
 codingmiao

事情是这样子的,我在 A 市工作,我们的 web 应用部署在 B 市,由于用户那边不允许远程访问服务器运维,所以有点事就要飞过去现场处理,超级烦。好在 web 应用只要有网就能访问。

反正不管 ssh 还是访问 web ,都是把字节传发送到服务器嘛,于是我整了个活,本机用 netty 写个客户端把 ssh 请求发出的字节接住,转成 http post 发到 web 应用的 nginx ,再转发给服务器上的 netty 服务端还原出字节,转到 ssh 端口,大致就是这么个架构:

然后,我就不用飞来飞去了,坐办公室里用 http 端口连服务器了 O(∩_∩)O 。。

你问为什么不用 websocket ,因为用户不给在 nginx 上加相关配置。。

忍不住要分享下,项目地址是 https://github.com/codingmiao/hppt

9925 次点击
所在节点    Java
41 条回复
codingmiao
2023-12-23 12:08:26 +08:00
@yazinnnn0 发送方和接收方产生的字节都丢进缓冲池里,定期发起一个 post 请求,post body 把发送方缓冲池里的字节带走,response body 把接收方池子里的字节带回来
Hopetree
2023-12-23 12:54:37 +08:00
技术是牛的,但是这个技术感觉不实用
proxytoworld
2023-12-23 14:36:00 +08:00
如果能做成 native binary 就更好了,jar 包还是太大了,得有 jre
zkwang
2023-12-23 14:37:43 +08:00
按 github 教程搭了一遍,运行正常。纯 http post 实现还是有特色的。很多年前有个叫自助冲浪的工具软件,是用 CGI 表单实现了 http 代理。
lemonrfx
2023-12-23 16:39:20 +08:00
不提合规性的话,看起来不错,10 毫秒一次重试的流畅性不成问题。个人觉得还可以考虑一下断线自动重连,毕竟几个请求没发过去也是常事。
devliu1
2023-12-23 20:11:14 +08:00
tcp over http?
itning
2023-12-23 20:28:22 +08:00
frp 不是现成的吗
roundgis
2023-12-23 20:48:31 +08:00
pagekite
likooo125802023
2023-12-23 21:32:04 +08:00
能飞积累飞行积分不香么?
vincent7245
2023-12-23 22:47:46 +08:00
“由于用户那边不允许远程访问服务器运维“ 你已经违反公司规定了,我觉得你应该看看你的劳动合同,或者你们公司的规章制度,这种设计信息安全的违规应该都是 T0 级别的,开春都不用付违约金
yinmin
2023-12-24 00:48:43 +08:00
@codingmiao 这题“甲方不给远程,跑现场又太麻烦”,去现场成本太高,找个甲方同事装一个向日葵或类似软件,需要远程的时候让对方开一下向日葵,你连上去维护一下。

疫情 3 年期间,甲方基本都能接受上面的方案。
arloor
2023-12-24 01:22:01 +08:00
@devliu1 http connect tunnel 就是这个东西,没毛病的
devliu1
2023-12-24 07:53:16 +08:00
@arloor 是啊 直接实现 http proxy 就够了😂
anjingdexiaocai
2023-12-24 09:09:48 +08:00
个人觉得这个方案不够通用
snoopygao
2023-12-24 15:55:00 +08:00
让对方提供 vp@啊,费这个劲,还不安全
aqua02
2023-12-24 16:08:47 +08:00
咋回事啊 ,工作不饱和 ,扣工资,扣绩效
Ironpan
2023-12-24 20:06:39 +08:00
为啥要区分 ss 和 cs, 不合并成一个吗
codingmiao
2023-12-25 18:38:51 +08:00
@Ironpan 两个包依赖的第三方库不一样,比如 ss 里有 servlet 相关包,所以分开尽量精简一点,frp 之类的工具都是这么玩的。
fengpan567
2023-12-26 18:06:26 +08:00
服务器:坏了,我成肉鸡了
stevenkinwjg
2024-02-13 18:37:57 +08:00
@laminux29 可以直接远程注入了,黑客给你点了个赞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1002777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX