curlとは
curl(カール)は、URLで指定した通信を行い、HTTPなどの要求・応答を確認できるコマンドラインツールです。URLからプロトコル、ホスト、ポート、パス等を読み、対応するプロトコルでサーバーへデータを送受信します。
curlはlibcurlを利用する転送ツールで、HTTP・HTTPSのほか、FTP、SMTP、IMAP等、多数のプロトコルを扱えます。名称を「Client URL」の正式な略と決めつける説明もありますが、現在の公式文書では一般にツール名として扱います。
curlの強みは「Webページを見る」ことではなく、どのURLへ、どんな要求を送り、どんなヘッダー・状態・本文・時間で返ったかを再現可能な形で観測できることです。

一回の転送を段階で読む
スキーム、ホスト、ポート、パス、問い合わせを解析し、送信先と要求対象を作ります。
DNS、ホストファイル、指定選択肢等からIPv4・IPv6候補を得ます。
TCPやQUIC等で接続し、プロキシ利用時はまずプロキシへ接続します。
HTTPSでは暗号設定、証明書連鎖、接続先ホスト名等を確認します。
取得、送信、認証、コンテンツタイプ等を選択肢で明示的に組み立てます。
アプリケーション結果、リダイレクト、キャッシュ情報、ペイロードを別々に保存・表示します。
本文が既定で標準出力へ出る
HTTP URLをそのまま指定すると、通常は応答本文を端末の標準出力へ書きます。画像や圧縮ファイルなどバイナリーデータを端末へ流すと表示が乱れるため、保存先ファイルを指定します。
サーバーが提案するファイル名を使う方法と、自分で保存名を決める方法は別選択肢です。同名ファイルの上書き、ダウンロード先ディレクトリー、partialファイルの扱いを確認します。
ヘッダー・本文・状態を混ぜない
応答ヘッダーを表示する選択肢、ヘッダーだけを要求する方法、本文を別ファイルへ保存する方法、終了後にステータスコードや時間を整形出力する方法があります。要求方式をHEADへ変えることと、GETの本文だけを捨てることは同じではありません。
curl処理の終了コードとHTTPステータスコードも別です。ネットワーク転送が正常に完了してもHTTP 404・500を受け取ることがあり、選択肢なしではそれだけでシェル失敗扱いにならない場合があります。
リダイレクトは既定で自動追跡しない
HTTP 3xxとLocationヘッダーを受けたとき、curlは既定では次のURLへ移動せず、その応答を返します。追跡選択肢を付けると指定上限まで辿ります。
リダイレクト先で方式を維持するか、POSTをGETへ変えるかはステータスコードと選択肢で変わります。別ホストへ移るときのAuthorizationヘッダーやCookie送信範囲は特に注意し、信頼できないリダイレクトへ秘密を渡しません。
方式・ヘッダー・本文は独立した要素
データ送信選択肢を使うとPOSTが選ばれるなど、選択肢が方式を暗黙変更する場合があります。API調査では実際に送られた要求行、ヘッダー、本文をverbose出力やサーバーログで確かめます。
JSONを送るならコンテンツタイプとデータ形式、フォームならエンコーディング、ファイルアップロードならマルチパートまたはプロトコル固有転送を区別します。ヘッダー名を付けただけで本文が正しい形式へ自動変換されるとは限りません。
TLSエラーを無効化して終わらせない
証明書検証を無効にする選択肢は、通信の盗聴・改ざん相手を見分けられなくします。一時切り分けで使った結果を「HTTPSは正常」とせず、システム時刻、信頼保存、証明書連鎖、ホスト名、SNI、interceptingプロキシを修正します。
クライアント証明書、秘密鍵、CAファイルを指定する場合、ファイル権限とコマンド履歴へ注意します。秘密をURL、ヘッダー、処理一覧へ露出させない渡し方を選びます。
verbose・トレースは強力だが秘密も写す
verbose出力は接続アドレス、TLS情報、要求・応答ヘッダー等を示します。トレースはさらにデータを詳しく記録できますが、Authorization、Cookie、トークン、フォームデータ、個人情報を含む可能性があります。
共有前に実値を置換し、再現に不要な本文を除きます。ただしホスト、時刻、状態、リダイレクト順序まで消すと原因が追えないため、秘密と診断情報を区別して匿名化します。
測定値は一回の転送の内訳
名前検索、connect、TLS、firstバイト、total等の時間を出せます。これはその実行・URL・接続再利用条件の値で、回線全体の最大速度ではありません。
DNSキャッシュ、HTTP接続再利用、プロキシ、IPv4・IPv6、サーバーキャッシュ、リダイレクトで結果が変わります。複数回測り、最初と再利用後を分けます。
curlはURL転送を、解決・接続・TLS・要求・応答へ分けて観測するツールです。本文だけでなく状態、ヘッダー、リダイレクト、終了コード、保存先、秘密情報の扱いまで一つの記録として読みます。
curlのURL transfer、protocol、output、redirect、request・response、TLS、verbose・trace、終了code:curl official man page