cURL チートシート

cUrlで使用する便利なコマンドとパラメータ

ここに、最も役立つ cURL コマンドとそのパラメータのチートシートを紹介します:

curl のサインを持っている人物

上記の画像は、Flux - テキストから画像を生成する AI モデルによって生成されました。

基本的な cURL の使い方

  • ファイルをダウンロード: curl http://example.com/file.zip -o file.zip
  • 複数のファイルをダウンロード: curl -O URL1 -O URL2
  • リダイレクトをフォロー: curl -L http://example.com/file
  • ヘッダーのみを表示: curl -I http://example.com

認証

  • ベーシック認証: curl -u username:password http://example.com
  • .netrc ファイルを使用: curl --netrc-file .netrc http://example.com

HTTP メソッド

  • POST リクエスト: curl -X POST -d 'name=value' http://example.com
  • PUT リクエスト: curl -X PUT -d @file http://example.com
  • カスタムメソッド: curl -X METHOD http://example.com

ヘッダーとデータ

  • カスタムヘッダーを追加: curl -H "X-Header: Value" http://example.com
  • JSON データを送信: curl -H "Content-Type: application/json" -d '{"key":"value"}' http://example.com
  • フォームデータを送信: curl -F "key=value" -F "file=@localfile" http://example.com

SSL/TLS オプション

  • SSL 証明書の検証を無視: curl -k https://example.com
  • クライアント証明書を使用: curl --cert cert.pem --key key.pem https://example.com

プロキシとネットワーキング

  • プロキシを使用: curl -x proxysever.server.com:PORT http://example.com
  • ダウンロード速度を制限: curl --limit-rate 1000B -O http://example.com/file

出力制御

  • シークレットモード: curl -s http://example.com
  • バージョンモード: curl -v http://example.com
  • 出力をファイルに書き込む: curl -o file.html http://example.com
  • リモートファイル名で保存: curl -O http://example.com/file.zip

その他の機能

  • 失敗したダウンロードを再開: curl -C - -o partial_file.zip http://example.com/file.zip
  • タイムアウトを設定: curl --connect-timeout 10 http://example.com
  • 設定ファイルを使用: curl -K config_file http://example.com

このチートシートは、最もよく使われる cURL コマンドとそのパラメータを網羅しており、さまざまな HTTP 操作やデータ転送に関するクイックリファレンスを提供します。

高度な cURL コマンド

ここでは、デバッグに役立ついくつかの高度な cURL コマンドを紹介します:

  1. 詳細な出力: curl -v https://example.com このコマンドは、リクエストと応答に関する詳細な情報を提供し、ヘッダーと接続の詳細を含みます。

  2. フルトレースダンプ: curl --trace - https://example.com これは、すべての入出力データのヘクサダンプを出力し、通信全体の包括的なビューを提供します。

  3. タイムスタンプ付きトレース: curl --trace - --trace-time https://example.com このコマンドは、トレース出力にタイムスタンプを追加し、タイミングに関連する問題の分析に役立ちます。

  4. 応答ヘッダーのみを表示: curl -s -o /dev/null -D - https://example.com このコマンドは、応答ヘッダーのみを表示し、迅速なヘッダー分析に役立ちます。

  5. リクエストヘッダーのみを表示: curl -v -s -o /dev/null --stderr - https://example.com | grep '^>' この複雑なコマンドは、リクエストヘッダーのみをフィルタリングし、送信内容の確認に役立ちます。

  6. Pantheon デバッガーを使用: curl -I -H "Pantheon-Debug:1" https://example.com このコマンドは、Pantheon のデバッグヘッダーを使用して、リクエストに関する追加情報を取得し、Pantheon ホストされたサイトのデバッグに役立ちます。

  7. HTTP/2 プロトコルを強制: curl --http2 https://example.com これは、HTTP/2 プロトコルの使用を強制し、-I と組み合わせて HTTP/2 のサポートを確認できます。

  8. netcat でデバッグ: 1つのターミナルで: nc -l 1234 もう1つのターミナルで: curl http://127.0.0.1:1234 これは、curl が送信する内容を正確に確認でき、ペイロードのデバッグに役立ちます。

これらの高度なコマンドは、開発者が HTTP コミュニケーションのさまざまな側面を検査し、複雑な問題をトラブルシューティングするための強力なデバッグ機能を提供します。

一般的な cURL のユースケース

curl は、さまざまな用途に使える強力なコマンドラインツールです。ここでは、curl の最も一般的なユースケースを紹介します:

