質問
curlにプロキシを無視させるにはどうすればよいですか? $ NO_PROXYを設定してもうまくいかないようです。
解決
curlは環境変数 http_proxy
からプロキシアドレスを読み取り、変数はその値を保持する必要があると想定しています。次に、bashのようなシェルで、コマンドの前(またはシェルスクリプト内)で一時的にその値を変更する export http_proxy = '';
。
(参照するすべての変数については、 ENVIRONMENT
見出しの下のcurlのマニュアルを参照してください。)
他のヒント
curl
がバージョン 7.19.4以上の場合
、-noproxy
フラグを使用できます。
curl --noproxy "*" http://www.stackoverflow.com
マニュアルから。
http_proxyおよびhttps_proxy環境変数を設定したため、同じ問題が発生しました。しかし、時々、別のネットワークに接続して、プロキシを一時的にバイパスする必要があります。 (環境変数を変更せずに)これを行う最も簡単な方法は次のとおりです。
curl --noproxy '*' stackoverflow.com
マニュアルから:"唯一のワイルドカードは単一の*文字で、これはすべてのホストに一致し、プロキシを事実上無効にします。"
シェルによって誤って展開されないように、*文字が引用符で囲まれています。
ロングショットですが、プロキシを""に設定してみてください。 (空の文字列)これは、manページに従ってプロキシ設定をオーバーライドする必要があります。
最初に、現在のプロキシ設定をリストしました
env | sort | less
( http_proxy = http://wpad.local.machine.location:port number
のようなものでなければなりません)
次に設定してみました
export http_proxy=";"
このエラーメッセージが表示されました:
curl: (5) Couldn't resolve proxy ';'
試しました
export http_proxy="" && curl http://servername:portnumber/destinationpath/ -d 55
それはうまくいきました!
PS! http-proxyを忘れずに元の設定に戻す
export http_proxy=http://wpad.local.machine.location:port number
http_proxy
と https_proxy
が定義されています。これらの環境の設定を解除して再度設定したくありませんが、 -noproxy '*'
は完全に機能します。
curl --noproxy '*' -XGET 172.17.0.2:9200
{
"status" : 200,
"name" : "Medusa",
"cluster_name" : "elasticsearch",
"version" : {
"number" : "1.5.0",
"build_hash" : "544816042d40151d3ce4ba4f95399d7860dc2e92",
"build_timestamp" : "2015-03-23T14:30:58Z",
"build_snapshot" : false,
"lucene_version" : "4.10.4"
},
"tagline" : "You Know, for Search"
}
これは問題なく機能し、プロキシ文字列を""に設定します
curl -x "" http://www.stackoverflow.com
$ no_proxy
環境変数(小文字)を使用する必要があります。例については、 https://wiki.archlinux.org/index.php/proxy_settings を参照してください。 。
また、ずっと前にcurlにバグがありました http://sourceforge.net/ p / curl / bugs / 185 / 、このバグを含む古いcurlバージョンを使用している可能性があります。
プロキシ設定を.curlrcに追加します
proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1
これにより、すべての開発ドメインとローカルマシンのリクエストでプロキシが無視されます。
正解ではないが、プロキシが〜/ .curlrc
ファイル(...)に設定されていないことを忘れないでください。
私の場合(macos、 curl 7.54.0
)、以下の〜/ .bash_profile
$ env |grep -i proxy |cut -d = -f1|sort
FTP_PROXY
HTTPS_PROXY
HTTP_PROXY
NO_PROXY
PROXY
ftp_proxy
http_proxy
https_proxy
no_proxy
理由は不明ですが、このバージョンの curl
は、環境変数 NO_PRXY
および no_proxy
で正しく動作できません。その後、プロキシ環境を設定解除します HTTPS_PROXY
と https_proxy
の両方まで、変数を1つずつ。
unset HTTPS_PROXY
unset https_proxy
動作を開始し、内部URLに接続できます
したがって、一時的な解決策として環境内にある場合は、すべてのプロキシ変数を設定解除することをお勧めします。
unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY
" no_proxy"を設定するまで、私のカールはUbuntu 12.04のプロキシを無視しませんでした。 (小文字)環境変数。 --noproxyオプションは使用できませんでした。