Curl - DOS/コマンドプロンプト コマンド一覧
『client URL の略』(Everything curlより)
コマンドライン上でURLを使ったデータのやり取りを行うプログラムです。「cURL」はオープンソースのプロジェクトであり、Windowsに限らず幅広いプラットフォームへの対応が行われているため、Curlプログラムは各プラットフォームでほぼ共通の方法で利用可能です。
Windowsでは、Windows 10向けに Windows 10 April Update (Build 1803; 10.0.17134.*; Insider では 10.0.17063.*) のバージョンから標準で搭載されています。ただしオープンソースの性質上更新(バージョンアップ)はWindowsの更新よりも早いため、最新バージョンを利用したい場合は以下の公式サイトからダウンロードする必要があります。また、Windows 10のそれ以前のバージョンや、Windows 8.1など前バージョンのWindowsで利用したい場合も、同様に別途入手する必要があります。
※ 公式サイト等からダウンロードしてそれを利用する場合は、PATH設定など、プログラムの検索パスに注意する必要があります。
※ 構文・オプション一覧は curl 8.13.0 で利用可能なものに基づいていますが、Windows 10/11 で搭載されているバージョンは以下のようになります。2025年5月時点では最新の Windows にインストールされるバージョンは 8.12.1 になります。
Windows 10/11 で搭載されている curl.exe バージョン
curl バージョン | Windows 10 | Windows 11 | 日付 | 備考 |
---|---|---|---|---|
curl 7.55.1 | 10.0.17134.* (1803) | (10.0.22000.194) | 初期搭載バージョン | |
curl 7.79.1 | 10.0.18363.2037 (1909) 10.0.19042.1466 (20H2) 10.0.19043.1466 (21H1) 10.0.19044.1466 (21H2) | 10.0.22000.434 (21H2) | 2022/01/11 | |
curl 7.83.1 | 10.0.19042.1826 (20H2) 10.0.19043.1826 (21H1) 10.0.19044.1826 (21H2) | 10.0.22000.795 (21H2) | 2022/07/12 | Windows 11 22H2 は最初からこのバージョン |
curl 8.0.1 | 10.0.19042.2846 (20H2) 10.0.19044.2846 (21H2) 10.0.19045.2846 (22H2) | 10.0.22000.1817 (21H2) 10.0.22621.1555 (22H2) | 2023/04/11 | Windows 11 23H2 は最初からこのバージョン |
curl 8.4.0 | 10.0.19044.3693 (21H2) 10.0.19045.3693 (22H2) | 10.0.22000.2600 (21H2) 10.0.22621.2506 (22H2) 10.0.22631.2506 (23H2) | 2023/11/14 | |
curl 8.7.0 (curl 8.7.1) | 10.0.19044.4412 (21H2) 10.0.19045.4412 (22H2) | 10.0.22621.3672 (22H2) 10.0.22631.3672 (23H2) | 2024/05/29 | Windows 11 24H2 は最初からこのバージョン |
curl 8.8.0 | 10.0.22621.4037 (22H2) 10.0.22631.4037 (23H2) 10.0.26100.1457 (24H2) | 2024/08/13 | Windows 10 向けには配布されず | |
curl 8.9.1 | 10.0.19044.5011 (21H2) 10.0.19045.5011 (22H2) | 10.0.22621.4317 (22H2) 10.0.22631.4317 (23H2) 10.0.26100.2033 (24H2) | 2024/10/08 | |
curl 8.10.1 | 10.0.22621.4890 (22H2) 10.0.22631.4890 (23H2) 10.0.26100.3194 (24H2) | 2025/02/11 | ||
curl 8.11.1 | 10.0.22621.5189 (22H2) 10.0.22631.5189 (23H2) 10.0.26100.3775 (24H2) | 2025/04/08 | ||
curl 8.12.1 | 10.0.22621.5262 (22H2) 10.0.22631.5262 (23H2) 10.0.26100.3915 (24H2) | 2025/04/22 (22H2/23H2) 2025/04/25 (24H2) |
バージョンやプラットフォームによってオプション等が異なる可能性がありますので、その場合は下記curl公式ドキュメントや「curl --help
」などの内容をご確認ください。
[PowerShell 5.x まで] PowerShell 5.x までは、既定では「curl」は「Invoke-WebRequest」のaliasとして登録されており、「curl」を使うと「curl.exe」とは異なる挙動になります。このページに記載のCurlコマンドを利用したい場合は .exe を省略せず「curl.exe」と入力する必要があります。
使い方
Curl は以下の構文で利用します。
curl[.exe] [<options>] [<url>]
※ [PowerShell 5.x まで] 前述の通り、PowerShell環境でCurlを使う場合は(既定では)「.exe」は省略できません。
[options] には後述の「--xxx」または「-x」形式のオプションを任意で(0個、1個または複数を組み合わせて)指定します。例えば以下のような形になります。
curl -L --user-agent FooBar https://www.example.com/
なお、オプションはLinux系で一般的な「-」または「--」で始まる文字列を指定する形式であり、大文字・小文字が区別されます。また、一般的なDOS/Windowsのコマンドにおける「/」で始まるオプション指定はできません。そのため、「/?」は「不正なURL扱い」となります。使用法を表示する場合は「--help」(または「-h」)とする必要があります。
注記の無い限り、オプションは直前の URL 指定に対して働きます。また、順番に解釈されるため、多くのオプションでは同じオプションが来た場合上書きされます(--url など一部オプションを除く)。
ON / OFF を切り替えるような(真偽値)オプションは、オプション名の前に「no-」を付けると「指定しない」「無効にする」の意味となります。たとえば「--location」が指定された後に「--no-location」を指定すると「--location」の効果を打ち消します。(これは設定ファイルに書かれたオプションを打ち消す場合にも有用です。)
なお、「-x」形式の1文字のオプションは「-xyz」のように複数の1文字オプションを繋げて記述することができます(ただし追加パラメーターが必要なものは最後にのみ結合可能)。また、1文字オプションで「-o <file>」のように追加のパラメーターが必要な場合は、「-oNUL」のようにオプション名と追加パラメーターの間のスペースを省略することができます。
オプション
1文字オプション
アルファベット順オプション
リストを展開するにはここをクリックしてください
- <url>
- リクエスト先のURLを指定します。
- --abstract-unix-socket <file> (※ 利用不可)
- 接続先を指定の Abstract Unix Domain Socket ファイルとします。
- --alpn (※ 無視される)
- ALPN を使用するようにします。(既定で使用されます。)
- --anyauth
- Curl が認証方式を自動判別するようにします。
- --append / -a
- ファイルをアップロードする際にファイルを上書きするのではなく追加書き込みをするようにします。
- --basic
- BASIC 認証を用いるよう指定します。
- --buffer
- レスポンスデータ出力時のバッファリングを有効化します。(既定で有効化されています。)
- --ca-native (※ 無視される)
- 証明書データをOSから取得して使うようにします。
- --cacert <certfile> (※ 無視される)
- 証明書のセットを持つファイルを指定します。
- --capath <dir> (※ 無視される)
- 証明書データのファイルが1つ以上格納されたディレクトリを指定します。
- --cert <certificate>[:<password>] / -E<certificate>[:<password>] (※ 無視される)
- クライアント認証のファイルを指定します。
- --cert-status (※ 使用不可)
- OCSP stapling を行います。
- --cert-type <type> (※ 無視される)
- --cert オプションで指定する証明書の形式を指定します。
- --ciphers <list-of-ciphers> (※ 無視される)
- TLS 認証時に使う暗号方式のリストを指定します。
- --clobber
- 既に存在するファイルを上書きすることを許可します。(既定で上書きします。)
- --compressed (※ 使用不可)
- レスポンスを圧縮されたデータにするようにリクエストします。
- --config <file> / -K<file>
- 「設定ファイル」を指定します。
- --connect-timeout <seconds>
- 接続時のタイムアウト時間を指定します。
- --connect-to HOST1:PORT1:HOST2:PORT2
- 指定のホスト・ポートへの接続を別のホスト・ポートへの接続に置き換えます。
- --continue-at <offset> / -C<offset>
- ファイル転送を途中のバイトから始めます。
- --cookie <data> / -b<data>
- リクエストに含める Cookie を指定します。
- --cookie-jar <filename> / -c<filename>
- Cookie データを指定のファイルに保存します。
- --create-dirs
- 出力ファイル名にディレクトリ名が含まれている場合、必要に応じてそのディレクトリも作成します。
- --create-file-mode <mode> (※ 実質効果なし)
- ファイル作成時のパーミッションを指定します。
- --crlf
- アップロードするデータの改行コード LF を CR-LF に置き換えます。
- --crlfile <file> (※ 無視される?)
- 証明書失効リストのファイルを指定します。
- --data <data> / -d<data>
- POST リクエストする際のデータを指定します。
- --data-ascii <data>
- POST リクエストする際のデータを指定します。
- --data-binary <data>
- POST リクエストする際のデータを指定します。改行文字は削られません。
- --data-raw <data>
- POST リクエストする際のデータを指定します。「@」文字を解釈しません。
- --data-urlencode <data>
- POST リクエストする際のデータを指定します。一定の規則に従ってURLエンコード処理を行います。
- --delegation <LEVEL>
- GSS-API を使った Kerberos 認証で、認証情報の委譲に関するオプションを指定します。
- --digest
- Digest 認証を用いるよう指定します。
- --disable / -q
- .curlrc ファイルの読み込みを無効化します。
- --disable-eprt
- EPRT および LPRT コマンドの利用を無効化します。
- --disable-epsv
- EPSV コマンドの利用を無効化します。
- --disallow-username-in-url
- URLにユーザー名を含めることをNGとします。
- --dns-interface <interface> (※ 使用不可)
- DNSサーバーを利用して名前解決する際に使うネットワークインターフェイス名を指定します。
- --dns-ipv4-addr <address> (※ 使用不可)
- DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。
- --dns-ipv6-addr <address> (※ 使用不可)
- DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。
- --dns-servers <addresses> (※ 使用不可)
- ホスト名の名前解決に使用するDNSサーバーのアドレスを指定します。
- --doh-cert-status (※ 使用不可)
- DNS-over-HTTPS のサーバーに対して --cert-status オプションを指定します。
- --doh-insecure
- DNS-over-HTTPS のサーバーに対して --insecure オプションを指定します。
- --doh-url <url>
- ホスト名の名前解決に DNS-over-HTTPS を利用します。
- --dump-ca-embed
- 埋め込まれた証明書データを出力します。
- --dump-header <filename> / -D<filename>
- レスポンスのヘッダー情報を指定したファイルに保存します。
- --dump-module-paths
- Curl 実行時に読み込まれたDLLのパス一覧を出力します。
- --egd-file <file> (※ 無視される)
- (廃止予定) EGDソケットのファイル名を指定します。
- --engine <name> (※ 実質使用不可)
- 暗号処理時に使うエンジンの名前を指定します。
- --eprt
- EPRT および LPRT コマンドの利用を有効化します。(既定では有効です。)
- --epsv
- EPSV コマンドの利用を有効化します。(既定では有効です。)
- --etag-compare <file>
- ファイルに書かれた ETag を使って ETag 付きのリクエストを行い、ETag が一致したら変更なしのレスポンスを受け取るようにします。
- --etag-save <file>
- レスポンスヘッダーに含まれる ETag を指定のファイルに保存します。
- --expand-XXXX
- 後続の文字列に含まれる変数を展開します。(XXXX は任意のオプション名)
- --expect100-timeout <seconds>
- ステータスコード 100 のレスポンスを受けたときの最大待機時間を指定します。
- --fail / -f
- エラーのステータスコードが返された場合エラー終了扱いにします。
- --fail-early
- 途中で処理に失敗した場合は以降の処理を継続しないようにします。
- --fail-with-body
- エラーのステータスコードが返された場合エラー終了扱いにしますが、レスポンスを出力します。
- --false-start (※ 使用不可)
- 「False start」モードの利用を試みます。
- --form name=content / -Fname=content
- サーバーに指定のデータを送信します。
- --form-string name=content
- サーバーに指定のデータをそのまま送信します。
- --ftp-account <data>
- ユーザー認証後に ACCT コマンドでデータを送るように指定します。
- --ftp-alternative-to-user <command>
- USER コマンドと PASS コマンドの送信に失敗した場合、追加で送るコマンドを指定します。
- --ftp-create-dirs
- ファイルアップロード時、アップロード先に不足するディレクトリの作成を行います。
- --ftp-method <method>
- URLに含まれるファイルへの到達方法を指定します。
- --ftp-pasv
- パッシブモードを利用するように指定します。
- --ftp-port address[:port] / -Paddress[:port]
- アクティブモードを利用するように指定します。
- --ftp-pret
- PASV や EPSV の前に PRET コマンドを送信するようにします。
- --ftp-skip-pasv-ip
- PASV コマンドに対して受け取った情報にあるIPアドレスを使用しません。
- --ftp-ssl (旧式)
- SSL/TLS を利用するように指定します。
- --ftp-ssl-ccc
- ユーザー認証後に CCC コマンドを送るように指定します。
- --ftp-ssl-ccc-mode <mode> (※ 無視される)
- --ftp-ssl-ccc オプションを指定した際、暗号化処理を閉じるモードを指定します。
- --ftp-ssl-control
- SSL/TLS を利用するように指定します。ただしデータ通信に対しては通常の接続とします。
- --ftp-ssl-reqd (旧式)
- SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
- --get / -G
- GET リクエストでデータを送信します。
- --globoff / -g
- URLにおける glob 処理を行わないようにします。
- --happy-eyeballs-timeout-ms <millisec>
- Curl による Happy Eyeballs (IPv6 と IPv4 のうちいずれかを使用する処理)のタイムアウトを指定します。
- --haproxy-protocol
- 接続時に HAProxy の「PROXY」ヘッダー(version 1)を送信します。
- --head / -I
- ヘッダーのみを取得します。
- --header <header/@file> / -H<header/@file>
- 追加のリクエストヘッダーを指定します。
- --help / -h
- コマンドラインで使用できるオプション一覧を含む使い方を表示します。
- --hostpubmd5 <md5>
- 接続先が提供する公開鍵の MD5 チェックサムを指定します。
- --http1.0 / -0
- HTTP バージョン 1.0 を使っての通信を試みます。
- --http1.1
- HTTP バージョン 1.1 を使っての通信を試みます。
- --http2 (※ 使用不可)
- HTTP バージョン 2 を使っての通信を試みます。
- --http2-prior-knowledge (※ 使用不可)
- Upgrade ヘッダーや問い合わせを利用せず、直接 HTTP/2 を利用して通信します。
- --http3 (※ 使用不可)
- HTTP バージョン 3 を使っての通信を試みます。
- --http3-only (※ 使用不可)
- HTTP バージョン 3 のみを使って通信を行います。
- --ignore-content-length
- レスポンス受信時に Content-Length ヘッダーを無視して受信を行います。または、データサイズ取得のための RETR コマンドを送信しません。
- --include
- Curl によるレスポンス出力にレスポンスヘッダーも含めます。
- --insecure / -k
- SSL通信の過程でセキュリティ上問題がある場合でも通信を続行します。
- --interface <name>
- 接続時に利用したいインターフェイス名を指定します。
- --ip-tos <string> (※ 使用不可)
- IPv4 の Type of Service (TOS) または IPv6 の Traffic Class フィールドを設定します。
- --ipv4 / -4
- IPv4 のアドレスを使用するようにします。
- --ipv6 / -6
- IPv6 のアドレスを使用するようにします。
- --json <data>
- JSON データの送受信を行います。
- --junk-session-cookies / -j
- Cookie 読み込み時すべての「セッションCookie」を破棄します。
- --keepalive
- TCP における Keep-Alive 設定を有効化します。(既定で有効化されています。)
- --keepalive-cnt <count>
- TCPソケットに設定する Keep-Alive の再送回数(probe count)を指定します。
- --keepalive-time <seconds>
- TCPソケットに設定する Keep-Alive の時間を指定します。
- --key <key> (※ 実質意味なし)
- TLS での認証や SSH での認証に使う秘密鍵を指定します。
- --key-type <type> (※ 実質意味なし)
- --key オプションで指定する秘密鍵の形式を指定します。
- --krb <level>(※ 使用不可)
- 認証プロセスに Kerberos 認証を利用します。
- --libcurl <file>
- 「libcurl を使った同じ処理を行うC言語のソースコード」を出力します。
- --limit-rate <speed>
- アップロード・ダウンロードのスピードを制限します。
- --list-only / -l
- ディレクトリ内の一覧を取得する際に「名前のみ」を取得するようにします。または、特定のメールを取得する際に RETR ではなく LIST コマンドを使って情報取得をするようにします。
- --local-port <num/range>
- 接続時に使うローカル側のポート番号を指定(制限)します。
- --location / -L
- Location ヘッダーがあればそのURLに対してリクエスト(リダイレクト)を行います。
- --location-trusted
- リダイレクトを行います。リダイレクト後にもその認証情報を含めてリクエストを行います。
- --login-options <options> (IMAP, POP3, SMTP)
- ログイン時のオプションを指定します。
- --mail-auth <address>
- メッセージの認証アドレスを指定します。
- --mail-from <address>
- メールの送信者アドレスを指定します。
- --mail-rcpt <address>
- 宛先アドレスを指定します。
- --manual / -M (※ 使用不可)
- Curl のマニュアルを出力します。
- --max-filesize <bytes>
- ファイルのダウンロード時に適用するファイルの最大サイズを指定します。
- --max-redirs <num>
- 最大のリダイレクト回数を指定します。
- --max-time <time> / -m<time>
- 全体の処理時間の最大(リミット)を指定します。
- --metalink (※ 無視される)
- Metalink を使った通信処理を行います。
- --mptcp (※ 使用不可)
- 接続時に Multipath TCP (MPTCP) を有効にします。
- --negotiate
- Negotiate (SPNEGO) 認証を用いるよう指定します。
- --netrc / -n
- Curl が「.netrc」ファイルを使用するように指定します。
- --netrc-file <filename>
- 「.netrc」ファイルからではなく指定ファイルから認証情報の取得を行います。
- --netrc-optional
- netrc ファイルからの読み取りを「オプショナル」とします。
- --next / -:
- オプションの分離を行います。
- --no-alpn (※ 無視される)
- ALPN を使用しないようにします。
- --no-buffer / -N
- レスポンスデータ出力時のバッファリングを無効化します。
- --no-clobber
- 既に存在するファイルを上書きせず、連番のファイルを作成します。
- --no-keepalive
- TCP における Keep-Alive 設定を無効化します。
- --no-npn (※ 無視される)
- NPN を使用しないようにします。
- --no-progress-meter
- 進捗表示を表示しないようにします。
- --no-sessionid
- SSL/TLS 通信において、セッションの再利用を行わないようにします。
- --noproxy <no-proxy-list>
- 接続時にプロキシサーバーを利用しないホスト名を指定します。
- --no-npn (※ 無視される)
- NPN を使用するようにします。(既定では使用します。)
- --ntlm
- NTLM 認証を用いるよう指定します。
- --ntlm-wb (※ 使用不可)
- NTLM 認証を用いるよう指定します。NTLM 認証時に winbind ヘルパーを利用するようにします。
- --oauth2-bearer <token> (IMAP, POP3, SMTP)
- OAuth2 認証の Bearer トークンを指定します。
- --output <file> / -o<file>
- 受信したレスポンスをファイルに出力します。
- --output-dir <directory>
- ファイルに出力する際の出力先ディレクトリを指定します。
- --parallel / -Z
- URL ごとに処理を並列に実行します。
- --parallel-immediate
- 並列実行する際、既存の接続を再利用しないようにします。
- --parallel-max <num>
- 並列処理の最大数を指定します。
- --pass <phrase> (※ 実質意味なし)
- --cert または --key で指定したファイルのパスワードを指定します。
- --path-as-is
- URLにおけるパス部分に「./」や「../」が含まれていた場合もそのままリクエストに含めるようにします。
- --pinnedpubkey <hashes> (※ 使用不可)
- 接続先の公開鍵を指定の値で検証するように指定します。
- --post301
- POST リクエストに対するステータスコードが 301 のとき、リダイレクト先でも POST を行うようにします。
- --post302
- POST リクエストに対するステータスコードが 302 のとき、リダイレクト先でも POST を行うようにします。
- --post303
- POST リクエストに対するステータスコードが 303 のとき、リダイレクト先でも POST を行うようにします。
- --preproxy [protocol://]host[:port]
- HTTP/HTTPS プロキシサーバーに接続する前に接続する SOCKS プロキシサーバーを指定します。
- --progress-bar / -#
- 進捗表示を単純なプログレスバー表示のみで行うようにします。
- --progress-meter
- 進捗表示を表示するようにします。(既定で表示します。)
- --proto <protocols>
- Curl での通信処理で利用するプロトコル/スキームを指定します。
- --proto-default <protocol>
- URL内にプロトコル/スキームが指定されていなかった場合の既定の値を指定します。
- --proto-redir <protocols>
- リダイレクト時の遷移先として許可/拒否するプロトコル/スキームを指定します。
- --proxy [protocol://]host[:port] / -x[protocol://]host[:port]
- 接続時に利用するプロキシサーバーを指定します。
- --proxy-anyauth
- プロキシ接続で認証を行う際に各種認証方式をすべてトライします。
- --proxy-basic
- プロキシ接続で認証を行う際にBASIC認証を利用します。
- --proxy-ca-native (※ 無視される)
- HTTPSプロキシサーバーに接続する際に証明書データをOSから取得して使うようにします。
- --proxy-cacert <file>
- HTTPSプロキシサーバーに接続する際に用いるCAファイルのパスを指定します。
- --proxy-capath <dir>
- HTTPSプロキシサーバーに接続する際に用いるCAデータ検索先ディレクトリのパスを指定します。
- --proxy-cert <cert[:password]>
- HTTPSプロキシサーバーに接続する際に使うクライアント認証のファイルを指定します。
- --proxy-cert-type <type>
- --proxy-cert で指定する証明書ファイルの形式を指定します。
- --proxy-ciphers <list>
- HTTPSプロキシサーバーに接続する際に使う暗号方式のリストを指定します。
- --proxy-crlfile <file>
- HTTPSプロキシサーバーに接続する際に用いる証明書失効リストのファイルを指定します。
- --proxy-digest
- プロキシ接続で認証を行う際にDigest認証を利用します。
- --proxy-header <header/@file>
- HTTPでのプロキシ接続時にプロキシサーバーに送る追加のヘッダーを指定します。
- --proxy-http2
- HTTPSプロキシサーバーに接続する際、HTTP/2 の利用を試みます。
- --proxy-insecure
- HTTPSプロキシサーバーに接続する際に、SSL通信の過程でセキュリティ上問題がある場合でも接続を続行します。
- --proxy-key <key>
- HTTPSプロキシサーバーに接続する際の TLS での認証に使う秘密鍵を指定します。
- --proxy-key-type <type>
- --proxy-key オプションで指定する秘密鍵の形式を指定します。
- --proxy-negotiate
- プロキシ接続で認証を行う際にSPNEGO認証を利用します。
- --proxy-ntlm
- プロキシ接続で認証を行う際にNTLM認証を利用します。
- --proxy-pass <phrase>
- --proxy-key で指定した秘密鍵のパスワードを指定します。
- --proxy-pinnedpubkey <hashes> (※ 使用不可)
- HTTPSプロキシサーバーに対してその公開鍵を指定の値で検証するように指定します。
- --proxy-service-name <name>
- プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します。
- --proxy-ssl-allow-beast
- HTTPSプロキシサーバーに対する SSL3 / TLS 1.0 での接続においてセキュリティ脆弱性への回避策を用いないようにします。
- --proxy-tlsauthtype <type>
- HTTPSプロキシサーバーに対する TLS 接続における認証方式を指定します。
- --proxy-tlspassword <phrase>
- HTTPSプロキシサーバーに対する TLS 接続においてパスワードを指定します。
- --proxy-tlsuser <name>
- HTTPSプロキシサーバーに対する TLS 接続においてユーザー名を指定します。
- --proxy-tlsv1
- HTTPSプロキシサーバーに対する SSL/TLS 接続において TLS 1.x (TLS 1.0 以降)を使用するように指定します。
- --proxy-user <user>:<password> / -U<user>:<password>
- プロキシサーバーの認証に用いるユーザー名およびパスワードを指定します。
- --proxy1.0 <host>[:<port>]
- HTTP 1.0を利用してプロキシ接続を行います。
- --proxytunnel / -p
- プロキシ接続において、実際の接続先がHTTPである場合においても CONNECT 処理を利用します。
- --pubkey <key>
- 公開鍵を指定します。
- --quote <command> / -Q<command>
- ファイル転送の前に指定のコマンドを実行します。
- --random-file <file>
- (廃止予定) 「乱数ファイル」のファイル名を指定します。
- --range <range> / -r<range>
- データの部分取得をリクエストします。
- --rate N/unit
- 複数のリクエストを行う際に時間あたりの最大リクエスト数を指定します。
- --raw
- 各種転送処理におけるデコード処理を行わず、そのまま出力します。
- --referer <URL> / -e<URL>
- 「リファラー」を指定します。
- --remote-header-name / -J
- ファイル名をヘッダーから得てレスポンスをそのファイル名で保存するようにします。
- --remote-name / -O
- URLからファイル名を抽出してそのファイル名を持ったファイルにレスポンスを書き込みます。
- --remote-name-all
- すべてのURLに対して --remote-name オプションを適用するモードとします。
- --remote-time / -R
- 出力ファイルのタイムスタンプをサーバーから取得できる日時に揃えます。
- --remove-on-error
- Curl がエラー終了(失敗)するとき出力ファイルを削除します。
- --request <command> / -X<command>
- リクエストメソッドを指定します。
- --request-target <target>
- 実際のリクエストパス名を指定します。
- --resolve host:port:addr
- 通常の名前解決処理の代わりに指定のアドレスを使うようにします。
- --retry <num>
- 通信結果が「一時エラー」であった場合、最大で指定した回数だけリトライを行います。
- --retry-connrefused
- 「一時エラー」とする通信結果に接続拒否エラーも含めて取り扱います。
- --retry-delay <seconds>
- リトライタイミングを、指定した秒数を経過した後のタイミングに固定します。
- --retry-max-time <seconds>
- 「リトライ待機時間」が指定した秒数を上回る場合に処理を中止します。
- --sasl-authzid <id>
- SASL PLAIN認証処理に対する認可ID(authzid)を指定します。
- --sasl-ir
- SASL認証をサポートする処理にて、最初のパケットで初期レスポンスをサーバーに送信するようにします。
- --service-name <name>
- SPNEGO認証で用いるサービス名を変更します。
- --sessionid
- SSL/TLS 通信において、セッションの再利用を行うようにします。(既定で再利用します。)
- --show-error / -S
- --silent オプションが指定されていても、エラーメッセージは出力するようにします。
- --show-headers / -i
- Curl によるレスポンス出力にレスポンスヘッダーも含めます。
- --silent / -s
- レスポンス以外何も出力しないようにします。
- --skip-existing
- 出力先ファイルが既に存在するときはリクエストをスキップします。
- --socks4 host[:port]
- SOCKS4 プロキシサーバーを指定します。
- --socks4a host[:port]
- SOCKS4a プロキシサーバーを指定します。
- --socks5 host[:port]
- SOCKS5 プロキシサーバーを指定します。
- --socks5-basic
- SOCKS5 プロキシサーバー接続時にユーザー名・パスワードを使った認証を使用できるようにします。
- --socks5-gssapi
- SOCKS5 プロキシサーバー接続時にGSS-API認証を使用できるようにします。
- --socks5-gssapi-nec
- GSS-API での保護モードを送り合う通信において、そのデータを保護しないで送受信するようにします。
- --socks5-gssapi-service <name> (※ 非推奨)
- プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します。
- --socks5-hostname host[:port]
- SOCKS5h プロキシサーバーを指定します。
- --speed-limit <speed> / -Y<speed>
- ダウンロード時の通信速度が一定時間指定値を下回った場合失敗扱いとします。
- --speed-time <seconds> / -y<seconds>
- ダウンロード時の通信速度が指定時間一定値を下回った場合失敗扱いとします。
- --ssl
- SSL/TLS を利用するように指定します。
- --ssl-allow-beast
- SSL3 / TLS 1.0 での接続においてセキュリティ脆弱性への回避策を用いないようにします。
- --ssl-no-revoke
- 証明書の期限切れチェックを行わないようにします。
- --ssl-reqd
- SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
- --ssl-revoke-best-effort
- 証明書の期限切れチェックが「失効サーバーが無いまたはオフライン」で不可能な場合チェックを行わないようにします。
- --sslv2 / -2 (※ 非推奨)
- SSLv2 を使うように指定します。
- --sslv3 / -3 (※ 非推奨)
- SSLv3 を使うように指定します。
- --stderr <file>
- 標準エラー出力に出力される内容をファイルに出力します。
- --suppress-connect-headers
- CONNECT 処理でのヘッダー情報を出力しないようにします。
- --tcp-fastopen
- TCP ソケットの接続時に TCP Fast Open を使用します。
- --tcp-nodelay
- TCP ソケットの接続時に TCP_NODELAY オプションを設定します。
- --telnet-option opt=val / -topt=val
- telnet 接続において各種オプションを指定して送信します。
- --tftp-blksize <value>
- BLKSIZE オプションの値を指定します。
- --tftp-no-options
- オプションを送信しないように指定します。
- --time-cond <time> / -z<time>
- リクエスト時に特定の時刻以降に変更されたデータを取得することを示す情報を付加します。
- --tls-earlydata
- TLS 1.3 で Early Data (0-RTT) を使用するようにします。
- --tls-max <version>
- TLS バージョンの最大値を指定します。
- --tls13-ciphers <ciphersuite-list> (※ 使用不可)
- TLS 1.3 認証時に使う暗号方式のリストを指定します。
- --tlsauthtype <type> (※ 使用不可)
- TLS 接続における認証方式を指定します。
- --tlspassword <password> (※ 使用不可)
- TLS 接続において認証にユーザー名・パスワードを使用する際のパスワードを指定します。
- --tlsuser <user> (※ 使用不可)
- TLS 接続において認証にユーザー名・パスワードを使用する際のユーザー名を指定します。
- --tlsv1 / -1
- TLS 1.x (TLS 1.0 以降)を使用するように指定します。
- --tlsv1.0
- TLS 1.0、あるいは TLS 1.0 以降を使用するように指定します。
- --tlsv1.1
- TLS 1.1、あるいは TLS 1.1 以降を使用するように指定します。
- --tlsv1.2
- TLS 1.2、あるいは TLS 1.2 以降を使用するように指定します。
- --tlsv1.3 (※ 使用不可)
- TLS 1.3 (以降)を使用するように指定します。
- --tr-encoding
- Transfer-Encoding に圧縮を利用したい旨をリクエストします。
- --trace <file>
- 送受信時の完全なデータやり取りをファイルに出力します。
- --trace-ascii <file>
- --trace オプションと同様ですが、非ASCII文字をダミー文字(「.」)に置き換えて出力します。
- --trace-config <names>
- 特定のコンポーネント・カテゴリーのログを有効にします。
- --trace-ids
- --trace オプションや --verbose オプションでの出力にIDを含めるようにします。
- --trace-time
- --trace オプションや --verbose オプションでの出力にタイムスタンプを含めるようにします。
- --unix-socket <file> (※ 使用不可)
- 接続先を指定の Unix Domain Socket ファイルとします。
- --upload-file <file> / -T<file>
- 指定のURLにファイルをアップロードします。
- --upload-flags <flags>
- アップロード時のフラグを指定します。
- --url <url>
- リクエストするURLを指定します。
- --url-query <data>
- URLに付加するデータ(Query String)を指定します。
- --use-ascii / -B
- ASCII転送モードを利用します。
- --user user:password / -uuser:password
- サーバーの認証に用いるユーザー名およびパスワードを指定します。
- --user-agent <name> / -A<name>
- User-Agent ヘッダーを指定します。
- --variable <statement>
- Curl コマンドライン上で使用できる変数を設定します。
- --verbose / -v
- Curl よる通信時に詳細なやり取りを出力します。
- --version / -V
- Curl のバージョン情報を出力します。
- --vlan-priority <number> (※ 使用不可)
- VLANタグ付きパケットの Priority Code Point (PCP) を指定します。
- --write-out <format> / -w<format>
- 一連の送受信が終わった後に Curl に出力させたいテキストを指定します。
- --xattr (※ 無視される)
- --output でファイルに出力する際、ファイルの拡張属性に特定のデータを書き込みます。
カテゴリー別オプション
※ 後続の「オプション詳細」は長いオプション名のアルファベット順で記載しています。
※ 使用可否については Windows 10/11 版を Windows 上で実行するケースに対する可否となります。Linux 上で実行する場合などは事情が異なります。(可能な範囲で各オプションに条件を記載しています。)
- 基本引数
- 接続オプション
- プロキシオプション
- 送信/リクエストオプション
- 受信/出力オプション
- 認証オプション
- その他の共通オプション
- HTTPオプション
- FTPオプション
- SSL/TLS/暗号化オプション
- DNSオプション
- POP3オプション
- SMTPオプション
- IMAPオプション
- SFTPオプション (実質使用不可)
- TFTPオプション
- 基本引数 (<url>)
- <url>
- リクエスト先のURLを指定します。
- 接続オプション
- --abstract-unix-socket <file> (※ 利用不可)
- 接続先を指定の Abstract Unix Domain Socket ファイルとします。
- --connect-timeout <seconds>
- 接続時のタイムアウト時間を指定します。
- --connect-to HOST1:PORT1:HOST2:PORT2
- 指定のホスト・ポートへの接続を別のホスト・ポートへの接続に置き換えます。
- --dns-servers <addresses> (※ 使用不可)
- ホスト名の名前解決に使用するDNSサーバーのアドレスを指定します。
- --doh-cert-status (※ 使用不可)
- DNS-over-HTTPS のサーバーに対して --cert-status オプションを指定します。
- --doh-insecure
- DNS-over-HTTPS のサーバーに対して --insecure オプションを指定します。
- --doh-url <url>
- ホスト名の名前解決に DNS-over-HTTPS を利用します。
- --happy-eyeballs-timeout-ms <millisec>
- Curl による Happy Eyeballs (IPv6 と IPv4 のうちいずれかを使用する処理)のタイムアウトを指定します。
- --interface <name>
- 接続時に利用したいインターフェイス名を指定します。
- --ip-tos <string> (※ 使用不可)
- IPv4 の Type of Service (TOS) または IPv6 の Traffic Class フィールドを設定します。
- --ipv4 / -4
- IPv4 のアドレスを使用するようにします。
- --ipv6 / -6
- IPv6 のアドレスを使用するようにします。
- --keepalive-cnt <count>
- TCPソケットに設定する Keep-Alive の再送回数(probe count)を指定します。
- --keepalive-time <seconds>
- TCPソケットに設定する Keep-Alive の時間を指定します。
- --local-port <num/range>
- 接続時に使うローカル側のポート番号を指定(制限)します。
- --mptcp (※ 使用不可)
- 接続時に Multipath TCP (MPTCP) を有効にします。
- --no-keepalive
- TCP における Keep-Alive 設定を無効化します。
- --noproxy <no-proxy-list>
- 接続時にプロキシサーバーを利用しないホスト名を指定します。
- --parallel / -Z
- URL ごとに処理を並列に実行します。
- --parallel-immediate
- 並列実行する際、既存の接続を再利用しないようにします。
- --parallel-max <num>
- 並列処理の最大数を指定します。
- --preproxy [protocol://]host[:port]
- HTTP/HTTPS プロキシサーバーに接続する前に接続する SOCKS プロキシサーバーを指定します。
- --proto <protocols>
- Curl での通信処理で利用するプロトコル/スキームを指定します。
- --proto-default <protocol>
- URL内にプロトコル/スキームが指定されていなかった場合の既定の値を指定します。
- --proto-redir <protocols>
- リダイレクト時の遷移先として許可/拒否するプロトコル/スキームを指定します。
- --proxy [protocol://]host[:port] / -x[protocol://]host[:port]
- 接続時に利用するプロキシサーバーを指定します。
- --rate N/unit
- 複数のリクエストを行う際に時間あたりの最大リクエスト数を指定します。
- --resolve host:port:addr
- 通常の名前解決処理の代わりに指定のアドレスを使うようにします。
- --retry <num>
- 通信結果が「一時エラー」であった場合、最大で指定した回数だけリトライを行います。
- --retry-connrefused
- 「一時エラー」とする通信結果に接続拒否エラーも含めて取り扱います。
- --retry-delay <seconds>
- リトライタイミングを、指定した秒数を経過した後のタイミングに固定します。
- --retry-max-time <seconds>
- 「リトライ待機時間」が指定した秒数を上回る場合に処理を中止します。
- --speed-limit <speed> / -Y<speed>
- ダウンロード時の通信速度が一定時間指定値を下回った場合失敗扱いとします。
- --speed-time <seconds> / -y<seconds>
- ダウンロード時の通信速度が指定時間一定値を下回った場合失敗扱いとします。
- --tcp-fastopen
- TCP ソケットの接続時に TCP Fast Open を使用します。
- --tcp-nodelay
- TCP ソケットの接続時に TCP_NODELAY オプションを設定します。
- --telnet-option opt=val / -topt=val
- telnet 接続において各種オプションを指定して送信します。
- --unix-socket <file> (※ 使用不可)
- 接続先を指定の Unix Domain Socket ファイルとします。
- --vlan-priority <number> (※ 使用不可)
- VLANタグ付きパケットの Priority Code Point (PCP) を指定します。
- プロキシオプション
- --haproxy-protocol
- 接続時に HAProxy の「PROXY」ヘッダー(version 1)を送信します。
- --noproxy <no-proxy-list>
- 接続時にプロキシサーバーを利用しないホスト名を指定します。
- --preproxy [protocol://]host[:port]
- HTTP/HTTPS プロキシサーバーに接続する前に接続する SOCKS プロキシサーバーを指定します。
- --proxy [protocol://]host[:port] / -x[protocol://]host[:port]
- 接続時に利用するプロキシサーバーを指定します。
- --proxy-anyauth
- プロキシ接続で認証を行う際に各種認証方式をすべてトライします。
- --proxy-basic
- プロキシ接続で認証を行う際にBASIC認証を利用します。
- --proxy-ca-native (※ 無視される)
- HTTPSプロキシサーバーに接続する際に証明書データをOSから取得して使うようにします。
- --proxy-cacert <file>
- HTTPSプロキシサーバーに接続する際に用いるCAファイルのパスを指定します。
- --proxy-capath <dir>
- HTTPSプロキシサーバーに接続する際に用いるCAデータ検索先ディレクトリのパスを指定します。
- --proxy-cert <cert[:password]>
- HTTPSプロキシサーバーに接続する際に使うクライアント認証のファイルを指定します。
- --proxy-cert-type <type>
- --proxy-cert で指定する証明書ファイルの形式を指定します。
- --proxy-ciphers <list>
- HTTPSプロキシサーバーに接続する際に使う暗号方式のリストを指定します。
- --proxy-crlfile <file>
- HTTPSプロキシサーバーに接続する際に用いる証明書失効リストのファイルを指定します。
- --proxy-digest
- プロキシ接続で認証を行う際にDigest認証を利用します。
- --proxy-header <header/@file>
- HTTPでのプロキシ接続時にプロキシサーバーに送る追加のヘッダーを指定します。
- --proxy-http2
- HTTPSプロキシサーバーに接続する際、HTTP/2 の利用を試みます。
- --proxy-insecure
- HTTPSプロキシサーバーに接続する際に、SSL通信の過程でセキュリティ上問題がある場合でも接続を続行します。
- --proxy-key <key>
- HTTPSプロキシサーバーに接続する際の TLS での認証に使う秘密鍵を指定します。
- --proxy-key-type <type>
- --proxy-key オプションで指定する秘密鍵の形式を指定します。
- --proxy-negotiate
- プロキシ接続で認証を行う際にSPNEGO認証を利用します。
- --proxy-ntlm
- プロキシ接続で認証を行う際にNTLM認証を利用します。
- --proxy-pass <phrase>
- --proxy-key で指定した秘密鍵のパスワードを指定します。
- --proxy-pinnedpubkey <hashes> (※ 使用不可)
- HTTPSプロキシサーバーに対してその公開鍵を指定の値で検証するように指定します。
- --proxy-service-name <name>
- プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します。
- --proxy-ssl-allow-beast
- HTTPSプロキシサーバーに対する SSL3 / TLS 1.0 での接続においてセキュリティ脆弱性への回避策を用いないようにします。
- --proxy-tlsauthtype <type>
- HTTPSプロキシサーバーに対する TLS 接続における認証方式を指定します。
- --proxy-tlspassword <phrase>
- HTTPSプロキシサーバーに対する TLS 接続においてパスワードを指定します。
- --proxy-tlsuser <name>
- HTTPSプロキシサーバーに対する TLS 接続においてユーザー名を指定します。
- --proxy-tlsv1
- HTTPSプロキシサーバーに対する SSL/TLS 接続において TLS 1.x (TLS 1.0 以降)を使用するように指定します。
- --proxy-user <user>:<password> / -U<user>:<password>
- プロキシサーバーの認証に用いるユーザー名およびパスワードを指定します。
- --proxy1.0 <host>[:<port>]
- HTTP 1.0を利用してプロキシ接続を行います。
- --proxytunnel / -p
- プロキシ接続において、実際の接続先がHTTPである場合においても CONNECT 処理を利用します。
- --socks4 host[:port]
- SOCKS4 プロキシサーバーを指定します。
- --socks4a host[:port]
- SOCKS4a プロキシサーバーを指定します。
- --socks5 host[:port]
- SOCKS5 プロキシサーバーを指定します。
- --socks5-basic
- SOCKS5 プロキシサーバー接続時にユーザー名・パスワードを使った認証を使用できるようにします。
- --socks5-gssapi
- SOCKS5 プロキシサーバー接続時にGSS-API認証を使用できるようにします。
- --socks5-gssapi-nec
- GSS-API での保護モードを送り合う通信において、そのデータを保護しないで送受信するようにします。
- --socks5-gssapi-service <name> (※ 非推奨)
- プロキシ接続でSPNEGO認証を行う際に用いるサービス名を変更します。
- --socks5-hostname host[:port]
- SOCKS5h プロキシサーバーを指定します。
- --suppress-connect-headers
- CONNECT 処理でのヘッダー情報を出力しないようにします。
- 送信/リクエストオプション
- --continue-at <offset> / -C<offset>
- ファイル転送を途中のバイトから始めます。
- --create-file-mode <mode> (※ 実質効果なし)
- ファイル作成時のパーミッションを指定します。
- --form name=content / -Fname=content
- サーバーに指定のデータを送信します。
- --form-string name=content
- サーバーに指定のデータをそのまま送信します。
- --globoff / -g
- URLにおける glob 処理を行わないようにします。
- --next / -:
- オプションの分離を行います。
- --path-as-is
- URLにおけるパス部分に「./」や「../」が含まれていた場合もそのままリクエストに含めるようにします。
- --retry <num>
- 通信結果が「一時エラー」であった場合、最大で指定した回数だけリトライを行います。
- --retry-connrefused
- 「一時エラー」とする通信結果に接続拒否エラーも含めて取り扱います。
- --retry-delay <seconds>
- リトライタイミングを、指定した秒数を経過した後のタイミングに固定します。
- --retry-max-time <seconds>
- 「リトライ待機時間」が指定した秒数を上回る場合に処理を中止します。
- --upload-file <file> / -T<file>
- 指定のURLにファイルをアップロードします。
- --url <url>
- リクエストするURLを指定します。
- 受信/出力オプション
- --create-dirs
- 出力ファイル名にディレクトリ名が含まれている場合、必要に応じてそのディレクトリも作成します。
- --fail-early
- 途中で処理に失敗した場合は以降の処理を継続しないようにします。
- --include
- Curl によるレスポンス出力にレスポンスヘッダーも含めます。
- --libcurl <file>
- 「libcurl を使った同じ処理を行うC言語のソースコード」を出力します。
- --limit-rate <speed>
- アップロード・ダウンロードのスピードを制限します。
- --max-filesize <bytes>
- ファイルのダウンロード時に適用するファイルの最大サイズを指定します。
- --metalink (※ 無視される)
- Metalink を使った通信処理を行います。
- --no-buffer / -N
- レスポンスデータ出力時のバッファリングを無効化します。
- --no-clobber
- 既に存在するファイルを上書きせず、連番のファイルを作成します。
- --no-progress-meter
- 進捗表示を表示しないようにします。
- --output <file> / -o<file>
- 受信したレスポンスをファイルに出力します。
- --output-dir <directory>
- ファイルに出力する際の出力先ディレクトリを指定します。
- --progress-bar / -#
- 進捗表示を単純なプログレスバー表示のみで行うようにします。
- --range <range> / -r<range>
- データの部分取得をリクエストします。
- --remote-name / -O
- URLからファイル名を抽出してそのファイル名を持ったファイルにレスポンスを書き込みます。
- --remote-name-all
- すべてのURLに対して --remote-name オプションを適用するモードとします。
- --remote-time / -R
- 出力ファイルのタイムスタンプをサーバーから取得できる日時に揃えます。
- --remove-on-error
- Curl がエラー終了(失敗)するとき出力ファイルを削除します。
- --show-error / -S
- --silent オプションが指定されていても、エラーメッセージは出力するようにします。
- --show-headers / -i
- Curl によるレスポンス出力にレスポンスヘッダーも含めます。
- --silent / -s
- レスポンス以外何も出力しないようにします。
- --skip-existing
- 出力先ファイルが既に存在するときはリクエストをスキップします。
- --stderr <file>
- 標準エラー出力に出力される内容をファイルに出力します。
- --trace <file>
- 送受信時の完全なデータやり取りをファイルに出力します。
- --trace-ascii <file>
- --trace オプションと同様ですが、非ASCII文字をダミー文字(「.」)に置き換えて出力します。
- --trace-config <names>
- 特定のコンポーネント・カテゴリーのログを有効にします。
- --trace-ids
- --trace オプションや --verbose オプションでの出力にIDを含めるようにします。
- --trace-time
- --trace オプションや --verbose オプションでの出力にタイムスタンプを含めるようにします。
- --verbose / -v
- Curl よる通信時に詳細なやり取りを出力します。
- --write-out <format> / -w<format>
- 一連の送受信が終わった後に Curl に出力させたいテキストを指定します。
- --xattr (※ 無視される)
- --output でファイルに出力する際、ファイルの拡張属性に特定のデータを書き込みます。
- 認証オプション
- --delegation <LEVEL>
- GSS-API を使った Kerberos 認証で、認証情報の委譲に関するオプションを指定します。
- --login-options <options> (IMAP, POP3, SMTP)
- ログイン時のオプションを指定します。
- --netrc / -n
- Curl が「.netrc」ファイルを使用するように指定します。
- --netrc-file <filename>
- 「.netrc」ファイルからではなく指定ファイルから認証情報の取得を行います。
- --netrc-optional
- netrc ファイルからの読み取りを「オプショナル」とします。
- --oauth2-bearer <token> (IMAP, POP3, SMTP)
- OAuth2 認証の Bearer トークンを指定します。
- --sasl-authzid <id>
- SASL PLAIN認証処理に対する認可ID(authzid)を指定します。
- --sasl-ir
- SASL認証をサポートする処理にて、最初のパケットで初期レスポンスをサーバーに送信するようにします。
- --user user:password / -uuser:password
- サーバーの認証に用いるユーザー名およびパスワードを指定します。
- その他の共通オプション
- --config <file> / -K<file>
- 「設定ファイル」を指定します。
- --disable / -q
- .curlrc ファイルの読み込みを無効化します。
- --dump-module-paths
- Curl 実行時に読み込まれたDLLのパス一覧を出力します。
- --expand-XXXX
- 後続の文字列に含まれる変数を展開します。(XXXX は任意のオプション名)
- --help / -h
- コマンドラインで使用できるオプション一覧を含む使い方を表示します。
- --manual / -M (※ 使用不可)
- Curl のマニュアルを出力します。
- --max-time <time> / -m<time>
- 全体の処理時間の最大(リミット)を指定します。
- --variable <statement>
- Curl コマンドライン上で使用できる変数を設定します。
- --version / -V
- Curl のバージョン情報を出力します。
- HTTPオプション
- 認証オプション
- --anyauth
- Curl が認証方式を自動判別するようにします。
- --basic
- BASIC 認証を用いるよう指定します。
- --digest
- Digest 認証を用いるよう指定します。
- --negotiate
- Negotiate (SPNEGO) 認証を用いるよう指定します。
- --ntlm
- NTLM 認証を用いるよう指定します。
- --ntlm-wb (※ 使用不可)
- NTLM 認証を用いるよう指定します。NTLM 認証時に winbind ヘルパーを利用するようにします。
- --service-name <name>
- SPNEGO認証で用いるサービス名を変更します。
- 送信/リクエストオプション
- --compressed (※ 使用不可)
- レスポンスを圧縮されたデータにするようにリクエストします。
- --cookie <data> / -b<data>
- リクエストに含める Cookie を指定します。
- --data <data> / -d<data>
- POST リクエストする際のデータを指定します。
- --data-ascii <data>
- POST リクエストする際のデータを指定します。
- --data-binary <data>
- POST リクエストする際のデータを指定します。改行文字は削られません。
- --data-raw <data>
- POST リクエストする際のデータを指定します。「@」文字を解釈しません。
- --data-urlencode <data>
- POST リクエストする際のデータを指定します。一定の規則に従ってURLエンコード処理を行います。
- --disallow-username-in-url
- URLにユーザー名を含めることをNGとします。
- --etag-compare <file>
- ファイルに書かれた ETag を使って ETag 付きのリクエストを行い、ETag が一致したら変更なしのレスポンスを受け取るようにします。
- --get / -G
- GET リクエストでデータを送信します。
- --haproxy-protocol
- 接続時に HAProxy の「PROXY」ヘッダー(version 1)を送信します。
- --head / -I
- ヘッダーのみを取得します。
- --header <header/@file> / -H<header/@file>
- 追加のリクエストヘッダーを指定します。
- --http1.0 / -0
- HTTP バージョン 1.0 を使っての通信を試みます。
- --http1.1
- HTTP バージョン 1.1 を使っての通信を試みます。
- --http2 (※ 使用不可)
- HTTP バージョン 2 を使っての通信を試みます。
- --http2-prior-knowledge (※ 使用不可)
- Upgrade ヘッダーや問い合わせを利用せず、直接 HTTP/2 を利用して通信します。
- --http3 (※ 使用不可)
- HTTP バージョン 3 を使っての通信を試みます。
- --http3-only (※ 使用不可)
- HTTP バージョン 3 のみを使って通信を行います。
- --json <data>
- JSON データの送受信を行います。
- --junk-session-cookies / -j
- Cookie 読み込み時すべての「セッションCookie」を破棄します。
- --location / -L
- Location ヘッダーがあればそのURLに対してリクエスト(リダイレクト)を行います。
- --location-trusted
- リダイレクトを行います。リダイレクト後にもその認証情報を含めてリクエストを行います。
- --max-redirs <num>
- 最大のリダイレクト回数を指定します。
- --post301
- POST リクエストに対するステータスコードが 301 のとき、リダイレクト先でも POST を行うようにします。
- --post302
- POST リクエストに対するステータスコードが 302 のとき、リダイレクト先でも POST を行うようにします。
- --post303
- POST リクエストに対するステータスコードが 303 のとき、リダイレクト先でも POST を行うようにします。
- --raw
- 各種転送処理におけるデコード処理を行わず、そのまま出力します。
- --referer <URL> / -e<URL>
- 「リファラー」を指定します。
- --request <command> / -X<command>
- リクエストメソッドを指定します。
- --request-target <target>
- 実際のリクエストパス名を指定します。
- --time-cond <time> / -z<time>
- リクエスト時に特定の時刻以降に変更されたデータを取得することを示す情報を付加します。
- --tr-encoding
- Transfer-Encoding に圧縮を利用したい旨をリクエストします。
- --user-agent <name> / -A<name>
- User-Agent ヘッダーを指定します。
- --url-query <data>
- URLに付加するデータ(Query String)を指定します。
- 受信/出力オプション
- --cookie-jar <filename> / -c<filename>
- Cookie データを指定のファイルに保存します。
- --dump-header <filename> / -D<filename>
- レスポンスのヘッダー情報を指定したファイルに保存します。
- --etag-save <file>
- レスポンスヘッダーに含まれる ETag を指定のファイルに保存します。
- --expect100-timeout <seconds>
- ステータスコード 100 のレスポンスを受けたときの最大待機時間を指定します。
- --fail / -f
- エラーのステータスコードが返された場合エラー終了扱いにします。
- --fail-with-body
- エラーのステータスコードが返された場合エラー終了扱いにしますが、レスポンスを出力します。
- --ignore-content-length
- レスポンス受信時に Content-Length ヘッダーを無視して受信を行います。
- --remote-header-name / -J
- ファイル名をヘッダーから得てレスポンスをそのファイル名で保存するようにします。
- FTPオプション
- 認証オプション
- --ftp-account <data>
- ユーザー認証後に ACCT コマンドでデータを送るように指定します。
- --ftp-alternative-to-user <command>
- USER コマンドと PASS コマンドの送信に失敗した場合、追加で送るコマンドを指定します。
- --krb <level>(※ 使用不可)
- 認証プロセスに Kerberos 認証を利用します。
- 送信/リクエストオプション
- --append / -a
- ファイルをアップロードする際にファイルを上書きするのではなく追加書き込みをするようにします。
- --crlf
- アップロードするデータの改行コード LF を CR-LF に置き換えます。
- --disable-eprt
- EPRT および LPRT コマンドの利用を無効化します。
- --disable-epsv
- EPSV コマンドの利用を無効化します。
- --ftp-create-dirs
- ファイルアップロード時、アップロード先に不足するディレクトリの作成を行います。
- --ftp-method <method>
- URLに含まれるファイルへの到達方法を指定します。
- --ftp-pasv
- パッシブモードを利用するように指定します。
- --ftp-port address[:port] / -Paddress[:port]
- アクティブモードを利用するように指定します。
- --ftp-pret
- PASV や EPSV の前に PRET コマンドを送信するようにします。
- --ftp-skip-pasv-ip
- PASV コマンドに対して受け取った情報にあるIPアドレスを使用しません。
- --ftp-ssl (旧式)
- SSL/TLS を利用するように指定します。
- --ftp-ssl-ccc
- ユーザー認証後に CCC コマンドを送るように指定します。
- --ftp-ssl-ccc-mode <mode> (※ 無視される)
- --ftp-ssl-ccc オプションを指定した際、暗号化処理を閉じるモードを指定します。
- --ftp-ssl-control
- SSL/TLS を利用するように指定します。ただしデータ通信に対しては通常の接続とします。
- --ftp-ssl-reqd (旧式)
- SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
- --head / -I
- ヘッダーのみを取得します。
- --quote <command> / -Q<command>
- ファイル転送の前に指定のコマンドを実行します。
- --ssl
- SSL/TLS を利用するように指定します。
- --ssl-reqd
- SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
- --time-cond <time> / -z<time>
- リクエスト時に特定の時刻以降に変更されたデータを取得することを示す情報を付加します。
- --use-ascii / -B
- ASCII転送モードを利用します。
- 受信/出力オプション
- --ignore-content-length
- データサイズ取得のための RETR コマンドを送信しません。
- --list-only / -l
- ディレクトリ内の一覧を取得する際に「名前のみ」を取得するようにします。
- SSL/TLS/暗号化オプション
- --ca-native (※ 無視される)
- 証明書データをOSから取得して使うようにします。
- --cacert <certfile> (※ 無視される)
- 証明書のセットを持つファイルを指定します。
- --capath <dir> (※ 無視される)
- 証明書データのファイルが1つ以上格納されたディレクトリを指定します。
- --cert <certificate>[:<password>] / -E<certificate>[:<password>] (※ 無視される)
- クライアント認証のファイルを指定します。
- --cert-status (※ 使用不可)
- OCSP stapling を行います。
- --cert-type <type> (※ 無視される)
- --cert オプションで指定する証明書の形式を指定します。
- --ciphers <list-of-ciphers> (※ 無視される)
- TLS 認証時に使う暗号方式のリストを指定します。
- --crlfile <file> (※ 無視される?)
- 証明書失効リストのファイルを指定します。
- --dump-ca-embed
- 埋め込まれた証明書データを出力します。
- --egd-file <file> (※ 無視される)
- (廃止予定) EGDソケットのファイル名を指定します。
- --engine <name> (※ 実質使用不可)
- 暗号処理時に使うエンジンの名前を指定します。
- --false-start (※ 使用不可)
- 「False start」モードの利用を試みます。
- --insecure / -k
- SSL通信の過程でセキュリティ上問題がある場合でも通信を続行します。
- --key <key> (※ 実質意味なし)
- TLS での認証や SSH での認証に使う秘密鍵を指定します。
- --key-type <type> (※ 実質意味なし)
- --key オプションで指定する秘密鍵の形式を指定します。
- --no-alpn (※ 無視される)
- ALPN を使用しないようにします。
- --no-npn (※ 無視される)
- NPN を使用しないようにします。
- --no-sessionid
- SSL/TLS 通信において、セッションの再利用を行わないようにします。
- --pass <phrase> (※ 実質意味なし)
- --cert または --key で指定したファイルのパスワードを指定します。
- --pinnedpubkey <hashes> (※ 使用不可)
- 接続先の公開鍵を指定の値で検証するように指定します。
- --random-file <file>
- (廃止予定) 「乱数ファイル」のファイル名を指定します。
- --ssl-allow-beast
- SSL3 / TLS 1.0 での接続においてセキュリティ脆弱性への回避策を用いないようにします。
- --ssl-no-revoke
- 証明書の期限切れチェックを行わないようにします。
- --ssl-revoke-best-effort
- 証明書の期限切れチェックが「失効サーバーが無いまたはオフライン」で不可能な場合チェックを行わないようにします。
- --sslv2 / -2 (※ 非推奨)
- SSLv2 を使うように指定します。
- --sslv3 / -3 (※ 非推奨)
- SSLv3 を使うように指定します。
- --tls-earlydata
- TLS 1.3 で Early Data (0-RTT) を使用するようにします。
- --tls-max <version>
- TLS バージョンの最大値を指定します。
- --tls13-ciphers <ciphersuite-list> (※ 使用不可)
- TLS 1.3 認証時に使う暗号方式のリストを指定します。
- --tlsauthtype <type> (※ 使用不可)
- TLS 接続における認証方式を指定します。
- --tlspassword <password> (※ 使用不可)
- TLS 接続において認証にユーザー名・パスワードを使用する際のパスワードを指定します。
- --tlsuser <user> (※ 使用不可)
- TLS 接続において認証にユーザー名・パスワードを使用する際のユーザー名を指定します。
- --tlsv1 / -1
- TLS 1.x (TLS 1.0 以降)を使用するように指定します。
- --tlsv1.0
- TLS 1.0、あるいは TLS 1.0 以降を使用するように指定します。
- --tlsv1.1
- TLS 1.1、あるいは TLS 1.1 以降を使用するように指定します。
- --tlsv1.2
- TLS 1.2、あるいは TLS 1.2 以降を使用するように指定します。
- --tlsv1.3 (※ 使用不可)
- TLS 1.3 (以降)を使用するように指定します。
- DNSオプション
- --dns-interface <interface> (※ 使用不可)
- DNSサーバーを利用して名前解決する際に使うネットワークインターフェイス名を指定します。
- --dns-ipv4-addr <address> (※ 使用不可)
- DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。
- --dns-ipv6-addr <address> (※ 使用不可)
- DNSサーバーを利用して名前解決する際に、ベースとなるローカルアドレスを指定します。
- POP3オプション
- --list-only / -l
- 特定のメールを取得する際に RETR ではなく LIST コマンドを使って情報取得をするようにします。
- --ssl
- SSL/TLS を利用するように指定します。
- --ssl-reqd
- SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
- SMTPオプション
- --mail-auth <address>
- メッセージの認証アドレスを指定します。
- --mail-from <address>
- メールの送信者アドレスを指定します。
- --mail-rcpt <address>
- 宛先アドレスを指定します。
- --ssl
- SSL/TLS を利用するように指定します。
- --ssl-reqd
- SSL/TLS を利用するように指定します。使用できない場合は失敗扱いにします。
- IMAPオプション
- --upload-flags <flags>
- アップロード時のフラグを指定します。
- SFTPオプション (実質使用不可)
- --hostpubmd5 <md5>
- 接続先が提供する公開鍵の MD5 チェックサムを指定します。
- --pubkey <key>
- 公開鍵を指定します。
- --quote <command> / -Q<command>
- ファイル転送の前に指定のコマンドを実行します。
- TFTPオプション
- --tftp-blksize <value>
- BLKSIZE オプションの値を指定します。
- --tftp-no-options
- オプションを送信しないように指定します。
オプション詳細
※ 長いオプション名のアルファベット順で記載しています。
解説
大まかな概要
Curl コマンドラインプログラムは、URLを指定してデータ転送(ダウンロードやアップロードなど)を行うことができるプログラムであり、単純な使用方法としては、単にパラメーターとしてURLを指定するだけで、標準出力にダウンロードしたデータを出力させることができます。
> curl https://www.example.com/ <!doctype html> <html> <head> ... (省略)
なお、取得した内容をファイルに出力したい場合は -o オプションを利用します。
また、ダウンロードだけでなくアップロード(データ送信)も可能であるため、例えばHTTP通信ではPOSTをコマンドラインから実行することも可能です。
Curl がHTTPやHTTPSなどのどのプロトコルに対応しているかは「curl -V
」でバージョン情報を出力することで確認が可能です。
(以下 Windows 10.0.17763.* での実行例)
> curl -V curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: [unreleased] Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL
※ cURLそのものはライブラリである「libcurl」も含むプロジェクトであり、コマンドラインの「curl」は「libcurl」を基盤としています。コマンドラインと区別するためライブラリの方を明示的に「libcurl」と呼び、単に「curl」と呼んだ場合はコマンドラインプログラムを指している場合が多くあります。このページでも、コマンドラインプログラムを単に「Curl」と表記します。
バッチファイルなどからの利用
Curl 自体は単純に利用することができるプログラムですが、その利便性から、Curl をバッチファイルやPowerShellといった各種スクリプトプログラムなどから利用し、取得したデータをもとに処理の分岐や別の処理の実行を行う、ファイル等にまとまったデータを解釈してサーバーにデータを送信するのを自動化する、などもできます。
※ 通信処理をプログラム側で実装するのは、ライブラリが提供されていたとしても単純ではない場合がほとんどであるため、スクリプトに限らず簡易的に実装したいプログラム(C/C++やNode.jsなど)からも利用される場合があります。
PowerShell の例:
# Consoleのエンコードを一時キープ
$enc = [Console]::OutputEncoding
# 取得先の(想定)文字コードに合わせてUTF-8に変更
[Console]::OutputEncoding = [Text.Encoding]::UTF8
# リモートからデータを取得しテキストとして変数に格納
$content = curl.exe -s 'https://www.pg-fl.jp/release.xml'
# Consoleのエンコードを戻す
[Console]::OutputEncoding = $enc
# 取得したテキストをXMLとして解析し XmlDocument を得る
$doc = [xml] $content
# (以降 $doc に対してXMLの操作が可能)
※ 上記はあくまでも例であり、PowerShellでは Invoke-WebRequest
(既定での「curl」の alias 先)によって手軽に通信処理ができるため、多くの場合そちらを利用するのが適しています。
Curlにおける日付構文
(参照: libcurl - curl_getdate() man page 3)
--time-cond オプションなどで日付・時刻の指定が必要な場合、以下の書式を1つ、またはスペース(あるいは「,」(コンマ))区切りで複数使って日付・時刻を指定します(ただし日付を複数、時刻を複数指定するような形だと無効な表記となります)。日付指定は必須ですが時刻指定は必須ではなく、無かった場合は「00:00:00」(0時0分0秒; タイムゾーン指定が無ければUTC(GMT)、あればそのタイムゾーンでの 0時0分0秒)として扱われます。また、タイムゾーン指定が無ければUTC(GMT)として扱われます。
- 日付指定 (calendar date items)
- 「月」を3文字の英語表記(Jan, Nov など)、「日」を1桁または2桁の数値、「年」を1桁~4桁の数値で記述し、それらを半角スペース・コンマまたは「-」(ハイフン)で繋げて指定します。「年」かどうかは、数字が0、32以上、あるいは3桁以上であれば「年」と判断されますが、区別できない場合は先に来た数値が「日」、後の数値が「年」として扱われます。なお、この方式の場合「月」は数値では指定できません。
- 例: Jul-7-10 … 2010年7月7日 / 10-Jul-7 … 2007年7月10日 / 2020 Dec 10 … 2020年12月10日
- 時刻指定 (time of the day items)
- いわゆる「HH:MM:SS」の書式、すなわち「時」の2桁(00から23)・「分」の2桁・「秒」の2桁を「:」(コロン)で繋げた表記で指定します。
- 例: 18:34:56 … 18時(午後6時)34分56秒
- タイムゾーン指定 (time zone items)
- 時刻計算に使うタイムゾーンを3文字表記(UTC, PDT, JST など)や相対時刻表記(-0700 や +0900 など、コロンを入れることは出来ません)で指定します。
- 例: 12:00:00 JST … 日本時間12時0分0秒(UTCで3時0分0秒) / 03:00:00-0700 … UTCで10時0分0秒
- 曜日指定 (day of the week items)
- 3文字の英語表記(Sun, Thu など)を指定できますが、日付指定から自動計算されるため実際には使われません。
- 数値指定 (pure numbers)
- 8桁の数値があった場合、それはいわゆる「YYYYMMDD」の数値、すなわち「『年』4桁 + 『月』2桁 + 『日』2桁」として扱われます。範囲外の値が混ざっていた場合は無効な値扱いとなります。
- 例: 20120304 … 2012年3月4日
組み合わせた例: 「12:30:00 JST, 05-May 2020」…UTC(GMT)で「2020年5月5日3時30分0秒」を示します。(この場合コンマは無くても構いません)
設定ファイルについて
Curl は設定ファイル(Configファイル)からオプションを読み込むことをサポートしています。
Curl は、順に以下の設定(環境変数など)を確認して値が設定されている最初のものを利用して「既定の設定ファイル」を読み込みます。
- 環境変数
CURL_HOME
に書かれたパス - [curl 7.73.0 以降] 環境変数
XDG_CONFIG_HOME
に書かれたパス - 環境変数
HOME
に書かれたパス - [Windows 以外]
getpwuid
関数が返すpw_dir
フィールドのパス - [Windows] 環境変数
APPDATA
に書かれたパス - [Windows] 環境変数
USERPROFILE
に書かれたパスにある「Application Data」ディレクトリ
この処理で利用可能なディレクトリを決定すると、「既定の設定ファイル」としてそのディレクトリから「.curlrc」ファイル(Windows の場合は「_curlrc」ファイル)を読み込みます。もしここでファイルが見つからなかった場合は、Windows の場合は「curl.exe」があるディレクトリと同じディレクトリを、Unix系の場合はホームディレクトリを使って(もう一度)設定ファイル読み込みを行います。
また、設定ファイルは --config オプションを使用して明示的に指定することもできます。
設定ファイルは以下の方式で記述します。
- 各オプションを1行ごとに以下の方式で記述する
- 各オプションから「--」を取り除いたものを書く
- 続けて区切り文字として半角スペース、「=」(等号)、または「:」(コロン)を1文字以上書く
- 続けてオプションに指定するパラメーター値を書く
- パラメーター値は「" "」で囲むことが可能
- ただし半角スペースを含む場合か、「=」「:」で始まる値である場合は、「" "」で囲んで記述する
- 「" "」内に限り、エスケープシーケンスとして「\\」「\"」「\t」「\n」「\r」「\v」が利用可能(エスケープシーケンス以外の単独の「\」文字は無視される)
- 1文字オプションを使う場合は先頭に「-」を付けて記述する
- (スペース文字を除いて)「#」で始まる行はコメントとして扱われ、無視される
- (スペース文字以外何も書かれていない行も無視される)
例えば以下のような形になります。(curl ドキュメントから引用しつつ一部説明を追加)
# --- サンプルファイル ---
# 「#」で始まる行はコメント
# 「--url」オプションの利用(以下同様)
url = "example.com"
output = "curlhere.html"
user-agent = "superagent/1.0"
# 別のページの取得
# (新たに --url オプションを入れると別の URL から取得ができる)
url = "example.com/docs/manpage.html"
# 1文字オプションは「-」を付ける
-O
referer = "http://nowhereatall.example.com/"
# --- サンプルファイルここまで ---
例
サンプル1
curl -LO http://www.pg-fl.jp/music/Simple.sf2
「http://www.pg-fl.jp/music/Simple.sf2」にアクセスし、現在のディレクトリに「Simple.sf2」としてダウンロードします。「-L」があるためリダイレクトに従い、実際には「https://www.pg-fl.jp/music/Simple.sf2」をダウンロードします。
サンプル2
curl ftp://ftp.example.com/foo/bar/ --ssl-reqd -Q"CWD /" -uhoge -Tbaz.dat
FTPサーバー「ftp.example.com」にアクセスし、「/foo/bar」ディレクトリに「baz.dat」をアップロードします(--upload-file (-T) オプションの作用)。接続の際、--ssl-reqd オプションでSSL/TLS接続を強制化しています。また、接続完了時のホームディレクトリがルートでない可能性を考慮して、最初に「CWD /
」コマンドを送るように --quote (-Q) オプションで指定します。なお、--user (-u) オプションでユーザー名しか指定していないため、実行時にユーザーに対するパスワードの入力が求められます。
サンプル3 (バッチファイル)
for /F "tokens=1,2 delims=: " %%A in ('curl -s https://www.example.com/_health') do ( if "%%A"=="Service1" ( if "%%B"=="OK" exit /b 0 exit /b 1 ) ) exit /b 2
[拡張構文] 「https://www.example.com/_health」をリクエストし、レスポンスに「Service1: OK」が含まれていれば終了コード 0 を、「Service1」はあるが「OK」ではない場合は終了コード 1 を、「Service1」がなければ終了コード 2 を返します。Curl はレスポンスを標準出力に出力するため、For コマンドを用いることでテキスト解析することができます。(なお、レスポンス以外が混ざるのを防止するため「-s」オプションを付けています。)
サンプル4
-- checklog.curlrc ファイル
url: "ftp://www.example.com/logs/access_log"
output: "access_log.dat"
url = "ftp://www.example.com/logs/error_log"
output = "error_log.dat"
-- コマンドライン
curl -K checklog.curlrc
設定ファイル「checklog.curlrc」を使って Curl を実行します。設定ファイルに事前にURLを記載しておくことで、逐一URLをコマンドラインから指定するのを省略することができます。(Robocopy の「ジョブファイル」と似た使い方ができます。)
なお、上記ではサンプルとして「=」と「:」を使っていますが、どちらを使っても問題ありません。(分かりやすいものを統一して使うのをお勧めします。)