wgetとcurlの使い分けについて

2020年4月5日

結局どっちを使えばいいの?

curlもwgetもサーバーからのレスポンスを見たり、情報を取得する際になんとなく使ってませんか?
(主にcurlが何でもできるため、脳みそ停止で使ってませんか?)

🤔「どっちも見たい情報取れるんだし、別に好きな方でよくね?」
😇「いやいや、それぞれ得意分野があるんですよ」


これを機会に、今後は気をつけて使い分けてみませんか?

そもそもこれらって何だっけ?

wget(だぶるげっと)とは

  • Getリクエストを投げる
  • クローラーとしても使えるダウンローダー
    • 幅広く情報を取得するのが得意
  • 再帰的なダウンロードが可能

curl(かーる)とは

  • 基本的にはGetリクエストを投げる(Postもできちゃう)
  • HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP、FILEなど、対応プロトコルの種類が多い
  • プロキシ、ユーザー認証、FTPアップロード、HTTP POST、SSL接続なども可能

オススメの使い方

wget

基本的には
wget “https://red-full-moon.com"
の様にURLを指定して使用する。
また代表的なオプションは下記の通り

今回紹介するコマンドの例でのURLはあくまでも具体例で、動作保証はできませんのであしからず…

  • -O(保存先の指定)
    • wget “https://red-full-moon.com" -O ./test.html
    • ダウンロードしたファイルの保存先を指定出来る
      • ファイル名を – とすると、ファイルに保存せずに標準出力される
    • 指定しないとカレントディレクトリに保存される
    • ダイレクト(>)でも代用可能

  • -r(再帰的なファイルの取得)
    • wget -r -l 3 -np -H “https://red-full-moon.com"
    • 再帰的なダウンロードを実行(デフォルトは5階層まで)
      • -l で階層を指定できる
      • -npで上位ディレクトリへは遡らなくなる
      • -Hでリンクのある外部サイトまで取得する
        • -Dで外部サイトのドメインを指定することも出来る

  • -i (リストファイルの読み込み)
    • wget -i ./list.txt
    • リストファイルに改行区切りで記述されたURLを順番に取得します

  • -p(スタイルシートなどの読み込み)
    • wget -p “https://red-full-moon.com"
    • そのURLの表示必要なjsやcssなども一括で取得します

  • –http-user={username} –http-passwd={password} (ベーシック認証)
    • wget -http-user={username} –http-passwd={password} “https://red-full-moon.com"
    • ベーシック認証のかかったサイトから情報を取得する場合は必須

curl

基本的には
curl “https://red-full-moon.com"
の様にURLを指定して使用する。
また代表的なオプションは下記の通り

  • -o(保存先の指定)
    • curl “https://red-full-moon.com" -o ./test
    • ダイレクト(>)でも代用可能

  • -sS(エラーメッセージ以外の非表示可)
    • curl -sS " https://red-full-moon.com" -o ./test

  • -X POST(Postリクエスト)
    • curl “https://red-full-moon.com" –data-urlencode 'json={hogehoge}’ -X POST
    • –data-urlencode で生データでもエンコードしてくれる

  • –anyauth –user user:password (自動認証)
    • curl –anyauth –user user:password “https://red-full-moon.com
    • 認証方式を自動的に判別して、認証してくれる