V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tail2
V2EX  ›  程序员

Java 编写一个简单的代理?

  •  
  •   tail2 · 2019-05-10 20:37:01 +08:00 · 2304 次点击
    这是一个创建于 2029 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    7 条回复    2019-05-23 16:56:24 +08:00
    6IbA2bj5ip3tK49j
        1
    6IbA2bj5ip3tK49j  
       2019-05-10 20:44:45 +08:00 via iPhone   ❤️ 1
    Spring gateway 比较简单
    mawerss1
        2
    mawerss1  
       2019-05-10 22:34:44 +08:00
    netty ?
    lhx2008
        3
    lhx2008  
       2019-05-10 22:38:13 +08:00   ❤️ 1
    直接用 Spring MVC 屠龙刀,半天就写好了,不过难的是校验规则。当然要性能好的话,可以用 Spring WebFlux + WebClient,基于 Netty 的,不难,不过学习曲线有点陡峭。如果要极致性能,直接写 Netty。
    wdlth
        4
    wdlth  
       2019-05-10 22:48:56 +08:00   ❤️ 1
    就是 API 网关吧,参考 Spring Cloud Gateway
    Navee
        5
    Navee  
       2019-05-10 22:52:31 +08:00   ❤️ 1
    可以参照 https://github.com/adamfisk/LittleProxy
    即使是使用了 netty,性能也是惨不忍睹
    tail2
        6
    tail2  
    OP
       2019-05-11 11:07:21 +08:00
    @Navee 非常感谢, 感觉这个 git 项目好像可行, 性能问题不大, 本科毕设要求应该不会很高。
    Chinsung
        7
    Chinsung  
       2019-05-23 16:56:24 +08:00
    你的问题描述就有点问题,拦截到虚拟机的请求,我的理解是要拦截发到 javaweb 监听的端口的请求吧?
    你应该是想要在 javaweb 返回页面前通过代理来判断一下返回的页面是否被篡改,如果被篡改了的话就返回代理缓存的页面?
    如果是的话,省事可以 spring cloud gateway 写个简单的拦截。
    或者 netty 写个反向代理,netty 源码的 example 里就有例子,稍微改下就行
    但是我感觉如果只是这个需求的话,拦截器和过滤器理论上都可以做,不需要代理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1735 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:42 · PVG 00:42 · LAX 08:42 · JFK 11:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.