初心者向け?curlでいろんなプロトコルを触ってみよう!
スピーカ: inductorさん
今回のゴール
色々なオプションがあるcurlの使い方を共有して、使ってみよう!
cURLとは?
- 主にリモートのサーバとやり取りするのに使う。
- 他にはwgetがある。
何がいいのか?
- どこでも動く。
Linuxはもちろんのこと、Solaris、FreeBSD、Windows、macOS などなど、いろんな所で動く。 - urlとあるのでHTTP系のみに見えるが、FTPやSMTPなども使える。
基本形
curl https://google.com
ブラウザだとすぐにリダイレクトされてしまうが、 curlだとリダイレクトする前の情報が見れる。
ファイルのダウンロードができる。
curl https://google.com -o google.html
-o
オプション
--output FILE
の形式で指定して、標準出力(stdout)の結果を出力するのではなく、
指定したファイル名に主力する。
curlとwgetどっちがいい?
- 使える内容が結構違うから、どっちがいいとかではない。
- もし比較するなら以下の点。
- curl のほうが相当動作軽い。
- wget あまりオプションつけなくても動く。
- ファイル取得のみやミラーリングは wgetの方が大変便利。
- curlとwgetの違い記事
https://postd.cc/curl-vs-wget/
いろいろな使い方
** 以下、スピーカーのinductorさんが用意した環境へのurlが多いので注意。**
curl --head https://untrustedcurl.inductor.me/
--head
オプション。
レスポンスヘッダだけ見たい場合に使えます。
curl http://curl.inductor.me/postjson -X POST -H "Content-Type: application/json" -d '{"name": "inductor"}'
-X POST
:HTTPのメソッドを、POSTに指定する。
ちゃんとメソッドを指定しないと、-X
はプロキシを通る指定にも使えるので注意。
-H
:ヘッダーを追加できる
HTTPのリクエストヘッダーに特殊なフィールドを追加できる。
-d "<key-value data>"
で、データの指定ができる。
FTPの例
curl -u curl:curltest -l -O ftp://curl.inductor.me/
-u
:アカウント名とパスワードを指定してリクエスト。
-l
:--list-onlyのオプション。filenameだけを表示するというもの。
大文字の-L
だと、リダイレクトに対応する、になるので注意。
curl -T test.txt -u curl:curltest ftp://curl.inductor.me/
その他、チャットで出たの
- curlの普段使いの話だと、末尾に
-vvv
付けて遊んでますね。 - 普段使いだと
-L
付けておかないと 何度もredirectされるときとか悲しみが増します。 -b
でCookieのせて、CloudFrontの設定漏れの確認とかできる。--tlsv1.2
なんかで、tlsバージョン指定で設定間違いないか、なんて使い方も。--digest
で、Basic認証以外の使い方もできます。