Curl CURLOPT_代理功能
我想知道curl的Curl CURLOPT_代理功能,curl,proxy,libcurl,Curl,Proxy,Libcurl,我想知道curl的CURLOPT_PROXY选项(详细说明)是如何实现的,特别是关于http的 这适用于将要发送的http消息的标题是什么?它是否也执行其他请求,例如握手或任何类似的请求 谢谢 HTTP 当curl使用HTTP代理执行HTTP传输时,它连接到代理而不是远程服务器,并将其请求发送到代理,就像它是服务器一样(只有很小的区别): 当对代理执行操作时,请求URI始终是绝对的。Ie URI将包含远程服务器的主机名 代理的身份验证头与服务器的身份验证头不同 curl明确要求keep-aliv
CURLOPT_PROXY
选项(详细说明)是如何实现的,特别是关于http的
这适用于将要发送的http消息的标题是什么?它是否也执行其他请求,例如握手或任何类似的请求
谢谢 HTTP
当curl使用HTTP代理执行HTTP传输时,它连接到代理而不是远程服务器,并将其请求发送到代理,就像它是服务器一样(只有很小的区别):
curl -x localhost:80 http://example.com
curl连接到TCP端口80上的本地主机,并发送以下请求:
GET http://example.com/ HTTP/1.1
Host: example.com
User-Agent: curl/7.54.1
Accept: */*
Proxy-Connection: Keep-Alive
然后,代理将向目标服务器(example.com)发送一个HTTP请求,如下所示:
GET / HTTP/1.1
Host: example.com
User-Agent: curl/7.54.1
Accept: */*
(在我使用Apache作为代理服务器的测试中,代理还将包括一个到远程服务器的连接:close
头,但这不一定是您的代理将发送的。)
curl的现代版本允许用户单独设置自定义头,如果它们应该转到代理、服务器或两者
HTTPS
如果您改为通过HTTP代理请求HTTPS传输,curl将改为使用CONNECT方法请求通过代理的隧道,一旦建立到远程服务器的隧道,curl将与服务器握手TLS,然后通过TLS连接发出HTTP请求,与在没有涉及代理的情况下发出HTTP请求的方式完全相同。如何告知代理将请求转发到哪里?在请求(GET)行中。我扩展了我的答案,加入了一个更好的例子。我已经给出了答案,因为这正是我想要的信息!但是出于好奇,您是否认为可以添加一些信息来显示发送到代理的http头与发送到最终地址的http头有何不同?例如,您能否演示如何将
User-Agent:curl/7.54.1
发送到代理,而将User-Agent:Something
发送到服务器?