ウェブインタラクション

  1. ファイルのダウンロード: curl は URL からファイルをダウンロードできます。
  2. ウェブスクレイピング: curl は、ウェブページのコンテンツを取得してスクレイピングに使用できます。
  3. ウェブサイトのテスト: curl は、ウェブサイトがアクセス可能かどうかを確認し、そのコンテンツを取得するために役立ちます。

API インタラクション

  1. API リクエストの送信: curl は、API とやり取りするためにさまざまな HTTP メソッド(GET、POST、PUT、DELETE)をサポートしています。
  2. API エンドポイントのテスト: curl は、専用の API クライアントを必要とせずに、API エンドポイントをテストおよびデバッグするための迅速な方法を提供します。

ネットワークトラブルシューティング

  1. 接続性の確認: curl は、ネットワーク接続を確認し、問題のトラブルシューティングに役立ちます。
  2. DNS のテスト: curl は、DNS 関連の問題をトラブルシューティングするために特定の DNS サーバーを強制的に使用できます。
  3. ヘッダーの確認: curl は、HTTP ヘッダーを表示し、デバッグに役立ちます。

データ転送

  1. FTP 操作: curl は、ファイル転送プロトコル(FTP)を使用してファイル転送をサポートしています。
  2. SMTP インタラクション: curl は、単純なメール転送プロトコル(SMTP)を使用してメールを送信できます。

セキュリティと認証

  1. SSL 接続: curl は、SSL/TLS を使用してセキュアな接続をサポートしています。
  2. 認証: curl は、基本認証やクライアント証明書などのさまざまな認証方法を処理できます。

開発とデバッグ

  1. さまざまな HTTP メソッドのシミュレーション: curl は、開発者がさまざまな HTTP メソッドを簡単にテストできるようにします。
  2. 詳細なログ: curl の詳細モードは、リクエスト-応答サイクルに関する詳細な情報を提供し、デバッグに役立ちます。

これらのユースケースは、ウェブインタラクション、API テスト、ネットワークトラブルシューティング、開発タスクなど、curl の柔軟性を示しています。

cURL を使用したウェブサイトのパフォーマンステスト

curl は、ウェブサイトのパフォーマンスをテストするための強力なツールです。ここでは、ウェブサイトの読み込み速度のさまざまな側面を測定するためにどのように使用できるかを紹介します:

基本的なパフォーマンステスト

ウェブサイトの読み込み時間を簡単に測定するには、このコマンドを使用します:

curl -o /dev/null -s -w "Total Time: %{time_total}s\n" "https://example.com"

このコマンドは、ウェブサイトを取得するためにかかった合計時間を出力します[2]。

詳細なパフォーマンスメトリクス

より包括的な分析を行うには、curl を使って複数のパフォーマンスメトリクスを測定できます:

curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null https://example.com

このコマンドは、ロードプロセスのさまざまな段階の分解を提供し、DNS ロックアップ時間、接続時間、合計時間を含みます[1]。

高度なメトリクス

さらに詳細な分析を行うには、追加のメトリクスを含めることができます:

curl -o /dev/null -w "HTTP Version: %{http_version}\nPage Size: %{size_download} bytes\nResponse Code: %{response_code}\nDNS Lookup: %{time_namelookup} sec\nConnect Time: %{time_connect} sec\nTime to First Byte: %{time_starttransfer} sec\nTotal Time: %{time_total} sec\n" -s https://example.com

このコマンドは、HTTP バージョン、ページサイズ、応答コードの情報を含みます[3]。

複数リクエストのベンチマーク

一貫性をテストしたり、時間経過に伴うパフォーマンスを監視したりするには、ループを使用して複数のリクエストを実行できます:

for i in {1..5}; do curl -o /dev/null -s -w "Request $i Total Time: %{time_total}\n" https://example.com; done

これは、テストを5回実行し、各リクエストの合計時間を表示します[3]。

パフォーマンステストスクリプトの作成

これらのテストを自動化し、結果を保存するには、簡単な bash スクリプトを作成できます:

#!/bin/bash
curl -s -w 'Testing Website Response Time for :%{url_effective}\n\nLookup Time:\t\t%{time_namelookup}\nConnect Time:\t\t%{time_connect}\nPre-transfer Time:\t%{time_pretransfer}\nStart-transfer Time:\t%{time_starttransfer}\n\nTotal Time:\t\t%{time_total}\n' -o /dev/null URL > webspeedtest_"$(date)"

“URL” をテストしたいウェブサイトに置き換えてください。このスクリプトは、日付付きのファイルに結果を保存します[5]。

これらの curl コマンドとスクリプトを使用することで、ウェブサイトのパフォーマンスを効果的に測定し、監視し、潜在的なボトルネックを特定し、読み込み時間を最適化するのに役立ちます。

有用なリンク