webvpn 和反向代理的区别

2022-01-20 15:10:34 +08:00
 nowheretoseek

请问大家,webvpn 是拥有本地 vpn 的很多特征,跟反向代理不同的技术吗,还是只是反向代理的一种通俗称谓?

940 次点击
所在节点    问与答
5 条回复
bugfan
2022-02-19 21:27:56 +08:00
webvpn 是以反向代理为基础来做的,反向代理需要处理很多情况,(请求头,行,体),当然还要借助插入 js 到 web 中来做,,, 主要这两大部分吧!
nowheretoseek
2022-02-20 01:45:57 +08:00
@bugfan 谢谢回复,这么说 webvpn 是深度定制的反向代理了。请求头、请求体我知道,请求行是指映射后的 url 吗?
我在一个开启 webvpn 的站点观察到了“插入 js 到 web 中”的情况,具体就是一个 js 主文件,一些配置变量,然后一些执行 vpn_eval 函数的 script 标签,请问其目的是什么,是授权相关吗,还是别的作用?
bugfan
2022-02-20 22:25:22 +08:00
@nowheretoseek 目的就是把源网站的 js 包起来,你可以理解为一个 jsVM ,比如源网站用到了 location.href=‘/’(意思是把当前页面跳到'https://vpn.xxx.com/'),但是经过 vpn_eval 执行 location.href=‘/’之后,你看到的地址应该是'https://vpn.xxx.com/https/yourdomain.xxx.com/' 类似的一个地址,总之目的就是把你浏览的所有涉及到 url 的东西,都在前面加上了'https://vpn.xxx.com',这样可以先把流量送到‘vpn.xxx.com’,‘vpn.xxx.com’收到所有流量后就可以进行反代处理了。。。这个涉及到很多技术点,一句两句说不清,如果有兴趣,可以加我微信(antian53)细聊!🤝
nowheretoseek
2022-02-21 12:11:47 +08:00
@bugfan 多谢指教!我比对了原生 url 和挂 webvpn 后的页面代码,注意到了 vpn_eval 的特征,就是把原 script 标签进行了一次包裹,但不确定这么做是因为授权、url 格式化还是别的目的。
因为我猜想 webvpn 应该会处理所有原生 url 后再提供 html ,实际观察到也是如此。
如果 js 操作的 url 或由 js 发起请求的 url 不直观,不便直接替换,那么用 vpn_eval 函数包裹后执行,可能是较好的办法吧。

网上能搜到的 webvpn 的技术细节不多,近些年一些机关单位逐渐开始采用 webvpn 提供原先内网才能访问的服务,部分淘汰了客户端 vpn 方案,说明这种技术和一些解决方案是近些年才发展起来的吧,是一个挺大的市场。
bugfan
2022-02-21 18:06:01 +08:00
@nowheretoseek 现在主要是高校用的多,尤其疫情期间,更流行了

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

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

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

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

© 2021 V2EX