Proxy

捲曲 7.27:一個_是一種ñ是ANY_PROXY 集;curl 不通過代理解析主機名

  • May 9, 2019

我正在使用帶有 Socks 代理的 curl。代理通過配置ANY_PROXY="socks5://NNN.NNN.NNN.NNN.PPPP"

我觀察到 curl 在本地解析主機名,而不是通過代理。當請求帶有 IP 的 URL 時,請求工作正常,主機名無法在本地解析,curl 失敗。

在手冊頁中,我發現了這個明確的 CLI 選項:

   --socks5-hostname <host[:port]>
          Use the specified SOCKS5 proxy (and let the proxy resolve the host name).

有趣的是,括號中的文本強調,此選項還將通過代理解析主機名。但這都是關於主機名解析的,在手冊頁的其餘部分中,沒有提到名稱解析如何與代理一起工作。

版本:curl 7.27.0 (x86_64-redhat-linux-gnu) libcurl/7.27.0 NSS/3.15.1 zlib/1.2.7 libidn/1.26 libssh2/1.4.3

是否有選項或替代環境變數可以使 curl 通過代理解析主機名而無需指定--socks5-hostname <host:port>

對於像我這樣的白痴來說,這是微妙的部分:

-x從 7.21.7 開始,此選項是多餘的,因為您可以--proxy使用socks5h://協議前綴指定 socks5 主機名代理。

h後面的小東西socks5告訴 curl 也可以通過代理查找主機名。

要讓 curl**通過代理查找主機名,**必須導出:

ALL_PROXY="socks5h://NNN.NNN.NNN.NNN.PPPP"

與將在本地查找的代理相比:

ALL_PROXY="socks5://NNN.NNN.NNN.NNN.PPPP"

引用自:https://unix.stackexchange.com/questions/175888