本記事では、curl コマンドの結果の見方やオプションの使い方を解説していきます。
ネットワークのコマンド | |||
---|---|---|---|
GET メソッド
<!doctype html>!<!html itemscope.......(中略)
ごちゃごちゃと英文が表示されますが、これが google ページのソースです。
ブラウザ (Chrome など) は、このページのソースを、人間の見やすい形で表示してくれてます。
なお、curl のデフォルトのメソッドは GET です。
(つまり、curl www.google.com と curl -XGET www.google.com は同じです。)
-I ステータス行/ヘッダーを表示
オプション -I は HTTP レスポンスのステータス行・ヘッダーを取得します。
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 リダイレクト
リダイレクトを自動で実行します。
(中略);</script> </body></html>
HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ (中略) HTTP/1.1 200 OK
-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 リクエストの開始行/ヘッダーだけ見たい場合は、以下のように標準出力を捨てます。
-O ファイルに保存
HTTP レスポンスの本文をファイルに保存します。
<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: (6) Could not resolve host: googl
-u BASIC 認証
オプション -u は Basic 認証 (ユーザー名とパスワードで認証) をします。
動作の詳細
Basic 認証では、「ユーザー名:パスワード」を Base64 でエンコードした値を、Authorization リクエストヘッダに追加します。
dXNlcm5hbWU6cGFzc3dvcmQ=
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
-b cookie を送信
リクエストヘッダを確認し、cookie が送信できているか見てみます。
> GET / HTTP/1.1 > Host: example.com > User-Agent: curl/7.81.0 > Accept: */* > Cookie: key=value
ヘッダを見てのとおり、オプション -b は以下と同じ意味を持ちます。
-c cookie を保存
cookie.txt に cookie の内容を保存します。
-k TLS 証明書の検証をスキップ
開発中で自己証明書を無視するために使うことが多いです。
POST メソッド
-X メソッドの指定
デフォルトでは GET メソッドが指定されます。
-d フォームデータを送信
ユーザーが HTML フォームにデータを入力して、ボタンを押すのと同じです。
name 属性に対応する input 要素に、値を代入して送信する例
@ 送信データにファイルを指定
送信するデータにファイルを指定する場合は、「@」を利用
-H リクエストヘッダを追加 (json)
-H でリクエストヘッダを追加します。
よくある用途は、REST API で JSON 形式でデータを送信すると伝えることです。
curl example.com -XPOST -H "Content-Type: application/json" -d ' { "foo":"bar" }'
> POST / HTTP/1.1 > Host: example.com > Content-Type: application/json
関連記事
学習ロードマップ | |||||
---|---|---|---|---|---|
ネットワークのコマンド | |||
---|---|---|---|
OSI 参照モデル | |||
---|---|---|---|