カールとは何ですか
カールはデータ転送ツールです。これは、開発ライブラリとターミナルベースの cli として利用でき、どちらも同じエンジンを搭載しています (実際、cli ツールは開発ライブラリの下にある単なるプログラムです)。
curl は、使用する可能性のあるすべてのプロトコルで動作します。
カールにできること
データ転送に関連するすべて (curl で実行できます)。誰もがブラウザを使用したことがあります (この記事を読むためにブラウザを使用しているとします)。ブラウザが行うことは、ページをリクエストして応答を取得することだけです。ブラウザは Cookie の書き込みと読み取りを行ってから、レンダリング (コンテンツ、画像の表示、JS の実行) を行うことができます。脚本)。
Curl は、(データ転送とは何の関係もないため) 最後のレンダリング ステップを除いて、ブラウザーが行うすべてのことを行うことができます。
要約すると、curl は HTML ページのダウンロード、HTML フォームの入力と送信、FTP/HTTP サーバーからのファイルのダウンロードとアップロード、Cookie の読み取りと書き込みを行うことができます。
これにより、スクリプト作成、デバッグ、フォレンジック分析などに優れたツールになります。
カールコマンドインスタンス
カールで何ができるか見てみましょう
1. サーバーから応答を取得します
サーバー上で返されるものはすべて、リクエストに対する応答です。したがって、HTML ページを取得することは、ファイルをダウンロードすることと同じです。
たとえば、URL から HTML 応答を取得するには、次のようにします。
curl http://info.cern.ch/
サーバーから記事のリストを取得します。
curl https://jsonplaceholder.typicode.com/posts
サーバーから応答を取得する方法がわかったので、ファイル (Google ロゴなど) をダウンロードできます。
curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
上記のコマンドは、ターミナルで表示できないバイナリ画像データをダンプします。まず保存してから、フォト ビューアーで表示する必要があります (Google への国内アクセスには FQ が必要です)。
注: コマンド内のオプションの位置は厳密な順序ではないため、オプションを最後に配置し、例では先頭に配置している場合でも、心配する必要はありません。
2. デフォルトのファイル名でファイルを保存します。
インターネット上のすべてのファイルにはファイル名があります。ダウンロードしたファイルを元の名前で保存するには、-O オプションを使用します。
curl -O http://www.google.com/robots.txt
3. カスタム名でファイルを保存します
ファイルをカスタム名で保存するには、 -o オプションの後に (厳密に) カスタム名を指定します。
curl -o http://www.google.com/robots.txt googleRobots.txt
4. 複数のファイルをダウンロードする
複数のファイルをダウンロードするには、ファイルをスペースで区切ります。
curl url1 url2 url3
すべての URL に -O オプションを使用したい場合は、次のようにします。
curl url1 url2 url3 -O -O -O
どのオプションでも同じ方法を実行できます。最初のオプションは最初の URL 用であり、2 番目のオプションは 2 番目の URL 用であり、以下同様です。
5. 一連のファイルをダウンロードする
curl には、サーバーから一連のファイルをダウンロードする機能があります。次の例を参照してください。
curl http://www.google.com/logo/logo[1-9].png
上記のコマンドは、logo1,png、logo2.png、logo3.png から logo9.png までをダウンロードします。
6. 最新バージョンのみをダウンロードしてください
ファイルの変更時刻が指定された時刻より後の場合にのみファイルをダウンロードします。
curl url -z "DD MMM YY MM:HH:SS"
7. ダウンロードを続行します
ファイルが部分的に転送されている場合は、-C オプションを使用して転送を再開できます。転送を続行する必要があるオフセットは、引数として -C フラグに渡す必要があります。
curl -C 1024 http://seeni.linuxhandbook.org/files/largeFile.mpv -O
8. ファイルをアップロードする
ファイルをサーバーにアップロードするには、 -T オプションの後にローカル ファイル パスを指定します。
curl -T uploadFile.txt http://upload.linuxhandbook.org/files
9. ファイルを削除する
deleteFile.txt という名前のファイルを削除するには、-X オプションを使用します。このオプションは、任意の HTTP メソッド (GET、POST、PUT、DELETE、PATCH など) で使用できます。HTTP メソッドがない場合、ほとんどの FTP サーバーは DELETE メソッドを使用して構成されます。
curl -X DELETE http://upload.linuxhandbook.org/files/deleteFile.txt
上記のコマンドを変更して、任意の HTTP メソッドに対応するタスクを実行することもできます。たとえば、サーバーが TRUNCATE メソッド (標準ではなく作成されたメソッド) でファイルの内容のみを削除し、ファイル自体は削除できない場合は、次のようなコマンドを使用できます。
curl -X TRUNCATE http://upload.linuxhandbook.org/files/mysql.dump
上記はcurlの主な用途です。(使用中に) リダイレクト、ユーザー ID 検証、SSL 証明書などのいくつかの問題が発生する可能性があります。これらはオプションであるためアドオンと呼ばれますが、それでも一部の操作にとっては非常に重要です。次のセクションでは、これらの追加機能と、curl を使用してそれらを処理する方法について説明します。
10. リダイレクトを避ける
アドレス http://www.google.com をリクエストすると、アドレスのリダイレクト (ステータス コードが 300 ~ 399 の範囲の HTTP パケット) により、www.google.co.in が返される場合があります。
-L オプションを使用すると、リダイレクトを回避できます。
curl -L http://www.google.com
11. 認証
認証情報を持つ特定の個人のみにサービスを提供するようにサーバーが設定されている場合、そのユーザーにはユーザー名とパスワードが与えられます (つまり、アクセスするにはログインが必要です)。-u オプションを使用できます。
curl -u username:password http://seeni.linuxhandbook.org/files/tasks.txt
12. データ転送の制限
データ転送制限を課す場合は、--limit-rate オプションを使用できます。次のコマンドは、ダウンロード速度を 10k に制限しようとします。
curl --limit-rate 10K http://seeni.linuxhandbook.org/files/logoDetails.tgz
13. 転送ステータスの表示/非表示
アップロードやダウンロードなどの応答が端末から実行された場合、curl は転送のステータス (進行状況バー) を自動的に表示します。進行状況バーを表示したくない場合は、コマンドの後に -s オプションを追加するだけで、端末に進行状況が表示されなくなります。
14. SSL証明書を無視する
一部の Web サイトにアクセスするときにセキュリティ証明書を付与する必要があったことを覚えていますか? アドレスを信頼し、データ転送を実行したい場合は、-k オプションを使用して SSL 証明書の検証を無視できます。
curl -k https://notSoSecure.org/files/logoDetails.tgz
15. 情報ヘッダーの取得
データ転送中にヘッダーを表示するには、-i オプションを使用します。
curl -i http://www.google.com/robots.txt
16. ヘッダーのみを表示
データではなくヘッダーのみが必要な場合は、 -I オプションを使用します。
curl -I http://www.google.com/robots.txt
17. ユーザーエージェントの変更
一部の Web サイトまたはサーバーでは、特定のデバイスによるシステムへのアクセスが許可されていません。しかし、彼らはどのようにして私たちが使用している機器を知るのでしょうか?これは、User-Agent HTTP ヘッダー情報によってわかります。-A オプションを使用してユーザー エージェントを変更できます。
curl -A "Mozilla FireFox(42.0)" http://notAllowedForCLI.sites.org/randomFile.png
18. サーバーにデータを送信する
サーバーがトークンや API キーなどのパラメーター データを必要とする場合は、-d オプションを使用してデータを送信できます。コマンドラインでは、送信するデータは -d オプションの後に指定する必要があり、& を使用して複数のデータを結合できます。これは通常、ブラウザで GET または POST リクエストを使用して行われます。これは、フォーム情報を送信する方法の 1 つです。
curl -d "token=34343abvfgh&name='seeni'" http://api.restful.org/getcontent
19. クッキーをファイルに書き込む
Cookie は、ステートレス HTTP プロトコルでセッションを維持できるようにする小さな情報です。Cookie について詳しく知りたい場合は、HTTP Cookie の使用 (https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies) を参照してください。
Cookie をファイルに保存するには、-c オプションの後に Cookie ファイル名を指定します。
curl -c googleCookie.txt http://www.google.com/files
20. ファイルから Cookie を読み取ります
ファイルから Cookie を読み取るには、-b オプションの後に Cookie ファイル名を指定します。
curl -b googleCookie.txt http://www.google.com/files
-b オプションはファイルから Cookie を読み取るだけであることに注意してください。サーバーが別の Cookie を再送信する場合は、-c オプションを使用してそれらを上書きする必要があります。
21. 新しいセッションを開始する
Cookie を破棄して新しいセッションを開始する場合は、-j オプションを使用します。このオプションを使用した後は、-b を使用して Cookie を読み取った場合でも、新しいセッションが開始されます。
curl -b googleCookie.txt http://www.google.com/files -j