概要
curlコマンドはcURL (see URL)から名付けられたコマンドで、URLを通したファイル転送を行うコマンドラインツール。
Vagrantのbento/CentOS7にはcurlがインストール済みで、以下のようにバージョンを確認できる。
1 2 3 4 |
[vagrant@localhost ~]$ curl --version curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2/1.8.0 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets |
GET
curl URL
でHTTPのGETメソッドをコマンドラインで実行し、転送されたファイルはコンソールに表示される。
1 2 3 4 5 6 7 8 9 |
[vagrant@localhost ~]$ curl https://www.wikipedia.org <!DOCTYPE html> <html lang="en" class="no-js"> <head> <meta charset="utf-8"> <title>Wikipedia</title> <meta name="description" content="Wikipedia is a free online encyclopedia, created and edited by volunteers around the world and hosted by the Wikimedia Foundation."> <script> ..... |
-s, -S
curl -s URL
はプログレス表示を抑制。ただしエラーメッセージも表示されなくなる。
curl -S URL
はエラーメッセージを出力。
curl -sS URL
はプログラス表示を抑制しながらエラーは表示させる。
-I, -i
curl -I URL
でレスポンスヘッダー表示。
1 2 3 4 5 6 7 8 9 10 11 |
[vagrant@localhost ~]$ curl -I https://www.google.com HTTP/1.1 200 OK Content-Type: text/html; charset=ISO-8859-1 P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." Date: Thu, 24 Jun 2021 13:03:11 GMT Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN Transfer-Encoding: chunked Expires: Thu, 24 Jun 2021 13:03:11 GMT Cache-Control: private |
curl -i URL
でボディーを含むレスポンス表示。
1 2 3 4 5 6 7 8 9 10 11 12 |
[vagrant@localhost ~]$ curl -i https://www.google.com HTTP/1.1 200 OK Date: Thu, 24 Jun 2021 13:09:11 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." Server: gws X-XSS-Protection: 0 X-Frame-Options: SAMEORIGIN ..... <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head>..... |
-v
リクエストを含むヘッダーとボディーを表示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
[vagrant@localhost ~]$ curl -v https://www.google.com * About to connect() to www.google.com port 443 (#0) * Trying 142.250.196.132... * Connected to www.google.com (142.250.196.132) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Server certificate: * subject: CN=www.google.com,O=Google LLC,L=Mountain View,ST=California,C=US * start date: 5月 24 03:58:34 2021 GMT * expire date: 8月 16 03:58:33 2021 GMT * common name: www.google.com * issuer: CN=GTS CA 1O1,O=Google Trust Services,C=US > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: www.google.com > Accept: */* > < HTTP/1.1 200 OK < Date: Thu, 24 Jun 2021 13:06:26 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info." < Server: gws < X-XSS-Protection: 0 < X-Frame-Options: SAMEORIGIN ..... <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head>..... |
POST
-X
-X
オプションでPOST
を指定してPOSTメソッドでリクエスト。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ curl -X POST http://httpbin.org/post { "args": {}, "data": "", "files": {}, "form": {}, "headers": { "Accept": "*/*", "Host": "httpbin.org", "User-Agent": "curl/7.29.0", "X-Amzn-Trace-Id": "Root=1-62b76e23-4e7b1252140667e84b1d7738" }, "json": null, "origin": "106.155.0.13", "url": "http://httpbin.org/post" } |
-d
-d
オプションでパラメーターを指定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$ curl -X POST -d 'name=tau' -d 'site=taustation.com' http://httpbin.org/post { "args": {}, "data": "", "files": {}, "form": { "name": "tau", "site": "taustation.com" }, "headers": { "Accept": "*/*", "Content-Length": "28", "Content-Type": "application/x-www-form-urlencoded", "Host": "httpbin.org", "User-Agent": "curl/7.29.0", "X-Amzn-Trace-Id": "Root=1-62b76e6e-417c336439e250765dd33f3e" }, "json": null, "origin": "106.155.0.13", "url": "http://httpbin.org/post" } |