Linux / コマンド / curl - URLリクエストとHTTPレスポンスの確認
curlは、URLを指定してデータを取得・送信するツールです。HTTP(ウェブ通信のプロトコル)のヘッダー確認、API(アプリから機能を呼び出すための窓口)へのリクエスト、ファイルのダウンロードなどに使います。既定では取得した本文を標準出力へ表示します。
HTTPエラー状態が返されても、基本的にcurlの終了状態は成功になることがあります。スクリプトで4xx・5xxを失敗として扱うには、--failまたは状況に応じて--fail-with-bodyを使用してください。-Lはリダイレクトに従い、-oは結果を指定したファイルに保存します。
基本的な文法
curl [オプション] URL
インストールされている実装とオプションは、配布版によって異なる場合があります。man curlで現在のシステムの説明を確認してください。
使用例
レスポンスヘッダーの確認
サーバーがHEADリクエストをサポートしていれば、ヘッダーとHTTPステータスを見ることができます。
curl -I https://example.com/
リダイレクト先の本文を取得
-Lでリダイレクト先をたどり、-fでHTTPエラーを失敗として扱います。このコマンドは成功時の本文を出力し、ステータスコードを別に表示する指定ではありません。
curl -fL https://example.com/
ファイルに保存
取得した本文をexample.htmlに保存します。同名ファイルは上書きされるため、保存先を確認するか未使用の名前に変えてください。example.comは説明用ドメインで、実際には取得したいURLを指定します。
curl -fL -o example.html https://example.com/
HTTPステータスだけを確認した結果
curlはURLリクエストを送信し、応答を確認します。次の手法では本文を破棄し、HTTPステータスコードだけを表示するため、200・404・500などの結果を自動化で区別しやすくなります。
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com
HTTP 200を受け取った場合の例示出力:
200
200はHTTPリクエストの成功を示すステータスですが、本文が期待した内容である保証ではありません。HTTP応答を取得できない場合は000と表示されることがあるため、curlの終了コードとエラーも確認します。この例はリダイレクトを追わないので、最終応答を調べる場合は-Lも指定してください。認証情報を扱う際は、履歴や詳細ログに残す内容にも注意します。
curlはHTTP 4xx・5xx応答を受けても、基本的に送信自体が成功していれば終了コードは0となる場合があります。スクリプトでHTTPエラーを失敗と見なすには--failや必要に応じて--fail-with-bodyの使用を検討してください。秘密トークンを含む詳細な出力はログに残す前に隠す必要があります。
主なオプションと形式
| オプション・形式 | 説明 |
|---|---|
-I |
HEADリクエストで応答ヘッダーを確認します。 |
-L |
リダイレクトをたどります。 |
-o ファイル |
応答を指定したファイルに保存します。 |
-O |
URLのパスにあるファイル名で保存します。 |
-f |
HTTP 400 以上をエラーとして扱い、本文の出力は抑制します。 |
-H ヘッダー |
リクエストヘッダーを指定します。 |
使用する際の注意点
サーバーが HEAD を拒否することがあるため、curl -I 失敗だけで URL がないと判断せず、GET で再確認してください。不特定の URL のスクリプトを直接シェルに接続しないでください。認証トークンをコマンドラインに直接入れると、シェル履歴やプロセスリストに残る可能性があり、-k は証明書検証をオフにしてセキュリティを低下させます。
よくある質問
curl が 404 を受け取ったのにコマンドが成功したように見える理由は?
基本的に HTTP ステータスと curl 自体の送信成功の可否を別々に扱うためです。スクリプトでは -f または --fail-with-body を確認してください。
公式ドキュメント
オプションの正確な動作や実装ごとの違いは curl 関連公式ドキュメント で確認できます。




