Curl:如何在使用代理时发送自定义标头

Curl:如何在使用代理时发送自定义标头

我想在使用代理时向主机发送自定义标头。请查看以下示例。使用示例解释情况更容易。

正如预期的那样,工作正常:

curl https://www.cloudflare.com/

当我选择通过将主机的 IP 地址提供给 curl 来避免使用 DNS 时:

curl http://198.41.214.163/

网站给我这个错误页面-->

不允许直接 IP 访问。您请求的是属于 CloudFlare 网络的 IP 地址。必须提供有效的主机标头 即可访问所需网站。”


如果我们提供正确的主机头名称,它将再次正常工作,而无需使用 DNS:

curl --header "Host: cloudflare.com" http://198.41.214.163/

但是当我使用代理隧道执行相同操作时,curl 不会将标头发送到主机,因此我得到“不允许直接 IP 访问“来自主机的错误:

curl --proxy "http://PROXY_IP:PORT" --header "Host: cloudflare.com" http://198.41.214.163/

我怎样才能解决这个问题?

答案1

此问题应在 cURL 7.37.0 中得到解决,该--proxy-header版本引入了用于指定代理服务器的标头的参数。现在,使用-H/给出的标头--header将被视为“仅限终端服务器”。

相关内容