根据 Wikipedia,CGI Proxy 的定义是“A CGI web proxy accepts target URLs using a Web form in the user's browser window, processes the request, and returns the results to the user's browser.”( CGI 代理使用浏览器中的 Web 表单接受目标 URL,处理请求,并将结果返回给用户浏览器。)
我们学校使用的是深信服的 SSLVPN 产品,对于在校外接入校园网环境的需求,提供了两种方式——
于是突然有一个想法:可不可以通过在本地运行一个程序伪装成 HTTP Proxy,把请求转发给方法 2 的这个 CGI Proxy 呢?
即
浏览器 <--(普通的 HTTP 代理请求)--> 表现为 HTTP Proxy 的转发程序 <--(附带上验证所需的 Cookie 的 Web 请求)--> CGI Proxy <----> 校内网站
具体需求:
目前用 Uvicorn + Requests 已可以实现简单的 HTTP GET/POST 请求转发,但是不支持 HTTPS,因为 HTTPS 需要用到 CONNECT 方法,而我不知道它在我这种情景下该如何实现。
所以来请教大家,我的这种想法有没有现成的工具呢?或者说,应该从哪个抽象的层级入手(单从 Python 来说,查到了 socket, h11, twisted 等库不知如何选择。它们的封装程度各不相同,想要能达到目标却又不想涉及到太繁杂的无关的底层处理)
1
oott123 2020-05-11 00:48:51 +08:00 via Android
这应该不是 CGI Proxy,更像是一种 reverse proxy,即反向代理
现成工具没有听说过 |
2
Latin 2020-05-11 09:52:57 +08:00
先抓包,一般这种 vpn 大多走的都是 pac
|
3
CoolSpring OP 引入 elazarl/goproxy 再拼拼凑凑,基本上针对我的需求是可用了……
供参考: https://github.com/CoolSpring8/rwppa/ |