这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
CoolSpring

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

  •  
  •   CoolSpring · May 10, 2020 · 3396 views
    This topic created in 2193 days ago, the information mentioned may be changed or developed.

    根据 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 等库不知如何选择。它们的封装程度各不相同,想要能达到目标却又不想涉及到太繁杂的无关的底层处理)

    3 replies    2020-06-23 22:23:32 +08:00
    oott123
        1
    oott123  
       May 11, 2020 via Android
    这应该不是 CGI Proxy,更像是一种 reverse proxy,即反向代理

    现成工具没有听说过
    Latin
        2
    Latin  
       May 11, 2020
    先抓包,一般这种 vpn 大多走的都是 pac
    CoolSpring
        3
    CoolSpring  
    OP
       Jun 23, 2020
    引入 elazarl/goproxy 再拼拼凑凑,基本上针对我的需求是可用了……
    供参考: https://github.com/CoolSpring8/rwppa/
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5899 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 02:34 · PVG 10:34 · LAX 19:34 · JFK 22:34
    ♥ Do have faith in what you're doing.