CURLとは何ですか?
CURLはデータ転送用のツールです。また、開発者向けのライブラリとして、およびターミナルベースのユースケース向けのCLIとしても利用できます。どちらも内部に同じエンジンがあります(実際のところ、CLIツールは内部でライブラリを使用するプログラムにすぎません)。
CURLは、使用した可能性のあるすべてのプロトコルで機能します。このサイトにアクセスして、CURLがターゲットプロトコルで機能するかどうかを確認してください。
CURLでできること
うーん…データ転送に関連するすべて。誰もがブラウザを使用したに違いありません。今でも、あなたはあなたのブラウザを通してこの記事を読んでいます。ブラウザが行うことは、ページを要求し、それを応答として取得することです。クッキーの書き込みと読み取りができます。そして、それをレンダリングします(コンテンツ、画像を表示し、JSスクリプトを実行します)。
CURLは、データ転送とは関係がないため、最後の部分のレンダリングを除いて、ブラウザですべてを実行できます。
まとめとして、CURLはHTMLページのダウンロード、HTMLフォームへの入力と送信、FTP / HTTPサーバーからのファイルのダウンロード、同じCookieへのファイルのアップロードとCookieの読み取り/書き込みを行うことができます。
これにより、スクリプト、デバッグ、フォレンジック分析などで使用できる優れたツールになります。
Curlで何ができるか見てみましょう。
1。サーバーから応答を取得する
サーバーからのすべてがリクエストへの応答です。したがって、HTMLページを取得することは、ファイルをダウンロードすることと同じです。
http://info.cern.cからHTML応答を取得するには、
curl http://info.cern.ch/
サーバー(https://jsonplaceholder.typicode.com/posts)からの応答として投稿のリストを取得するには、
curl https://jsonplaceholder.typicode.com/posts
サーバーから応答を取得する方法を知っているので、ファイル(Googleロゴなど)をダウンロードできます。
curl https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
上記のコマンドは、ターミナルで表示できないバイナリイメージデータをダンプします。それらを保存してから、フォトビューアを使用して表示する必要があります。
厳密な順序ではなく、コマンドの任意の場所にさまざまなオプションフラグを配置できることに注意してください。したがって、例の最初にフラグが付いているときに、最後にオプションを配置しても心配する必要はありません。
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という名前のファイルを削除するには、任意のHTTP動詞/メソッド(GET、POST、PUT、DELETE、PATCHなど)を対象とした-Xフラグを使用できます。すべての高度なHTTPメソッドではないにしても、ほとんどのFTPサーバーはDELETEメソッドを構成しています。
curl -X DELETE http://upload.linuxhandbook.org/files/deleteFile.txt
上記のコマンドを任意のHTTPメソッドに変更して、対応するタスクを実行することもできます。たとえば、サーバーでTRUNCATEメソッド(これは標準のメソッドではなく、構成されたHTTPメソッド)を許可している場合、ファイルではなくファイルのコンテンツのみを削除します。次のようなコマンドを使用できます。
>curl -X TRUNCATE http://upload.linuxhandbook.org/files/mysql.dump
上記はカールの主な用途です。ただし、リダイレクト、ユーザー認証、SSL証明書など、対処する必要のある問題が発生する可能性があります。これらはオプションであるため、アドオンと呼ぶことができますが、特定の目的には依然として重要です。次のセクションで、これらのアドオンのいくつかと、curlを使用してそれを処理する方法を見てみましょう。
10。リダイレクトを避ける
http://www.google.comをリクエストすると、www.google.co.inなどの地域のページのみが表示されます。これは、リダイレクト(300〜399の範囲のステータスコードを持つHTTPパケット)を使用して行われます。
オプション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。ユーザーエージェントの変更
一部のウェブサイトやサーバーでは、特定の種類のデバイスがシステムにアクセスすることを許可していません。しかし、彼らは私たちが特定の種類のデバイスを使用していることをどうやって知るのでしょうか?これは、User-AgentHTTPヘッダーフィールドが原因です。このユーザーエージェントは-Aフラグで変更できます。
curl -A "Mozilla FireFox(42.0)" http://notAllowedForCLI.sites.org/randomFile.png
18。サーバーへのデータの送信
サーバーがトークンやAPIキーなどのデータを必要とする場合は、-dフラグを使用してデータを送信します。送信する必要のあるデータは、コマンドのフラグに従う必要があります。 「&」を使用して複数のデータを組み合わせることができます。これは通常、ブラウザのGETおよびPOSTリクエストによって行われます。これは、フォーム情報を送信する方法の1つです。
curl -d "token=34343abvfgh&name='seeni'" http://api.restful.org/getcontent
19。ファイルにCookieを書き込む
Cookieは、ステートレスHTTPプロトコルとのセッションを維持できるようにする小さな情報です。 Cookieについて詳しく知りたい場合は、このすばらしいリソースを参照してください。
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オプションを使用してCookieを書き込む必要がある場合があります。
21。新しいセッションを開始する
Cookieを破棄して新しいセッションを開始する場合は、-jフラグを使用します。 -bフラグを付けて読み取るCookieファイルを指定した場合でも、新しいセッションが開始されます。
curl -b googleCookie.txt http://www.google.com/files -j
おめでとう!あなたは最後までやり遂げました。この記事が役に立ったら、友達と共有してソーシャルメディアでフォローしてください。この記事やその他のトピックについて何か提案があれば、遠慮なく下にドロップしてください。