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