1. はじめに
本記事では、Linuxの標準コマンドでもある『curl』コマンドのチートシート(と言う名の個人的備忘録)を記載します。
2. curlコマンドとは
2.1 curlコマンドの概要
curl は URL 指定でデータを受信(もしくは送信)するためのコマンドラインツールです。
Linuxでよく使用されるコマンドで、組み込みコマンドでもあります。
また、最近になって Windows 10 でも標準で組み込まれるようになりました。
最新版のWindows10であればコマンドプロンプトに「curl」と打ち込むことで利用できます。
2.2 基本書式
curlコマンドの基本書式は以下の通りとなります。
curl [オプション] [URL]
2.3 オプション一覧
curlコマンドで良く使用されるオプションを以下に記載します。
オプション | 説明 |
---|---|
-d, –data PARAM | POSTリクエストとしてフォームを送信する |
-i, –include | 出力結果にHTTPヘッダーを含める |
-s, –silent | 進捗情報やエラーを出力しない |
-u USER[:PASS] | プロキシ認証等に用いるユーザー名USER, パスワードPASSを指定する |
-x HOST[:PORT] | プロキシサーバでのホストHOSTおよびポートPORTを指定 |
-I, –head | ヘッダーを取得する |
-v, –verbose | 処理の細かい情報(進捗情報等..)を出力する |
-L, –location | リクエスト先にリダイレクト設定がある場合に追従する |
3. 利用ケース
実務でよく使われるcurlコマンドの利用パターンを下記に記載します。
3.1 基本パターン
# オプション無し
$ curl https://<URL>
# URLをファイル名としてダウンロード
$ curl -O https://<URL>
# 実行結果をファイルへ出力
$ curl https://<URL> > <出力先ファイル>
$ curl -o <出力先ファイル> https://<URL>
# ファイル出力時の進捗状況を非表示にする(エラーも非表示)
$ curl -s -o 出力先PATH http://対象のURL
3.2 出力を指定する
# HTTPメソッドを指定
# HTTPメソッドについて → https://masa-enjoy.com/http-method-postput#toc6
$ curl -X PUT https://<URL>
# HTTPレスポンスヘッダーを取得
$ curl -I https://<URL>
# リクエストヘッダやレスポンスヘッダを表示する
# 「>」= リクエストヘッダ, 「<」= レスポンスヘッダ
$ curl -v https://<URL>
> GET /foo/ HTTP/1.1
~~略~~
< HTTP/1.1 302 Found
3.3 経路操作
# プロキシを経由する
$ curl -x <プロキシサーバ>:<ポート番号> --proxy-user <ユーザ名>:<パスワード> https://<URL>
# リダイレクトを有効にする
$ curl -L https://<URL>
# SSLのエラーを無視して処理を実行する
$ curl -k https://<URL>
3.4 認証操作
# basic認証
$ curl -user <USERID>:<PASSWORD> https://<URL>
# NTLM認証またはDigest認証
$ curl --anyauth --user <USERID>:<PASSWORD> https://<URL>
3.5 小技
# F5アタック
$ while :; do curl -s 'http://<URL>' >/dev/null; done
# 404や200などHTTPステータスコードだけを取得する
$ curl -Ss -w '%{http_code}\n' 'https://<URL>' -o /dev/null
# REST API を叩いて結果だけを確認する
$ curl -fsL https://<URL>