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


106

curlにプロキシを無視させるにはどうすればよいですか?$ NO_PROXYを設定してもうまくいかないようです。


1
さらに情報を提供していただければ、他のユーザーからの回答に役立ちます。どのプラットフォームにいますか?curlはプロキシ設定をどこから取得していますか?どのプロトコル(HTTP、FTP)?どのようなプロキシ(HTTP、SOCKS)ですか?透過プロキシですか?問題を示す正確な一連のコマンドとその出力を表示できますか?
ブライアンキャンベル

回答:


54

curlは環境変数からプロキシアドレスを読み込んでおりhttp_proxy、変数はその値を保持する必要があると思います。次に、bashなどのシェルでexport http_proxy='';、コマンド(またはシェルスクリプト)が一時的にその値を変更する前に。

ENVIRONMENT見出しの下にあるすべての変数については、curlのマニュアルを参照してください。)


19
または単にunset http_proxy
joelittlejohn

注:のような他の* _proxy env変数がありftp_proxyます。ここにwiki.archlinux.org/index.php/proxy_settingsの完全なリストがあります。
ドミトリウサン2014年

ケースバイケースでhttp_proxyをオーバーライドしたくない場合は、$ no_proxyで無視するようにドメインを構成してから、curlにエイリアスを設定できます。alias curl = 'curl --noproxy $ no_proxy'
Sir4ur0n

1
@jdebonその環境変数にワイルドカードがある場合は、以下で説明する理由により(stackoverflow.com/a/17710829/2189128)、これは機能しません。
Jeff

@ジェフそれは私のケースではありませんが、いい場所です。ありがとう!
Sir4ur0n 2017年

243

あなたcurlが少なくともバージョン7.19.4である場合は、--noproxyフラグを使用することができます。

curl --noproxy "*" http://www.stackoverflow.com

以下からのマニュアル


5
curl:オプション--noproxy:is unknown
Roger Ng

2
@RogerNg、私が質問に回答してからマニュアルまたは使用法が変更された場合は、回答を更新するか、独自に作成してください。それにもかかわらず、執筆時点では、この回答は尋ねられた質問に対して正確でした。インストールが仕様どおりに動作しない場合、それは完全に別の問題です。
Scott Offen 2013

3
curl --noproxy stackoverflow.com stackoverflow.com これは正しい推奨です。
arulraj.net 2014年

2
--noproxy古いcurlバージョン(Centos / RHEL 5.xで使用されているものなど)ではこのオプションを使用できないと思います
Dmitriusan

2
ドキュメントに基づくと、これがこれまで機能した唯一の方法--noproxy 127.0.0.1は、stackoverflow.comがlocalhostで実行されている場合でした。
dannysauer

70

http_proxyおよびhttps_proxy環境変数を設定したため、同じ問題に遭遇しました。しかし、時々、別のネットワークに接続していて、一時的にプロキシをバイパスする必要があります。(環境変数を変更せずに)これを行う最も簡単な方法は次のとおりです。

curl --noproxy '*' stackoverflow.com

マニュアルから:「唯一のワイルドカードは単一の*文字であり、すべてのホストに一致し、プロキシを効果的に無効にします。」

*文字は引用符で囲まれているため、シェルによって誤って展開されることはありません。


12
今後のユーザーへの注意:*を引用しない場合、Bashはローカルファイルを展開しますcurl --noproxy "*" stackoverflow.com
Adam

これは私が.curlrcファイルに設定した(SOCKS)プロキシも無視しているように見えることに注意してください
MatzFan

1
これは、カールバージョン7.22.0を使用して私のために働いた答えです
xpereta


11

プロキシ設定を.curlrcに追加します

proxy = 1.2.3.4
noproxy = .dev,localhost,127.0.0.1

これにより、すべての開発ドメインとローカルマシンのリクエストでプロキシが無視されます。


1
//、これはDNS値がで始まる値の例を示す唯一のものです.
Nathan Basanese

環境

7

ロングショットですが、プロキシを ""(空の文字列)に設定してみてください。これにより、manページに従ってプロキシ設定をオーバーライドする必要があります。


2
これは「ロングショット」ではなく、適切な方法です。curlのマニュアルページ(7.15.5、「-noproxy」オプションが表示されない)によると、-x /-proxy <proxyhost [:port]> ...このオプションは、プロキシを設定する既存の環境変数を上書きします使用する。プロキシを設定する環境変数がある場合は、プロキシを ""に設定してオーバーライドできます。
Rob Cranfill 2013年

5
'09年、すべてがロングショットでした。
Louis

5
+ 1、-x ""がそれを行います。--noproxyでワイルドカードを使用すると、「*」を引用してもbashで機能しません
Eugene

@Eugene:bash 4.3.11で動作しており、引用する必要があります。
空手


6

まず、現在のプロキシ設定を

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

6

私が持っているhttp_proxyhttps_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"
}

1

ラメの答えですが、~/.curlrcファイルにプロキシが設定されていないことを確認してください(...)。


1
ありがとうございました。curlがローカルのenv変数を尊重しない理由を頭にかいてきました。そして、私は.curlrcを調べ、いくつかの追加の構成がありました。そこにno_proxyを追加して、うまくいきました!
n3o

1

私の場合(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_PRXYno_proxy適切には、その後、私は両方になるまで、プロキシ環境変数を一つずつの設定を解除HTTPS_PROXYしてhttps_proxy

unset HTTPS_PROXY
unset https_proxy

動作を開始し、内部URLに接続できます

したがって、一時的な解決策として環境内にある場合は、すべてのプロキシ変数を設定解除することをお勧めします。

unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY

-1

"no_proxy"(小文字)環境変数を設定するまで、私のカールはUbuntu 12.04のプロキシを無視していませんでした。--noproxyオプションは使用できませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.