![Curl:如何在使用代理程式時發送自訂標頭](https://rvso.com/image/1457457/Curl%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86%E7%A8%8B%E5%BC%8F%E6%99%82%E7%99%BC%E9%80%81%E8%87%AA%E8%A8%82%E6%A8%99%E9%A0%AD.png)
我想在使用代理時將自訂標頭髮送到主機。看看下面的例子。用例子解釋情況比較容易。
這按預期工作正常:
curl https://www.cloudflare.com/
當我選擇透過向curl提供主機的IP位址來避免使用DNS:
curl http://198.41.214.163/
網站給我這個錯誤頁面 -->
」不允許直接 IP 存取。您要求的 IP 位址是 CloudFlare 網路的一部分。必須提供有效的主機標頭 到達所需的網站。
如果我們提供正確的主機頭名稱,它將在不使用 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
現在將被視為“僅限終端伺服器”。