初心者向け?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認証以外の使い方もできます。