yuzenan888
V2EX  ›  互联网

HTTP(S) 代理为什么还能代理部分 HTTP(S) 之外的协议?具体是什么原理?

  •  
  •   yuzenan888 · Feb 24, 2018 · 3098 views
    This topic created in 3021 days ago, the information mentioned may be changed or developed.

    前段时间搭建了一个 OpenVPN,发现其支持 HTTP 前向代理。

    今天看到了一篇分析 HTTP 代理服务器的文章,发现其报文里面传送的是标准的 HTTP 头。

    既然这样的话,为什么还能代理除了 HTTP(S) 之外的协议?

    然后我又研究了下可否通过 HTTP 代理连接 SSH,也是可行的……

    10 replies    2018-02-25 00:07:18 +08:00
    mind3x
        1
    mind3x  
       Feb 24, 2018 via Android   ❤️ 2
    noe132
        2
    noe132  
       Feb 24, 2018 via Android   ❤️ 1
    因为 http(s)代理在完成 connect 部分后就相当于一条到指定主机端口 tcp 隧道。任何 tcp 流量理论上都可以通过此隧道转发。
    noe132
        3
    noe132  
       Feb 24, 2018 via Android
    http 代理通常是代替你请求资源。https 因为证书通常只能用 connect 做转发。
    所以步骤是客户机发送 connect 请求连接到代理,代理收到请求后简历到指定服务器的端口的连接,并双向转发 tcp 数据包。
    huangunic0rn
        4
    huangunic0rn  
       Feb 24, 2018
    因为软件支持 CONNECT --
    akira
        5
    akira  
       Feb 24, 2018
    只要发起方和代理方都有对应处理,你想代理什么协议都是可以的。协议只是约定了数据的格式,如果对数据做了二次封装,那以另外一种协议格式收发完全没问题啊。

    例如一封普通信件,外面套个信封就是平邮,贴个邮票去邮局就能寄。外面再套个快递箱,发 sf 快递,对方当然也是可以收到的啊。 只是对方收到以后还需要拆一下快递盒子,再拆信封才能看到你的信件。
    WuwuGin
        6
    WuwuGin  
       Feb 24, 2018 via Android
    笼统地说只要对面认识你发送数据的格式,HTTPS 毕竟再怎么说也是应用层的东西,依然是 TCP 协议,所以只是换了个马甲而已。
    yuzenan888
        7
    yuzenan888  
    OP
       Feb 24, 2018
    @mind3x @noe132 @huangunic0rn @akira @WuwuGin
    谢谢各位的解答。那这样说的话,HTTP 代理服务器只要可以支持 CONNECT 命令,那么想代理什么都没问题了?
    还有,这样的话 SOCKS 代理还有什么存在的意义呢?
    wwqgtxx
        8
    wwqgtxx  
       Feb 24, 2018 via iPhone
    @yuzenan888 socks5 还支持 udp
    akira
        9
    akira  
       Feb 24, 2018
    @yuzenan888 协议更简洁
    WuwuGin
        10
    WuwuGin  
       Feb 25, 2018 via Android
    @yuzenan888 每个协议都是发明出来对应某种特定的应用场景的,就像为什么只用 GPU 挖矿一样,无非就是同等成本下效率最高的选择而已。HTTP 代理相当于在普通的传输上再封装一次,普通场景下没人会用的,就像没人会花相同的钱买 CPU 挖比特币一样。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1562 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 16:47 · PVG 00:47 · LAX 09:47 · JFK 12:47
    ♥ Do have faith in what you're doing.