Java 编写一个简单的代理?

2019-05-10 20:37:01 +08:00
 tail2

做毕设, 防篡改 我想用 java 编写一个简单的代理, 拦截对运行在虚拟机上的 javaweb 服务器的请求, 然后验证请求的网页的完整性, 如果验证通过, 直接把请求转发给虚拟机, 然后把虚拟机的响应返回。 如果验证失败, 直接返回本地的缓存作为响应。

大概要用到什么技术, 如何实现呢, 求大佬指点。

2156 次点击
所在节点    程序员
7 条回复
xgfan
2019-05-10 20:44:45 +08:00
Spring gateway 比较简单
mawerss1
2019-05-10 22:34:44 +08:00
netty ?
lhx2008
2019-05-10 22:38:13 +08:00
直接用 Spring MVC 屠龙刀,半天就写好了,不过难的是校验规则。当然要性能好的话,可以用 Spring WebFlux + WebClient,基于 Netty 的,不难,不过学习曲线有点陡峭。如果要极致性能,直接写 Netty。
wdlth
2019-05-10 22:48:56 +08:00
就是 API 网关吧,参考 Spring Cloud Gateway
Navee
2019-05-10 22:52:31 +08:00
可以参照 https://github.com/adamfisk/LittleProxy
即使是使用了 netty,性能也是惨不忍睹
tail2
2019-05-11 11:07:21 +08:00
@Navee 非常感谢, 感觉这个 git 项目好像可行, 性能问题不大, 本科毕设要求应该不会很高。
Chinsung
2019-05-23 16:56:24 +08:00
你的问题描述就有点问题,拦截到虚拟机的请求,我的理解是要拦截发到 javaweb 监听的端口的请求吧?
你应该是想要在 javaweb 返回页面前通过代理来判断一下返回的页面是否被篡改,如果被篡改了的话就返回代理缓存的页面?
如果是的话,省事可以 spring cloud gateway 写个简单的拦截。
或者 netty 写个反向代理,netty 源码的 example 里就有例子,稍微改下就行
但是我感觉如果只是这个需求的话,拦截器和过滤器理论上都可以做,不需要代理。

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

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

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

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

© 2021 V2EX