curlの使用ガイドライン
curlの使用方法ガイド
概要
curlは、Webサーバを要求するためによく使用されるコマンドラインツールです.その名前はクライアントのURLツールの意味です.
コマンドラインパラメータは数十種類に達する強力な機能です.熟練すれば、Postmanのようなグラフィックインタフェースツールに取って代わることができます.
本文はその主なコマンドラインパラメータを紹介し、日常の参考として、簡単に調べることができます.内容は主に《curl cookbook》から翻訳された.紙面を節約するために、次の例は実行時の出力を含まないので、初心者は私が以前書いた『curl初心者チュートリアル』を見てもいいです.
パラメータがない場合、curlはGETリクエストを発行します.
上記のコマンドは、
-A
上記のコマンドは
上記のコマンドでは、
-b
上記のコマンドは、ヘッダ
上のコマンドは2つのCookieを送信します.
上記のコマンドは、ローカルファイル
-c
上記のコマンドは、サーバのHTTP応答に設定されたCookieをテキストファイル
-d
上記コマンドは、
--data-urlencode
上記のコードでは、送信されたデータ
-e
上記のコマンドは、
-F
上記のコマンドは、HTTPリクエストにヘッダ
上記のコマンドは、MIMEタイプが
上記のコマンドでは、元のファイル名は
-G
上記のコマンドはGETリクエストを発行し、実際にリクエストされたURLは
データがURL符号化を必要とする場合、
-H
上のコマンドは、HTTPヘッダ
上のコマンドは、2つのHTTPヘッダを追加します.
上記のコマンドでHTTPリクエストを追加するヘッダは
-i
上のコマンドは、サーバ応答を受信した後、サーバ応答のヘッダを出力し、行を空にしてから、Webページのソースコードを出力します.
-I
上のコマンドは、HEADリクエストに対するサーバの応答を出力します.
-k
上記のコマンドでは、サーバのSSL証明書が正しいかどうかは確認されません.
-L
--limit-rate
上記のコマンドは、帯域幅を毎秒200 Kバイトに制限します.
-o
上記のコマンドは、
-O
上記のコマンドは、サーバ応答を
-s
上記のコマンドでエラーが発生した場合、エラーメッセージは表示されません.エラーが発生しなければ、正常に運転結果が表示されます.
curlに出力を発生させないようにするには、次のコマンドを使用します.
-S
エラーが発生しない限り、上記のコマンドには出力がありません.
-u
上のコマンドでは、ユーザー名を
curlはURLの中のユーザー名とパスワードを識別することができます.
上記コマンドはURL内のユーザ名とパスワードを認識して、前の例のHTTPヘッダに変換します.
上のコマンドはユーザー名のみを設定し、実行するとcurlはユーザーにパスワードの入力を要求します.
-v
-x
上記のコマンドは、HTTPリクエストが
プロキシプロトコルが指定されていない場合、デフォルトはHTTPです.
上記のコマンドでは、要求されたエージェントはHTTPプロトコルを使用します.
-X
上記のコマンドは、
概要
curlは、Webサーバを要求するためによく使用されるコマンドラインツールです.その名前はクライアントのURLツールの意味です.
コマンドラインパラメータは数十種類に達する強力な機能です.熟練すれば、Postmanのようなグラフィックインタフェースツールに取って代わることができます.
本文はその主なコマンドラインパラメータを紹介し、日常の参考として、簡単に調べることができます.内容は主に《curl cookbook》から翻訳された.紙面を節約するために、次の例は実行時の出力を含まないので、初心者は私が以前書いた『curl初心者チュートリアル』を見てもいいです.
パラメータがない場合、curlはGETリクエストを発行します.
$ curl https://www.example.com
上記のコマンドは、
www.example.com
にGET要求を発行し、サーバから返されたコンテンツはコマンドラインに出力されます.-A
-A
パラメータは、クライアントのユーザエージェントヘッダ、すなわちUser-Agent
を指定する.curlのデフォルトのユーザエージェント文字列はcurl/[version]
です.
$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com
上記のコマンドは
User-Agent
をChromeブラウザに変更します.
$ curl -A '' https://google.com
上記のコマンドでは、
User-Agent
ヘッダーが削除されます.-H
パラメータでヘッダーを直接指定し、User-Agent
を変更することもできます.
$ curl -H 'User-Agent: php/1.0' https://google.com
-b
-b
パラメータは、Cookieをサーバに送信するために使用される.
$ curl -b 'foo=bar' https://google.com
上記のコマンドは、ヘッダ
Cookie: foo=bar
を生成し、foo
という値のクッキーをサーバに送信します.
$ curl -b 'foo1=bar;foo2=bar2' https://google.com
上のコマンドは2つのCookieを送信します.
$ curl -b cookies.txt https://www.google.com
上記のコマンドは、ローカルファイル
bar
を読み込み、サーバが設定したCookie(cookies.txt
パラメータを参照)をサーバに送信します.-c
-c
パラメータは、サーバが設定したCookieをファイルに書き込みます.
$ curl -c cookies.txt https://www.google.com
上記のコマンドは、サーバのHTTP応答に設定されたCookieをテキストファイル
-c
に書き込む.-d
cookies.txt
パラメータは、POST要求を送信するためのデータボディである.
$ curl -d'login=emma&password=123'-X POST https://google.com/login
#
$ curl -d 'login=emma' -d 'password=123' -X POST https://google.com/login
-d
パラメータを使用すると、HTTPリクエストに自動的にヘッダ-d
が追加されます.また、要求は自動的にPOSTメソッドに移行するので、Content-Type : application/x-www-form-urlencoded
を省略することができる.-X POST
パラメータは、ローカルテキストファイルのデータを読み出し、サーバに送信することができる.
$ curl -d '@data.txt' https://google.com/login
上記コマンドは、
-d
ファイルの内容を読み出し、データ体としてサーバに送信します.--data-urlencode
data.txt
パラメータは--data-urlencode
と同等であり、POST要求を送信するデータ体は、送信したデータを自動的にURL符号化することを区別する.
$ curl --data-urlencode 'comment=hello world' https://google.com/login
上記のコードでは、送信されたデータ
-d
の間にスペースがあり、URL符号化が必要です.-e
hello world
パラメータは、要求のソースを示すHTTPのヘッダ-e
を設定するために使用される.
curl -e 'https://google.com?q=example' https://www.example.com
上記のコマンドは、
Referer
ヘッダをReferer
に設定します.https://google.com?q=example
パラメータは、ヘッダ-H
を直接追加することによって、同様の効果を達成することができる.
curl -H 'Referer: https://google.com?q=example' https://www.example.com
-F
Referer
パラメータは、サーバにバイナリファイルをアップロードするために使用されます.
$ curl -F '[email protected]' https://google.com/profile
上記のコマンドは、HTTPリクエストにヘッダ
-F
を追加し、ファイルContent-Type: multipart/form-data
をphoto.png
フィールドとしてアップロードします.file
パラメータは、MIMEタイプを指定することができる.
$ curl -F '[email protected];type=image/png' https://google.com/profile
上記のコマンドは、MIMEタイプが
-F
であることを指定します.そうしないと、curlはMIMEタイプをimage/png
に設定します.application/octet-stream
パラメータは、ファイル名を指定することもできます.
$ curl -F '[email protected];filename=me.png' https://google.com/profile
上記のコマンドでは、元のファイル名は
-F
ですが、サーバが受信したファイル名はphoto.png
です.-G
me.png
パラメータは、URLのクエリ文字列を構築するために使用されます.
$ curl -G -d 'q=kitties' -d 'count=20' https://google.com/search
上記のコマンドはGETリクエストを発行し、実際にリクエストされたURLは
-G
です.https://google.com/search?q=kitties&count=20
を省略すると、POST要求が発行されます.データがURL符号化を必要とする場合、
--G
パラメータを組み合わせることができる.
$ curl -G --data-urlencode 'comment=hello world' https://www.example.com
-H
--data--urlencode
パラメータは、HTTP要求のヘッダを追加する.
$ curl -H 'Accept-Language: en-US' https://google.com
上のコマンドは、HTTPヘッダ
-H
を追加します.
$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com
上のコマンドは、2つのHTTPヘッダを追加します.
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login
上記のコマンドでHTTPリクエストを追加するヘッダは
Accept-Language: en-US
であり、その後、Content-Type: application/json
パラメータでJSONデータを送信する.-i
-d
パラメータは、サーバ応答のHTTPヘッダを印刷する.
$ curl -i https://www.example.com
上のコマンドは、サーバ応答を受信した後、サーバ応答のヘッダを出力し、行を空にしてから、Webページのソースコードを出力します.
-I
-i
パラメータは、サーバにHEAD要求を発行するが、サーバから返されたHTTPヘッダが印刷される.
$ curl -I https://www.example.com
上のコマンドは、HEADリクエストに対するサーバの応答を出力します.
-I
パラメータは--head
に等しい.
$ curl --head https://www.example.com
-k
-I
パラメータは、SSL検出をスキップすることを指定する.
$ curl -k https://www.example.com
上記のコマンドでは、サーバのSSL証明書が正しいかどうかは確認されません.
-L
-k
パラメータは、HTTP要求をサーバのリダイレクトに追従させる.curlはデフォルトでリダイレクトに従いません.
$ curl -L -d 'tweet=hi' https://api.twitter.com/tweet
--limit-rate
-L
は、HTTP要求および応答の帯域幅を制限し、遅いネットワーク速度の環境をシミュレートするために使用される.
$ curl --limit-rate 200k https://google.com
上記のコマンドは、帯域幅を毎秒200 Kバイトに制限します.
-o
--limit-rate
パラメータは、サーバの応答をファイルに保存し、-o
コマンドに等しい.
$ curl -o example.html https://www.example.com
上記のコマンドは、
wget
をwww.example.com
に保存します.-O
example.html
パラメータは、サーバ応答をファイルに保存し、URLの最後の部分をファイル名とする.
$ curl -O https://www.example.com/foo/bar.html
上記のコマンドは、サーバ応答を
-O
というファイルに保存します.-s
bar.html
パラメータは、エラーおよび進捗情報を出力しません.
$ curl -s https://www.example.com
上記のコマンドでエラーが発生した場合、エラーメッセージは表示されません.エラーが発生しなければ、正常に運転結果が表示されます.
curlに出力を発生させないようにするには、次のコマンドを使用します.
$ curl -s -o /dev/null https://google.com
-S
-s
パラメータは、エラー情報のみを出力することを指定し、通常は-S
とともに使用される.
$ curl -s -o /dev/null https://google.com
エラーが発生しない限り、上記のコマンドには出力がありません.
-u
-s
パラメータは、サーバ認証のユーザー名とパスワードを設定するために使用されます.
$ curl -u 'bob:12345' https://google.com/login
上のコマンドでは、ユーザー名を
-u
、パスワードをbob
に設定し、HTTPヘッダ12345
に変更します.curlはURLの中のユーザー名とパスワードを識別することができます.
$ curl https://bob:[email protected]/login
上記コマンドはURL内のユーザ名とパスワードを認識して、前の例のHTTPヘッダに変換します.
$ curl -u 'bob' https://google.com/login
上のコマンドはユーザー名のみを設定し、実行するとcurlはユーザーにパスワードの入力を要求します.
-v
Authorization: Basic Ym9iOjEyMzQ1
パラメータは、通信をデバッグするためのプロセス全体を出力する.
$ curl -v https://www.example.com
-v
パラメータは、デバッグにも使用でき、元のバイナリデータも出力されます.
$ curl --trace - https://www.example.com
-x
--trace
パラメータは、HTTP要求のプロキシを指定します.
$ curl -x socks5://james:[email protected]:8080 https://www.example.com
上記のコマンドは、HTTPリクエストが
-x
のsocks 5エージェントを介して発行されることを指定します.プロキシプロトコルが指定されていない場合、デフォルトはHTTPです.
$ curl -x james:[email protected]:8080 https://www.example.com
上記のコマンドでは、要求されたエージェントはHTTPプロトコルを使用します.
-X
myproxy.com:8080
パラメータは、HTTPリクエストのメソッドを指定します.
$ curl -X POST https://www.example.com
上記のコマンドは、
-X
に対してPOST要求を発行する.