ホーム > ネットワーク管理 > curl

curl: URLベースのデータ転送/テスト用万能ツール

URLを使用してサーバーとデータを送受信するための強力なコマンドラインツールです。HTTP/HTTPS、FTP/FTPS、SFTPなど多様なプロトコルをサポートし、APIテスト、ファイルのアップロード/ダウンロード、トラブルシューティングに広く利用されています。

curlとは何か?

curlは「Client URL」の略で、URL文法を使用してデータを送受信するCLIユーティリティです。ウェブ開発、APIテスト、CI/CD自動化、運用トラブルシューティングなど、広範な領域で使用されています。

主要機能

  • 多様なプロトコル: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPSなど(ビルドオプションによる)。
  • HTTP制御: メソッド、ヘッダー、Cookie、圧縮、HTTP/2、リダイレクト、タイムアウト、再試行など、詳細な制御。
  • アップロード/ダウンロード: ファイルダウンロード(-o/-O)、再開(-C -)、フォームアップロード(-F)、単一ファイルアップロード(-T)。
  • セキュリティ: TLS証明書検証(デフォルトで有効)、信頼ルートの指定(--cacert)、クライアント証明書(--cert/--key)。
  • 自動化への親和性: サイレント出力(-s)、失敗時の終了(-f)、書式化出力(-w)など、スクリプトに適しています。

主要オプション (Shell)

最も基本的なこととして、リクエスト対象のURLが必要です。複数のURLをスペースで区切って指定したり、ファイル(@file)から読み込むこともできます。

1. 基本的なリクエストとダウンロード

2. HTTPメソッドとデータ転送

3. ヘッダー、認証、Cookie

4. 出力制御/信頼性

5. セキュリティ/TLS & プロキシ/診断

6. プロトコル/バージョン

7. ヘルプ/バージョン

生成されたコマンド:

コマンドを組み合わせてみてください。

説明:

`curl` コマンドを実行します。

これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。

使用シナリオの例 (Shell)

実務でよく使われるリクエストパターンを集めました。

ウェブページの内容を出力

curl https://example.com

基本的なGETリクエスト。

ファイルのダウンロード(リダイレクト追跡)

curl -O -L https://wordpress.org/latest.zip

-Oで元のファイル名、-Lでリダイレクトを追跡。

JSON GET + 整形表示

curl -s https://api.github.com/users/google | jq

jqでパース/可読性向上。

JSON POST

curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users

ヘッダーと本文を指定。

フォームファイルアップロード (multipart)

curl -F "upload_file=@./my-image.png" https://example.com/upload

フィールド名=upload_file、ファイルパスを@で指定。

Bearerトークン認証

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

Authorizationヘッダーを使用。

応答ヘッダーのみ確認

curl -I https://google.com

サービスの状態/キャッシュ診断に有用。

失敗時に非ゼロ終了 + サイレント

curl -sSf https://example.com/health

-sS -fの組み合わせ: スクリプトに親和的。

タイムアウト + 再試行

curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api

不安定なネットワークに対応。

特定のIPでテスト (--resolve)

curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status

DNS迂回テスト (SNI維持)。

インストール

ほとんどのシステムに標準で搭載されていますが、ない場合はパッケージでインストールします。

Debian/Ubuntu

sudo apt update && sudo apt install -y curl

RHEL/CentOS/Fedora

sudo dnf install -y curl

Arch Linux

sudo pacman -S --needed curl

ヒントと注意事項

役立つヒント

  • curl vs wget: wgetは大容量/再帰的なダウンロードに強く、curlはAPI操作/詳細な制御に強いです。
  • 引用符: -d/-HでJSON/特殊文字を使用する場合は、シングルクォートで囲むことを推奨します。
  • 圧縮応答: --compressedを使用すると、サーバーがサポートしている場合、自動的に圧縮解除され転送量が削減されます。
  • プロキシ: HTTPプロキシは-x、SOCKS5は--socks5で設定します。
  • セキュリティに関する注意 (-k): -k/--insecureは開発・テスト限定での使用を推奨します。運用環境では信頼ルートの設定を推奨します(--cacert)。

関連するコマンド

機能的に類似しているか、よく一緒に使われるコマンドです。



同じカテゴリのコマンド