跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 有没有将 CGI Proxy 转化为普通 HTTP Proxy 的工具呢?
未分類
13 5 月 2020

有没有将 CGI Proxy 转化为普通 HTTP Proxy 的工具呢?

有没有将 CGI Proxy 转化为普通 HTTP Proxy 的工具呢?

資深大佬 : CoolSpring 5

根据 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 产品,对于在校外接入校园网环境的需求,提供了两种方式——

  1. 使用 EasyConnect 客户端,然而这个客户端的风评不怎么好;
  2. 手机版访问 https://rvpn.zju.edu.cn ,登录后可以得到这样一个界面: https://i.loli.net/2020/05/10/x6LkImzYV1QD2Pq.png 。再输入网址例如 cnki.net ,点击“访问”会跳转到这样的 URL 格式 https://rvpn.zju.edu.cn/web/1/https/0/cnki.net/ 。所以这大概是可以归为上面所述的 CGI Proxy 一类。

于是突然有一个想法:可不可以通过在本地运行一个程序伪装成 HTTP Proxy,把请求转发给方法 2 的这个 CGI Proxy 呢?

即

浏览器 <--(普通的 HTTP 代理请求)--> 表现为 HTTP Proxy 的转发程序 <--(附带上验证所需的 Cookie 的 Web 请求)--> CGI Proxy <----> 校内网站

具体需求:

  1. 读浏览器发送的请求 1,从中抽取 Method, URL, Headers, Cookies
  2. 向原请求 1 的 Cookies 加入一个形如 “TWFID=xxxxxxxxx” 的通过验证用的 Cookie 之后,将这个请求 2 转发到 https://{Web_Portal_Endpoint}/web/1/http(s)/0/{URL} (或者说是新生成一个请求 2,总之达到目的即可)
  3. 读请求 2 返回的内容,进行一定的过滤处理(这个网页版 SSLVPN 会插入一些 JS 文件和 HTML Tag,原本是为了 URL Rewrite,但有时这些脚本会影响网页的正常功能,因此需要去除,也可以去除)之后将改动后的 Response 发回给浏览器。

目前用 Uvicorn + Requests 已可以实现简单的 HTTP GET/POST 请求转发,但是不支持 HTTPS,因为 HTTPS 需要用到 CONNECT 方法,而我不知道它在我这种情景下该如何实现。

所以来请教大家,我的这种想法有没有现成的工具呢?或者说,应该从哪个抽象的层级入手(单从 Python 来说,查到了 socket, h11, twisted 等库不知如何选择。它们的封装程度各不相同,想要能达到目标却又不想涉及到太繁杂的无关的底层处理)

大佬有話說 (2)

  • 資深大佬 : oott123

    这应该不是 CGI Proxy,更像是一种 reverse proxy,即反向代理

    现成工具没有听说过

  • 資深大佬 : Latin

    先抓包,一般这种 vpn 大多走的都是 pac

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具