我想在使用代理时向主机发送自定义标头。请查看以下示例。使用示例解释情况更容易。
正如预期的那样,工作正常:
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
将被视为“仅限终端服务器”。