请问大家,webvpn 是拥有本地 vpn 的很多特征,跟反向代理不同的技术吗,还是只是反向代理的一种通俗称谓?
1
bugfan 2022-02-19 21:27:56 +08:00
webvpn 是以反向代理为基础来做的,反向代理需要处理很多情况,(请求头,行,体),当然还要借助插入 js 到 web 中来做,,, 主要这两大部分吧!
|
2
nowheretoseek OP @bugfan 谢谢回复,这么说 webvpn 是深度定制的反向代理了。请求头、请求体我知道,请求行是指映射后的 url 吗?
我在一个开启 webvpn 的站点观察到了“插入 js 到 web 中”的情况,具体就是一个 js 主文件,一些配置变量,然后一些执行 vpn_eval 函数的 script 标签,请问其目的是什么,是授权相关吗,还是别的作用? |
3
bugfan 2022-02-20 22:25:22 +08:00 1
@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)细聊!🤝
|
4
nowheretoseek OP @bugfan 多谢指教!我比对了原生 url 和挂 webvpn 后的页面代码,注意到了 vpn_eval 的特征,就是把原 script 标签进行了一次包裹,但不确定这么做是因为授权、url 格式化还是别的目的。
因为我猜想 webvpn 应该会处理所有原生 url 后再提供 html ,实际观察到也是如此。 如果 js 操作的 url 或由 js 发起请求的 url 不直观,不便直接替换,那么用 vpn_eval 函数包裹后执行,可能是较好的办法吧。 网上能搜到的 webvpn 的技术细节不多,近些年一些机关单位逐渐开始采用 webvpn 提供原先内网才能访问的服务,部分淘汰了客户端 vpn 方案,说明这种技术和一些解决方案是近些年才发展起来的吧,是一个挺大的市场。 |
5
bugfan 2022-02-21 18:06:01 +08:00
@nowheretoseek 现在主要是高校用的多,尤其疫情期间,更流行了
|