cURL(発音は「カール」[ 6 ] / kɜːr l /)は、インターネットサーバーとの間でデータを転送するための無料のオープンソースコンピュータプログラムです。HTTP経由でWebサーバーからURLで識別されるリソースをダウンロードでき、その他さまざまなネットワークプロトコル、URIスキーム、複数のバージョンのHTTP、プロキシをサポートしています。このプロジェクトは、ライブラリ(libcurl)とコマンドラインツール(curl)で構成されており、さまざまなコンピューティングプラットフォームに広く移植されています。作成者はDaniel Stenberg氏で、現在もプロジェクトのリード開発者です。
このソフトウェアは1996年に初めてリリースされ、[ 7 ]当初は という名前でしたhttpgetが、その後 となりurlget、現在の という名前を採用しましたcurl。[ 8 ] [ 9 ]という名前は「クライアントとURL」の略です。[ 10 ]オリジナルの作者であり、リード開発者はスウェーデンの開発者ダニエル・ステンバーグで、IRCチャットルームのユーザーにウェブサイトから取得した為替レートを自動的に提供したいと考え、IRCボットの一部を動かすためにcurlを作成しました。[ 2 ]
libcurlは、クライアント側の URL 転送ライブラリで、 を支えています。curl[ 11 ] DICT、 FILE 、 FTP 、 FTPS 、 GOPHER 、 GOPHERS 、 HTTP 、 HTTPS、IMAP、IMAPS、LDAP、LDAPS、 MQTT、 POP3 、 POP3S 、 RTMP、RTMPS、 RTSP 、SCP、SFTP、SMB、SMBS、SMTP、SMTPS、TELNET、TFTP、WS、WSSなど、多数のインターネット プロトコルをサポートしています。
libcurlは、HTTPバージョン0.9、1.0、1.1、HTTP/2、HTTP/3をサポートしており、h2c、事前知識、デュアルコネクトモード、および0-RTTハンドシェイクによるQUICにも対応しています。
このライブラリは、 Cookie の処理、標準的な HTTP リクエスト メソッド ( GET、POST、PUT、HEAD、マルチパート フォームのアップロード)、および Basic、Digest、NTLM、Negotiate、CRAM-MD5、SCRAM-SHA、Kerberos、Bearer トークン、AWS Sigv4、SASLなどの認証メカニズム、および .netrc からの認証情報の読み取りなどの機能を提供します。
libcurlTLS 1.0 - 1.3、相互認証、STARTTLS、OCSPステープリング、暗号化クライアントハロー(ECH)、False Start、キーピンニング、ポスト量子対応、セッション再開、早期データ、セッションインポート/エクスポート、HSTS 、 Alt-Svc、Public Suffix List(PSL)、エンティティタグ(ETags)、範囲要求、転送圧縮(gzip、Brotli、zstd)、カスタムヘッダー、カスタムメソッド、リダイレクト追跡など、さまざまなセキュリティおよびトランスポート機能をサポートしています。
また、SOCKS4、SOCKS5、HAProxy、チェーン接続とUnixドメインソケットを備えたHTTPプロキシ、およびユーザー+パスワード認証[ 12 ]を含むプロキシとネットワークのサポートも提供しています。高度な名前解決機能には、DNS-over-HTTPS、カスタムDNSサーバー、ホスト/ポートマッピング、およびDNSキャッシュが含まれます。
追加機能として、ファイル転送の再開、FTPアップロード、フォームベースのHTTPアップロード、HTTPS証明書、および設定可能なタイムアウト、自動再試行、レート制限、接続停止の検出など、転送を制御および監視するためのメカニズムが含まれています。また、JSON形式のメタデータ、コンテンツ配置処理、IDNホスト名の表示、カスタマイズ可能な転送情報など、高度なレポート機能も提供しています。
このlibcurlライブラリは移植性が高く、以下のプラットフォームを含むほとんどのプラットフォームで同じように構築および動作します。[ 13 ] [ 14 ] [ 15 ]
このlibcurlライブラリはスレッドセーフで、IPv6と互換性があります。バインディングは、C、C++、Java、Julia (バンドルされています)、PHP、Pythonなど、 50 以上の言語で利用可能です。[ 17 ]
このlibcurlライブラリは、 GnuTLS、mbedTLS、SChannel(Windows上)、OpenSSL、BoringSSL、AWS-LC、QuicTLS、LibreSSL、AmiSSL、wolfSSL、rustlsを介してSSL/TLSをサポートしています。[ 18 ]
curlは、 URL構文を使用してファイルを含むデータを取得または送信するためのコマンドラインツールです。ライブラリcurlへのインターフェースを提供しlibcurl、がサポートするすべてのプロトコルをサポートしますlibcurl。[ 12 ]
curlHTTPSをサポートし、デフォルトで SSL または TLS 証明書の検証を実行します。HTTPScurl経由でリモート サーバーに接続すると、リモート サーバー証明書を取得し、CA 証明書ストアに対してリモート サーバーの有効性をチェックして、リモート サーバーが主張どおりのサーバーであることを確認します。一部のパッケージには、CA 証明書ストア ファイルが同梱されています。CA 証明書を指定するには、やなどcurl、いくつかのオプションがあります。オプションを使用すると、CA 証明書ストア ファイルの場所を指定できます。--cacert--capath--cacert
Windows 10 バージョン 1809 以降、Windows には が同梱されていますcurl.exe。[ 15 ] Microsoft Windows では、CA 証明書ファイルが指定されていない場合、curl はcurl-ca-bundle.crt次の場所で指定された順序でファイルを探します。[ 19 ]
curl.exeが置かれている場所)C:\Windows\System32ディレクトリC:\WindowsディレクトリPATH環境変数で指定されたディレクトリcurlリモートサーバーが自己署名証明書を使用している場合、またはリモートサーバー証明書がCA証明書ファイルに記載されているCAによって署名されていない場合は、エラーメッセージが返されます。-kまたは--insecure、オプションを使用して証明書の検証をスキップできます。あるいは、リモートサーバーが信頼されている場合は、リモートサーバーのCA証明書をCA証明書ストアファイルに追加できます。
tiny-curlは、wolfSSL社が組み込み機器やリソース制約のある機器向けに開発した、libcurlの軽量版です。一般的な32ビットアーキテクチャ上で、約100KBのコードでHTTPS機能を実装します。
curlとlibcurlはMITライセンスの下で配布されています。組み込みシステム向けに最適化され、wolfSSLによってサポートされているcurlのバージョンであるtiny-curlは、GNU GPLv3以降と商用ライセンスの両方で利用可能です。
Rock-solid curl [ 20 ]長期サポート (LTS) 版は、デフォルトで同じ curl ライセンスを使用し、契約によるサポートや保証が必要な組織向けに商用ライセンスのオプションも用意されています。
Daniel は、ブラジル人の Rafael Sagula が作成し、最近バージョン 0.1 をリリースした既存のコマンドライン オープンソース ツール httpget をそのまま採用しました。いくつかの小さな調整の後、それはまさに彼が必要としていたことを実行しました。[...] HttpGet 1.0 は、まったく新しい HTTP プロキシ サポートとともに 1997 年 4 月 8 日にリリースされました。[...] Stenberg は、EFnet の Amiga 関連のチャンネル用の IRC ボットの作成に時間を費やしていました。その後、彼はインターネット リレー チャット (IRC) ユーザーが通貨交換計算を利用できるようにするというアイデアを思いつきました。
最初のcurlリリース。このツールは、これ以前はurlgetという名前でした。さらにその前はhttpgetでした。
Linux cURL のコマンドのエミュレーションに従って、ファイル cURL.ps1 のコンテンツを作成するだけで十分です。