HTTPS 连接需要 HTTPS 代理吗?我可以使用 HTTP 代理吗?

问题描述 投票:0回答:4

问题是关于 HTTP 与 HTTPS 的。

如果我想匿名加载强制使用 HTTPS 的网站(例如 Google.com),我是否需要 HTTPS 代理,或者我可以使用 HTTP 代理吗?

http https proxy http-proxy
4个回答
5
投票

如果您的代理是

SOCKS
,它不会关心通过它连接的套接字类型。 它有自己的握手,并且不关心握手后发生的事情。
SOCKS
握手后是否启动SSL握手(HTTPS),这不是
SOCKS
代理问题,它只会通过。

另一方面,一些 HTTP 代理希望 HTTP 标头来引导它们,这样的 HTTP 代理将不允许 HTTPS,因为它需要读取标头。

第三只手(ekhm...好吧,脚?),支持

HTTP CONNECT
的 HTTP 代理也可以设置任意数据的传输。 因此,这样的代理可以设置任何类型的套接字,该套接字可以进行 SSL 握手,然后可以用于 HTTPS 传输。


2
投票

HTTP 代理服务器支持 CONNECT 动词,它支持 HTTP 代理内的 HTTPS 连接。您不需要特殊的 HTTPS 代理服务器或任何其他设置。

CONNECT
动词允许您创建到任何给定
IP:Port
地址的二进制套接字隧道。因此,任何 HTTP 客户端(所有浏览器)都将打开安全隧道并通过代理服务器安全地进行通信。然而,没有人能够控制或看到任何通过隧道的东西,除非他们通过向您发送自签名证书来实施中间人攻击。

当今大多数防火墙都会自动实现部署在工作网络中的中间人自签名证书,因此您可能必须挖掘更多信息来确定它是否真的安全。所以它可能不是那么匿名。


1
投票

如果您尝试匿名访问服务,则无法通过运行自己的代理来获得此服务。 从最初的问题中不清楚“代理”的含义,例如本地服务,或远程服务。 您不会通过网络上的代理进行冲浪而获得匿名,除非它是类似通过 TOR 网络中继的 TOR 代理。

至于代理是否支持HTTPS,这里已经介绍过了,找到不支持CONNECT的代理是不寻常的。 但是,如果您使用的是远程匿名服务,我怀疑他们会执行 MitM,因为您需要将签名证书安装到受信任的根存储中,所以他们无法偷偷地这样做。


0
投票

不存在 HTTPS 代理之类的东西。 Firefox 的菜单中有这样的命名,这是相当具有误导性的。如果我们说 SOCKS 代理或 HTTP 代理,则表示代理协议的名称。这意味着代理客户端和代理服务器的语言相互通信。代理客户端通过代理协议与代理服务器进行会话。通过代理协议代理客户端向代理服务器解释代理服务器应该连接哪些远程服务器以及它应该执行什么请求并将答案转发给客户端。

通常代理客户端内置于网络浏览器中。有SOCKS代理协议。 HTTP 协议并非仅为代理目的而构建,但它具有代理协议功能。所以HTTP协议(它的一部分)可以用作代理协议。

没有 HTTPS 代理协议,因此没有 HTTPS 代理服务器。
当您在网络浏览器的菜单中看到这样的术语时,它非常具有误导性。

实际上这是一个故事 - HTTP 协议可以通过两种方法来做代理。

第一种方法代理客户端向代理服务器发送通常的 HTTP 请求,但带有修改后的请求 URI。这就是网络浏览器与“HTTP 代理”服务器配合使用的方式。

代理的第二种方法是代理客户端向代理服务器发送 HTTP CONNECT 方法。

这两种情况都使用HTTP协议作为代理协议。

第一种方法在浏览器中被称为“HTTP代理”。第二种方法在浏览器中的命名类似于“HTTPS 代理”。

那么有什么区别呢?我们使用代理协议来要求代理服务器向远程服务器发出其他协议的请求。第一种方法只能将 HTTP 请求转发到远程服务器。第二种方法可用于转发基于 TCP 的任何协议 - 即 SMTP、DNS、FTP、HTTPS(主要是 HTTP over TLS over TCP)等。

那么为什么要使用第一种方法呢?当我们使用第一种方法时,代理服务器会看到并了解我们真正想要对远程服务器做什么。所以代理服务器可以缓存请求和答案。当我们使用第二种方法时,代理服务器不明白我们想要对远程服务器做什么。它只是通过 tcp 连接从客户端获取一些字节并将它们转发到远程服务器。

© www.soinside.com 2019 - 2024. All rights reserved.