curlでプロキシを無視するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/800805

  •  03-07-2019
  •  | 
  •  

質問

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オプションは使用できませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top