Linuxコマンド - curl

提供:MochiuWiki : SUSE, EC, PCB
2023年12月31日 (日) 12:34時点におけるWiki (トーク | 投稿記録)による版 (→‎トークン認証 =)
ナビゲーションに移動 検索に移動

概要

curlコマンドは、Web上のリソースにアクセスして、データの送受信を行うツールである。
主に、以下に示すようなプロトコルをサポートしており、APIとの通信やWebページの取得、ファイルのアップロードおよびダウンロード等の操作が可能である。

  • HTTP
  • HTTPS
  • FTP
  • SFTP


curlコマンドは、以下に示すことが可能である。

  • Webページの取得
    WebページのHTMLコンテンツを取得する。
  • APIとの通信
    APIに対してHTTPリクエストを送信して、データの取得や更新、削除を行う。
  • ファイルのアップロード / ダウンロード
    FTP、SFTP、HTTP、HTTPS等のプロトコルを利用して、ファイルのアップロードやダウンロードを行う。
  • ヘッダ情報の確認
    WebサイトやAPIのHTTPヘッダー情報を確認する。
  • 認証付きリクエスト
    Basic認証、Digest認証、トークン認証等の様々な認証方法に対応したリクエストを送信することができる。
  • Webサイトの監視
    定期的にWebサイトやAPIにリクエストを送信して、ステータスコードや応答時間を監視することができる。
  • リダイレクトの追跡
    URLがリダイレクトされる場合、curlコマンドはリダイレクト先のURLや遷移を調査することができる。
  • プロキシを経由したリクエスト
    プロキシサーバを経由してリクエストを送信することができる。



使用方法

GETリクエストの実行

curl <オプション> <URL>

# 例: DuckDuckGoのトップページのHTMLを取得する場合
curl https://duckduckgo.com


ヘッダ情報の表示

ヘッダ情報だけを表示する場合は、-Iオプションを付加する。

curl -I <URL>


POSTリクエストの送信

POSTリクエストを送信する場合は、以下に示す2つのオプションを付加する。

  • -Xオプション
  • : メソッドを指定(POST)
  • -dオプション
  • : データを指定


curl -X POST -d "key=<値>" <URL>


ファイルのアップロード

ファイルをアップロードする場合は、-Fオプションを付加する。

curl -F "file=@<ファイルのパス>" <URL>


ファイルのダウンロード

ファイルをダウンロードする場合は、-oオプションを付加して保存先ファイル名を指定する。

curl -o <出力先ファイル名> <URL>



curlコマンドのオプション



セキュリティと認証

HTTPS

証明書のエラーを無視する場合、-kオプションを付加する。
これにより、curlコマンドはサーバから送信される証明書を検証せずに、以下のような動作をする。

  • 証明書エラーが発生しない。
  • サーバとの通信が脆弱になる
  • サーバからのレスポンスが改竄されている可能性がある。


パスワード認証

ユーザ名とパスワードを指定して認証が必要なWebサイトにアクセスする場合は、-uオプションを付加する。

curl -u <ユーザ名>:<パスワード> <URL>


トークン認証

トークン認証を使用するAPIにアクセスする場合は、ヘッダにトークンを追加してリクエストを送信する。

curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/data


Basic認証 / Digest認証

Basic認証およびDigest認証を使用する場合は、-uオプションを付加してユーザ名とパスワードを指定する。
また、必要に応じて-basicオプションや-digestオプションを付加する。

# Basic認証
curl -u <ユーザ名>:<パスワード> --basic <URL>

# Digest認証
curl -u <ユーザ名>:<パスワード> --digest <URL>


SSL / TLSの設定

SSL / TLSの設定をカスタマイズする場合は、以下に示すオプションを付加する。

  • -ciphersオプション
    使用する暗号スイートを指定する。
  • -cacertオプション
    CA証明書のファイルを指定する。
  • -certオプション
    クライアント証明書を指定する。
  • -keyオプション
    クライアント証明書の秘密鍵を指定する。