【发布时间】:2012-08-30 14:48:03
【问题描述】:
在 cURL 文档中,有一个名为 CURLOPT_HTTPPROXYTUNNEL 的选项被定义为在启用时通过代理创建隧道。
但是,我不知道隧道是什么以及它的作用。如果我不使用这样的隧道会有什么不同?
curl_setopt($session, CURLOPT_HTTPPROXYTUNNEL, 1)
更新:
我得到的是隧道指的是HTTP CONNECT METHOD,这是我理解的:
基于 HTTP 的隧道方法使用 HTTP CONNECT 方法/命令。客户端向 HTTP 代理发出 HTTP CONNECT 命令。然后代理与特定的服务器:端口建立 TCP 连接,并在该服务器:端口和客户端连接之间中继数据。因为这会造成安全漏洞,支持 CONNECT 的 HTTP 代理通常会限制对 CONNECT 方法的访问。代理只允许访问特定授权服务器的白名单。
那么,问题是,使用和不使用 CONNECT 方法连接到代理有什么区别?
【问题讨论】:
-
好吧,我现在得到的是它调用 HTTP CONNECT METHOD,而这里 HTTP CONNECT 做了什么:另一种基于 HTTP 的隧道方法使用 HTTP CONNECT 方法/命令。客户端向 HTTP 代理发出 HTTP CONNECT 命令。然后代理与特定的服务器:端口建立 TCP 连接,并在该服务器:端口和客户端连接之间中继数据。因为这会造成安全漏洞,支持 CONNECT 的 HTTP 代理通常会限制对 CONNECT 方法的访问。代理只允许访问特定授权服务器的白名单。所以问题是没有它有什么区别
-
我应该提一下,当使用代理服务器如 Squid3 时,您可以在配置文件中将连接方法限制为 SSL(加密)端口。这是许多服务器使用的默认开箱即用配置。但是,如果将 Squid 配置修改为 allow
CONNECT在未加密端口(例如 80)上,您也可以将CONNECT用于http://url 就好了。
标签: curl http-proxy