【入門】curl コマンドとは?よく使うオプション一覧と使い方

curlcurl とは、サーバーとデータをやりとりするコマンドです。
例えば、Web サーバーから Web サイトの内容を取得できます。
HTTP プロトコル以外でリクエストも可能
curl https://www.google.com

本記事では、curl コマンドの結果の見方やオプションの使い方を解説していきます。

ネットワークのコマンド
スポンサーリンク

GET メソッド

GET メソッドGET メソッドとは、指定した URL からデータを取得するリクエストです。
curl -XGET www.google.com
<!doctype html>!<!html itemscope.......(中略)

ごちゃごちゃと英文が表示されますが、これが google ページのソースです。

ブラウザ (Chrome など) は、このページのソースを、人間の見やすい形で表示してくれてます。

なお、curl のデフォルトのメソッドは GET です。
(つまり、curl www.google.com と curl -XGET www.google.com は同じです。)

-I ステータス行/ヘッダーを表示

オプション -I は HTTP レスポンスのステータス行・ヘッダーを取得します。

curl google.com -I
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Mon, 18 Jul 2022 08:39:03 GMT
(省略)

-L リダイレクト

リダイレクトを自動で実行します。

curl google.com -L
(中略);</script>        </body></html>
curl google.com -IL
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
(中略)

HTTP/1.1 200 OK

-v 詳細を表示

詳細 (リクエスト、レスポンスの全てを含む) を標準エラー出力に出力します。

主にリクエストの内容を確認したり、デバッグする場合に利用します。

curl google.com -v
*   Trying 172.217.161.78:80...
* Connected to google.com (172.217.161.78) port 80 (#0)
> GET / HTTP/1.1
> Host: google.com
(省略)
> 
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.com/

HTTP リクエストの開始行/ヘッダーだけ見たい場合は、以下のように標準出力を捨てます。

curl google.com -v > /dev/null

-O ファイルに保存

HTTP レスポンスの本文をファイルに保存します。

curl -O google.com/index.html
cat index.html
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

-s サイレントモード

エラーメッセージを表示しません。

curl googl -s
curl googl
curl: (6) Could not resolve host: googl

-u BASIC 認証

オプション -u は Basic 認証 (ユーザー名とパスワードで認証) をします。

curl example.com -u $username:$password

動作の詳細

Basic 認証では、「ユーザー名:パスワード」を Base64 でエンコードした値を、Authorization リクエストヘッダに追加します。

echo -n "username:password" |base64
dXNlcm5hbWU6cGFzc3dvcmQ=
curl example.com -u username:password -v >/dev/null
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=

-b cookie を送信

curl -b "key=value" example.com

リクエストヘッダを確認し、cookie が送信できているか見てみます。

curl -b "key=value" example.com -v >/dev/null
> GET / HTTP/1.1
> Host: example.com
> User-Agent: curl/7.81.0
> Accept: */*
> Cookie: key=value

ヘッダを見てのとおり、オプション -b は以下と同じ意味を持ちます。

curl -H "Cookie: key=value" example.com

-c cookie を保存

cookie.txt に cookie の内容を保存します。

curl example.com -c cookie.txt

-k TLS 証明書の検証をスキップ

開発中で自己証明書を無視するために使うことが多いです。

curl https://example.com -k
スポンサーリンク

POST メソッド

POST メソッドPOST メソッドとは、指定した URL にデータを送信します。

-X メソッドの指定

curl example.com -XPOST

デフォルトでは GET メソッドが指定されます。

-d フォームデータを送信

ユーザーが HTML フォームにデータを入力して、ボタンを押すのと同じです。

HTML フォームの例

name 属性に対応する input 要素に、値を代入して送信する例

curl example.com -XPOST -d "username=foo" -d "password=bar"

@ 送信データにファイルを指定

送信するデータにファイルを指定する場合は、「@」を利用

curl example.com -XPOST -d @test.txt

-H リクエストヘッダを追加 (json)

-H でリクエストヘッダを追加します。

よくある用途は、REST API で JSON 形式でデータを送信すると伝えることです。

curl example.com -XPOST -H "Content-Type: application/json" -d '                 
{
 "foo":"bar"
}'
curl example.com -XPOST -H "Content-Type: application/json" -v >/dev/null
> POST / HTTP/1.1
> Host: example.com
> Content-Type: application/json
スポンサーリンク

関連記事

学習ロードマップ
ネットワークのコマンド
OSI 参照モデル