首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

有没有什么程序可以把客户端 HTTP 请求“包装”成 HTTPS 请求发给网站的?

  •  
  •   user0506 · 4 天前 · 1989 次点击

    有没有这样的程序(中间程序):

    我的程序 <--(HTTP 协议)--> 中间程序 <--(HTTPS 协议)--> 任意目标网站

    比如自己向 localhost:80 发送 GET / HTTP/1.1\r\nHost: www.baidu.com ,中间程序可以把原先的 HTTP 请求包装成 HTTPS 并且原样发给目标网站,有这样的程序吗?

    部署的程序目前只做了 HTTP 支持,要加 HTTPS 的话又得等好久上线,这样的中间程序平台不限,Windows/Linux/Mac 都可以,任务太重,本来原本不是我负责的,我也一点都不了解这部分,现在头都大了,求指教。

    28 回复  |  直到 2019-07-12 10:10:56 +08:00
        1
    lower   4 天前
    我怎么觉得用反向代理能搞定呀?
        2
    ysc3839   4 天前 via Android
    nginx
        3
    WuwuGin   4 天前
    cd (删除) n 吧,cloudflare 这种就有这个功能,不知道国内谁支持
        4
    chinesestudio   4 天前 via Android
    https 反代 http 这个容易 反过来没有试过
        5
    RickyC   4 天前 via iPhone
    可以看一下阿里云的 CDN,把一个域名指向到源站
    然后可以设置成 https,也可设置 http 自动跳转至 https
    阿里云有免费的 https 证书,有效期 1 年
        6
    xeaglex   4 天前 via Android
    去了解下 CONNET 方法的代理原理吧
        7
    annielong   4 天前
    应该也算中间人攻击吧,等于伪造目标网站的证书,然后和目标网站通讯
        8
    reus   4 天前
    都不知道你想做什么
    是想给只支持 HTTP 的后端加上 HTTPS ?那配置 nginx 提供 https,然后以这个 http 做上游就行了,你想出的那个方案,我不知道用来干嘛的。
    HTTPS 代理只能包装”连接“,用 OPTION 方法,不能代理”请求“,因为 https 本来就是用来防止中间人攻击的,不可能拆分成“请求”
        9
    reus   4 天前
    修正 "OPTION" 方法,CONNECT 方法
        10
    nomaka   4 天前 via iPhone
    stunnel
        11
    ipwx   4 天前
    Squid 大概行,但是我没配置过。
        12
    Destiny97   4 天前 via Android
    阿里云的 cdn 支持,其他 cdn 不清楚
        13
    zado   4 天前
    Nginx 可以,用 Nginx 代理一下就可以了。
        14
    twl007   4 天前 via iPhone
    https 转 http 都可以的好么
        15
    greatghoul   4 天前
    腾讯云云函数配置 api 网关就可以。
        16
    greatghoul   4 天前
        17
    ziseyinzi   4 天前 via Android
    我感觉楼上都理解错了……楼主的意思是他写的客户端只做了 http 没做 https,然后现在想粗暴地加上 https 功能?
        18
    runtu2019   4 天前
    Nginx 可以正向代理的,监听 80 端口,proxy_pass 参数手动改为 https 试试!
    本来是想着叫你用 python flask+requests 自己写个脚本的,反正也不怎么费事
        19
    gamexg   4 天前
    nginx 等都应该能够做到,
    不行的话自己写个程序,如果不考虑 WebSocket 等协议支持的话不算难。
        20
    Tomorr   4 天前
    https://bird.ioliu.cn
    https://proxy.zme.ink
        21
    msg7086   4 天前
    @ziseyinzi 你说得没错啊。楼上哪里理解错了么。
    这明显就是一个 Nginx 解决的事情呀……
        22
    yulon   3 天前
    说 CONNECT 的想什么呢,CONNECT 是 HTTPS 对 HTTPS 的,连接建立之后就是纯到不能再纯的 TCP 流了,又不会把 HTTP 转换成 HTTPS。

    这种直接用中间程序代理 HTTP 请求,然后自己用 HTTPS 请求,再把响应的数据传回去就行了,根本不用管什么 CONNECT,又不会接收到 HTTPS 请求,怎么可能会出现 CONNECT。
        23
    Hackerl   3 天前 via Android
    stunnel
        24
    wnpllrzodiac   3 天前 via Android
    服务端的话,套个反代就好了,你是客户端。nginx https 前向代理?本来想做的,觉得挺麻烦的。我的用户不能访问国外网站,我就让他们机器上的客户端请求发到我的本地机器(支持国外网站)。我的机器再转发到国外。前段时间由于一些原因,只能套 cf https 访问了。我就不好搞了。nginx https 前向不大好搞
        25
    neroxps   3 天前
    楼主的意思是你访问任意 http 网站的时候,发出去的内容其实是 https ???而原来的网站其实还是 http ???能这样玩吗?注意是任意网站,任意网站的意思是他并没有服务器的管理权限喔。意思是对方网站没有提供 https 服务你也可以使用 https 向其访问???没这种东西吧?
        26
    krixaar   3 天前
    @neroxps 那就再加个中间层:客户端<=HTTP=>代理 1<=HTTPS=>代理 2<=ANY=>任意网站 XD
        27
    oukichi   3 天前
    https 端口是 443 ……你再怎么包装发到 80 端口还不是一样……
        28
    neroxps   3 天前
    @krixaar 这样有什么意义,楼主是不是在问某个不可描述的软件啊?哈哈
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1005 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 18ms · UTC 18:25 · PVG 02:25 · LAX 11:25 · JFK 14:25
    ♥ Do have faith in what you're doing.