ウェブサイト検索

Linuxでの'Curl'コマンドの使い方に関する15のヒント


1990年代中頃、インターネットがまだ発展途上の頃、スウェーデンのプログラマーであるダニエル・ステンバーグは、最終的に私たちが今日知っているcurlに成長するプロジェクトを始めました。

最初に彼は、ウェブページから通貨為替レートを定期的にダウンロードし、IRCユーザーにスウェーデン・クローナの米ドル換算を提供するボットの開発を目指していました。

長い話を短くすると、そのプロジェクトは成功し、いくつかのプロトコルや機能が追加されました。そして残りは歴史です。さて、両足で飛び込んで、curlを使ってデータを転送する方法を学びましょう!

私たちはあなたのために次の15のcurlコマンドのリストをまとめました。

1. cURLのバージョンを表示

-V または --version オプションは、バージョンを返すだけでなく、現在のバージョンでサポートされているプロトコルと機能も返します。

$ curl --version

curl 7.47.0 (x86_64-pc-linux-gnu) libcurl/7.47.0 GnuTLS/3.4.10 zlib/1.2.8 libidn/1.32 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 

2. ファイルをダウンロードする

ファイルをダウンロードしたい場合は、curlを使って-Oまたは-oオプションを使用できます。前者は、リモートの場所と同じ名前で現在の作業ディレクトリにファイルを保存しますが、後者では異なるファイル名や場所を指定することができます。

$ curl -O http://yourdomain.com/yourfile.tar.gz # Save as yourfile.tar.gz
curl -o newfile.tar.gz http://yourdomain.com/yourfile.tar.gz # Save as newfile.tar.gz

3. 中断したダウンロードを再開する

何らかの理由でダウンロードが中断された場合(例えば、Ctrl + cを使用した場合)、非常に簡単に再開できます。-C(ダッシュC、スペースダッシュ)を使用すると、curlに中断した位置からダウンロードを再開するよう指示します。

$ curl -C - -O http://yourdomain.com/yourfile.tar.gz

4. 複数のファイルをダウンロード

次のコマンドを使用すると、http://yoursite.comからinfo.htmlを、http://mysite.comからabout.htmlを、一度にダウンロードできます。

$ curl -O http://yoursite.com/info.html -O http://mysite.com/about.html 

5. ファイルからURLをダウンロードする

curlをxargsと組み合わせると、ファイル内のURLのリストからファイルをダウンロードできます。

$ xargs -n 1 curl -O < listurls.txt

6. 認証の有無にかかわらずプロキシを使用する

ポート8080でproxy.yourdomain.comにあるプロキシサーバーの背後にいる場合は、実行してください。

$ curl -x proxy.yourdomain.com:8080 -U user:password -O http://yourdomain.com/yourfile.tar.gz

プロキシが認証を必要としない場合は、-U user:passwordをスキップできます。

7. HTTPヘッダーをクエリする

HTTP ヘッダーは、リモートウェブサーバーが実際のリクエストと共に自分自身に関する追加情報を送信することを可能にします。これにより、クライアントはリクエストがどのように処理されているかについての詳細を得ることができます。

ウェブサイトからHTTPヘッダーを取得するには、次のようにします:

$ curl -I linux-console.net

この情報は、ブラウザのデベロッパーツールでも利用可能です。

8. パラメータを使ってPOSTリクエストを行う

以下のコマンドは、firstNameおよびlastNameのパラメータと、それに対応する値を、https://yourdomain.com/info.phpに送信します。

$ curl --data "firstName=John&lastName=Doe" https://yourdomain.com/info.php

このヒントを使って、通常のHTMLフォームの動作をシミュレートすることができます。

9. 認証ありまたは認証なしでFTPサーバーからファイルをダウンロードする

リモートFTPサーバーがftp://yourftpserverで接続を待っている場合、次のコマンドを実行すると、現在の作業ディレクトリにyourfile.tar.gzがダウンロードされます。

$ curl -u username:password -O ftp://yourftpserver/yourfile.tar.gz 

FTPサーバーが匿名ログインを許可している場合は、-u username:passwordをスキップできます。

10. 認証ありまたは認証なしでFTPサーバーにファイルをアップロードする

mylocalfile.tar.gzというローカルファイルをftp://yourftpserverにcurlを使用してアップロードするには、次のようにします:

$ curl -u username:password -T mylocalfile.tar.gz ftp://yourftpserver

11. ユーザーエージェントを指定する

ユーザーエージェントは、HTTPリクエストと共に送信される情報の一部です。これは、クライアントがリクエストを送信するために使用したブラウザを示します。現在のcurlバージョンがデフォルトで使用しているものを見て、後でそれを「私は新しいウェブブラウザです」に変更してみましょう。

$ curl -I http://localhost --user-agent "I am a new web browser"

12. ウェブサイトのクッキーを保存する

ブラウジング中にコンピュータにダウンロードされるクッキーを確認したいですか? https://www.cnn.com にアクセスするときにダウンロードされるクッキーを cnncookies.txt に保存するには、次のコマンドを使用してください。その後、catコマンドを使ってファイルを表示できます。

$ curl --cookie-jar cnncookies.txt https://www.cnn.com/index.html -O

13. ウェブサイトのクッキーを送信する

前のヒントで取得したクッキーを、同じサイトへの後続のリクエストに使用できます。

$ curl --cookie cnncookies.txt https://www.cnn.com

14. 名前解決の修正

ウェブ開発者で、ライブに公開する前にyourdomain.comのローカルバージョンをテストしたい場合は、curlを使ってhttp://www.yourdomain.comをローカルホストに解決させることができます。

$ curl --resolve www.yourdomain.com:80:localhost http://www.yourdomain.com/

したがって、http://www.yourdomain.comへのクエリは、curlにDNSや/etc/hostsファイルを使用せずにローカルホストからサイトをリクエストするように指示します。

15. ダウンロード速度を制限する

帯域幅を浪費しないように、ダウンロード速度を100 KB/sに制限できます。

$ curl --limit-rate 100K http://yourdomain.com/yourfile.tar.gz -O
要約

この記事では、curlの起源の簡単な歴史を共有し、15の実用的な例を通じてその使い方を説明しました。

この記事で見逃した可能性のある他のcurlコマンドをご存知ですか?ぜひコメントでコミュニティと共有してください!また、質問がある場合はお気軽にお知らせください。皆さんからのご連絡を楽しみにしています!

関連記事: