web-dev-qa-db-ja.com

cURL抑制応答本文

応答本文の出力を抑制するようにcURLに指示することはできますか?

私の場合、応答の本文はHTMLページであり、CLIバッファーをオーバーフローさせるため、関連情報を見つけるのが難しくなります。 HTTP応答コード、ヘッダー、e.t.cなど、出力の他の部分を調べたいです。 -すべて除く実際のHTML。

75
BaltoStar

-oスイッチとnull疑似ファイルを使用できます。

Unix

curl -s -o /dev/null -v http://google.com

curl -s -o nul -v http://google.com
89
Gilles Quenot

すべてのcurl出力とヘッダーを抑制する方法を次に示します。エラーが発生した場合でもエラーを表示するオプションがあります。 cronジョブまたは自動テストに役立ちます。

Unix

すべての出力を抑制するには:

curl --silent --output /dev/null http://example.com

出力を抑制しながらエラーが発生した場合でもエラーを表示するには:

curl --silent --output /dev/null --show-error --fail http://example.com

すべての出力を抑制するには:

curl --silent --output nul http://example.com

出力を抑制しながらエラーが発生した場合でもエラーを表示するには:

curl --silent --output nul --show-error --fail http://example.com

パラメーターの説明

--silentはダウンロード中の統計を抑制します(ただし、HTML出力は表示されます)
--output /dev/nullは成功した出力を非表示にします
--show-errorは、silentモードが有効な場合でもエラーを表示します
--failは、HTTP応答が単なるDNS/TCPエラーではなくエラーコード(404、500など)の場合にエラーを発生させます。


UPDATE:元の作者は、すべてを消音するのではなく、リクエストのヘッダーと応答コードを検査したかったことを理解していますすべて。その方法の詳細については、 samael's answer をご覧ください。

21
Simon East

ヘッダーを表示するが、応答本文を非表示にする場合は、次を使用します。

curl -sIXGET http://somedomain.com/your/url

応答ヘッダーを表示するためだけにcurl -I http://somedomain.com/your/urlを使用していました。ただし、問題は HEADメソッド を使用してリクエストを行うことです。これは、GETリクエストにのみ応答するAPI呼び出しをテストする場合は役に立ちません。これが-X GETの目的です。リクエストをGETに変更します。

したがって、要約すると:

-sは出力からプログレスバーを非表示にします(特に別のプログラムにパイプするときに便利です)
-Iはヘッダーを表示します(ただし、HEADリクエストを作成します)
-XGETリクエストをGETリクエストに変換します

参照: http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/

12
samael