「cURL」がリリースから23回目のお誕生日を迎えたそうです。お誕生日おめでとう!

cURLとは

cURLの馴染みのない方に簡単にcURLをご紹介しておきます。cURLは、クロスプラットフォームで利用することができる様々なプロトコルを使いデータを転送することができるツールで、curlプロジェクトからは”curl”と”libcurl”の2つのツールが生み出されています。

curlは、URLシンタックスを利用したファイル送受信ツール。libcurlは、クライアントサイドURL転送ライブラリです。基本となるのはcurlで、使い方は至ってシンプル。

>curl [URL]
ex: >curl https://appswingby.com/

以下のようにhtmlが返ってきます。

<!DOCTYPE html><html lang="ja"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1">  <script async src="https://www.googletagmanager.com/gtag/js?id=G-6N4NYRQZSG"></script> <script>window.dataLayer = window.dataLayer || [];
                function gtag(){dataLayer.push(arguments);}
                gtag('js', new Date());
                gtag('config', 'G-6N4NYRQZSG');</script> <link media="all" href="https://appswingby.com/wp-content/cache/autoptimize/css/autoptimize_9f058ad84c613d4930dd44393e3883e9.css" rel="stylesheet" /><title>株式会社APPSWINGBY | APPSWINGBYは、
~~~以下、略~~~

curlのオプション

ファイルに出力 -o/-Oオプション

curlコマンドでhtmlを取得すると、ターミナル上に表示されてしまいますので、見にくい場合には、オプションを付けてあげることで、ファイルに出力することもできます。

>curl -o [ファイル名] [URL]
ex: 
>curl -o test.html https://appswingby.com/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 54301    0 54301    0     0  54301      0 --:--:-- --:--:-- --:--:-- 99270

-o オプションはファイル出力を指定するオプションです。

-Oにすると、リクエスト先のファイル名で保存します。

ファイル出力をプログレスバーに切り替える -#オプション

curlは標準では、↑のような表記ですが、進行状況をプログレスバー形式にして表示させることもできます。容量の大きなファイルを進行状況などを確認したい場合に便利なオプションです。

ex:
>curl -o hoge.html [URL] -#

######################################################################## 100.0%

ファイル出力時の進行状況を非表示にする -s

作業していく中で、単にファイルを出力したいだけで、プログレスバーは見たくないときもあります。その時は、「-s」を付けることで、ファイル出力時の進行状況を非表示にすることができます。

但し、-sを付けることでエラー表示も非表示になってしまうので、注意が必要です。

HTTPレスポンスヘッダーのみを取得する -I/-iオプション

サーバーにデプロイする際に、Webサイトがアクセス可能かどうかを確認したい場合やデバッグしたい時などに役立つのが「HTTPレスポンスヘッダーの取得」することができる”-I”オプションです。

ex:
>curl -I [URL]
HTTP/1.1 200 OK
Server:
以下略

オプションの ” ₋I ” を小文字 “- i “ に変えるとレスポンスヘッダーとBODYの両方を取得することができます。

HTTPリクエストの詳細を表示 -vオプション

デバッグの際によく使うオプションが「-v」です。SSLの送信したパラメータを確認をすることができます。

ex:
>curl -v [URL]
*   Trying 202.254.236.7...
* TCP_NODELAY set
* Connected to appswingby.com (202.254.236.7) port 443 (#0)
* schannel: SSL/TLS connection with appswingby.com port 443 (step 1/3)
* schannel: checking server certificate revocation
* schannel: sending initial handshake data: sending 185 bytes...
* schannel: sent initial handshake data: sent 185 bytes
* schannel: SSL/TLS connection with appswingby.com port 443 (step 2/3)
* schannel: failed to receive handshake, need more data
* schannel: SSL/TLS connection with appswingby.com port 443 (step 2/3)
* schannel: encrypted data got 3424
* schannel: encrypted data buffer: offset 3424 length 4096
* schannel: sending next handshake data: sending 93 bytes...
* schannel: SSL/TLS connection with appswingby.com port 443 (step 2/3)
* schannel: encrypted data got 51
* schannel: encrypted data buffer: offset 51 length 4096
* schannel: SSL/TLS handshake complete
* schannel: SSL/TLS connection with appswingby.com port 443 (step 3/3)
* schannel: stored credential handle in session cache
> GET / HTTP/1.1
> Host: appswingby.com
> User-Agent: curl/7.55.1
> Accept: */*

多用な使い方ができるcurl

その他にも「パケットのデータを確認」したり、「パラメータ付のPOST」を投げたり等々、様々な使い方ができるのがcurlです。覚えておくと便利で約にたつオプション、一生使うことがないだろう使い方が山ほどありますので、色々な使い方を試してみて、自分の仕事で使えそうなものをピックアップして覚えておくのが良いかもしれません。

今日も一日頑張りましょう!

Have a great day!