Skip to content

curlフラグ 解説

日々使うcurlのフラグを用途別にまとめました。リクエストの組み立て、ヘッダーの設定、認証、アイデンティティの提示、出力の制御、リダイレクトの追従、接続の調整、デバッグ。各行でフラグを実用的な呼び出し例と組み合わせて示します。

curlはHTTPリクエストを送信し、レスポンスボディを出力します。その力の大部分はフラグにあります。メソッドを選び、ヘッダーとデータを添付し、認証を扱い、何を出力するかを決めるのはフラグです。分かりやすい場合は長い形式を示しました。短い形式は1文字です。クエリ文字列をシェルに壊されないよう、URLは引用符で囲んでください。

リファレンステーブル · 54 項目
54 of 54 rows
リクエストの形
HTTPメソッドを設定する。curl -X POST https://api.test
リクエストヘッダーを追加する。curl -H "Accept: application/json" URL
ボディを送信する(POSTとデフォルトのContent-Typeを設定する)。curl -d "name=Ada" URL
-dの値をクエリパラメータとしてGETに付け加える。curl -G -d "q=hi" URL
マルチパートのフォームデータを送信する(ファイルアップロード)。curl -F "file=@photo.png" URL
URLエンコードを適用したフォームデータを送信する。curl --data-urlencode "name=Ada Lovelace" URL
PUTでファイルをアップロードする。curl -T big.zip URL
アップロードをリモートファイルの置き換えではなく追記にする。curl -a -T log.txt ftp://server.test/logs/log.txt
JSONとAPI
正しいContent-TypeでJSONを送信する。curl -H "Content-Type: application/json" -d '{"a":1}' URL
ファイルの内容をボディとして送信する。curl -d @body.json URL
ヘッダーを手動で設定せずにJSONを送信する(curl 7.82以降)。curl --json '{"a":1}' URL
認証
ユーザーとパスワードによるHTTP Basic認証。curl -u ada:s3cr3t URL
OAuthベアラートークンを送信する。curl --oauth2-bearer TOKEN URL
任意のトークンスキームを手動で送信する。curl -H "Authorization: Bearer TOKEN" URL
相互TLS用にクライアント証明書とその鍵を提示する。curl --cert client.pem --key key.pem URL
単一のCAバンドルファイルでサーバーを検証する。curl --cacert ca.pem URL
CAのディレクトリでサーバーを検証する。curl --capath /etc/ssl/certs URL
プロキシ経由でリクエストを送信する。curl -x http://proxy.test:8080 URL
プロキシへの区間に対してのみTLS検証をスキップする。curl -x https://proxy.test:8443 --proxy-insecure URL
最小バージョンとしてTLS 1.3を要求する。curl --tlsv1.3 URL
アイデンティティ
カスタムのUser-Agent文字列を送信する。curl -A "Mozilla/5.0" URL
Refererヘッダーを送信する。curl -e https://example.com/page URL
リクエストと一緒にCookieを送信する。curl -b "session=abc123" URL
レスポンスのCookieをファイルに保存する。curl -c cookies.txt URL
出力
ボディをファイルに書き込む。curl -o page.html URL
リモートのファイル名でボディを保存する。curl -O https://site/file.tgz
ボディの前にレスポンスヘッダーを出力する。curl -i URL
ヘッダーのみ取得する(HEADを送信する)。curl -I URL
進行状況メーターとエラーを隠す。curl -s URL
ボディの後にフォーマット文字列を出力する(タイミング、ステータス)。curl -w "%{http_code}\n" -o /dev/null URL
HTTPエラーで非ゼロで終了し、エラーボディを出力しない。curl -f URL
HTTPエラーで非ゼロで終了するが、ボディは出力する。curl --fail-with-body URL
Content-Dispositionヘッダーから保存ファイル名を決める。curl -OJ URL
中断された転送を停止した位置から再開する。curl -C - -O URL
デフォルトのメーターの代わりにプログレスバーを表示する。curl -# -O URL
サイレント実行中でもエラーを出力する。curl -sS URL
レスポンスヘッダーをファイルに書き込む。curl -D headers.txt URL
圧縮されたレスポンスを要求してデコードする。curl --compressed URL
-oのパスに存在しないディレクトリを作成する。curl -o cache/api/data.json --create-dirs URL
リダイレクトと接続
3xxリダイレクトに追従する。curl -L URL
TCP接続を待つ最大秒数。curl --connect-timeout 5 URL
リクエスト全体の最大秒数。curl --max-time 30 URL
TLS証明書の検証をスキップする。curl -k https://self-signed.test
一時的なエラーを最大N回再試行する。curl --retry 3 URL
一時的なものだけでなく、あらゆるエラーで再試行する。curl --retry 3 --retry-all-errors URL
接続をIPv4またはIPv6に強制する。curl -4 URL
ホストとポートをアドレスに割り当て、DNSをバイパスする。curl --resolve api.test:443:127.0.0.1 https://api.test
転送をネットワークインターフェースまたはアドレスに束ねる。curl --interface eth0 URL
複数のURLを同時に転送する。curl -Z URL1 URL2
転送にHTTP/2またはHTTP/3を使う。curl --http3 URL
バッファリングせず、届いたそばからボディをストリーム出力する。curl -N URL
追加のフラグを設定ファイルから読み込む。curl -K flags.cfg URL
デバッグ
リクエストとレスポンスのやり取り全体を出力する。curl -v URL
送受信されたすべてのバイトを16進ダンプする。curl --trace - URL