使用代理时 CURLOPT_CONNECT_TO 改变了什么
不要假定新地址上已实现 HTTP 或 SOCKS,而应把 libcurl 的 connect-to 映射用于备用网络端点。
CURLOPT_CONNECT_TO 会为匹配的目标更改 libcurl 连接的主机和端口。它并不会让备用端点说 HTTP CONNECT 或 SOCKS。
原始主机名仍然提供应用协议和 TLS 的身份。当有意访问同一服务的另一个服务器实例时,这很有用。而任意代理监听器期待的是它自己的代理握手,而不是应用的原始字节。
将映射与 HTTP 代理结合使用
单独配置 HTTP 代理。通往公共服务的无凭据 HTTP 路由,在该中介被允许时可以使用HTTP 代理列表中的端点;不应把已有的代理账户发送给候选端点。libcurl 记录到,不同的 connect-to 映射随后可以把请求切换到隧道模式:由代理打开到映射目标的连接。映射选择的是通过代理到达什么,它并没有取代代理配置。
请区分三个值:目标服务名称、备用连接端点和代理端点。按各自的实际角色选择每个选项,并为该服务保留正常的 TLS 名称验证。
如果代理端口本身拒绝连接,另一个指向同一不存在监听器的选项无法修复第一跳。在更改目标映射之前,先解决该监听器或路径的故障。