• 请不要在回答技术问题时复制粘贴 AI 生成的内容
user0506
V2EX  ›  程序员

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

  •  
  •   user0506 · Jul 11, 2019 · 5569 views
    This topic created in 2674 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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