Mirror:
Manual at official cURL site,
AT,
AU,
DE1,
DE2,
DE3,
DK,
EE,
FR,
RU,
SE,
TH,
TW,
US1,
US2,
US3
Manual -- curl usage explained (Japanese Translation)
この文書について:
- この文書は,cURLのManualを,ねこ☆/catstarが,自分が使用するために日本語訳したものです。
- 基になるManualは,上記 Mirror: のリンク先にある文書です。
- この文書に記されている内容については,翻訳者は一切責任を負いません。
- この文書は,無保証/現状のままでの提供となります。
- 翻訳ミスについては,ご指摘頂ければ,可能な限り修正するようにします。
- 指摘先はこちら:cat@mbb._NO_SPAM_nifty.ne.jp(半角に直して,SPAM除け文言を外してお送りください)
LATEST VERSION -- 最新のバージョン
最新版及び進行中の内容に関するニュースは,curlのweb pageで知ることができます.場所は:
http://curl.haxx.se
SIMPLE USAGE -- 単純な使い方
netscape web-serverのメインページを取得します:
curl http://www.netscape.com/
funetのftp-serverの,ユーザのホームディレクトリにある,READMEファイルを取得します:
curl ftp://ftp.funet.fi/README
サーバのport 8000を使って,web pageを取得します:
curl http://www.weirdserver.com:8000/
FTPサイトのディレクトリリストを取得します:
curl ftp://cool.haxx.se/
funetのgopherサーバから,gopher ドキュメントを取得します:
curl gopher://gopher.funet.fi
辞書から,curlの定義を取得します:
curl dict://dict.org/m:curl
一度に2つの文書を取得します:
curl ftp://cool.haxx.se/ http://www.weirdserver.com:8000/
DOWNLOAD TO A FILE -- ファイルにダウンロードする
web pageを取得してローカルのファイルに格納します:
curl -o thatpage.html http://www.netscape.com/
web pageを取得してローカルのファイルに格納します。ローカルのファイル名は
リモートドキュメントの名前から取得します(もしURLにファイル名が指定されて
いない場合,これは失敗します):
curl -O http://www.netscape.com/index.html
2つのファイルを取得し,それぞれのリモートファイル名を用いて保存します:
curl -O www.haxx.se/index.html -O curl.haxx.se/download.html
USING PASSWORDS -- パスワードの使用
FTP
FTPでのファイル取得に対して,アカウントとしてnameとpasswdを用いる場合,
以下のようにURLに含めます:
curl ftp://name:passwd@machine.domain:port/full/path/to/file
または,-u フラグを用いて指定します:
curl -u name:passwd ftp://machine.domain:port/full/path/to/file
FTPS
FTPとほとんど同じですが,証明書に関して,SSL固有のオプションを指定したり
使用したりすることになるかもしれません。
HTTP
HTTPのURLは,URLストリング内にuserとpasswordを含めることをサポートしてい
ません。(しかし)CurlはFTPスタイルのインタフェース(URLに含めるスタイル)
をサポートしているので,次のようにしてファイルを取得することができます:
curl http://name:passwd@machine.domain/full/path/to/file
または,userとpasswordを分離して指定します:
curl -u name:passwd http://machine.domain/full/path/to/file
HTTPは多くの異なった認証手段を提供しており,curlは,Basic認証,Digest認証,
NTLM認証,Negotiateをサポートしています。どの手段を用いるか指定しない場合,
curlはデフォルトとしてBasic認証を用います。--anyauth オプションを用いるこ
とで,curlに対し,与えたURLにおいてサーバが提供している,最もセキュアな認
証手段を用いることを指示できます。
注意! HTTPのURLはuserとpasswordをサポートしていないので,このスタイルで
proxy経由でcurlを使用することはできません。このような環境では,-u オプショ
ンを用いなくてはなりません。
HTTPS
多くの場合,プライベート証明書と一緒に使用されます。以下で解説する通りです。
GOPHER
curlはgopherにおいてはpasswordをサポートしていません。
PROXY -- proxyの利用
"my-proxy"という名前のproxyのport888を介して,FTPでファイルを取得します:
curl -x my-proxy:888 ftp://ftp.leachsite.com/README
同じproxyを介して,userとpasswordを要求するHTTPサーバからファイルを取得します:
curl -u user:passwd -x my-proxy:888 http://www.get.this/
いくつかのproxyはproxyに対しての認証を要求します。-U オプションで指定します:
curl -U user:passwd -x my-proxy:888 http://www.get.this/
curlがサポートする環境変数についても参照してください。これは,proxyの
利用について指定することができます。
RANGES -- 範囲指定
HTTP 1.1によって,byte単位のrangeが導入されました。これを用いることで,
クライアントは,特定のドキュメントの1つまたは複数の部分をリクエスト
することができます。curlはこれを -r オプションでサポートしています。
ドキュメントの最初の100byteを取得します:
curl -r 0-99 http://www.get.this/
ドキュメントの最後の500byteを取得します:
curl -r -500 http://www.get.this/
curlは,FTPに対しても,シンプルなrangeをサポートしています。開始位置
と終了位置だけを指定することができます。
FTPを用いてドキュメントの最初の100byteを取得します:
curl -r 0-99 ftp://www.get.this/README
UPLOADING -- アップロード
FTP
標準入力(stdin)からの全てのデータを,指定したFTPサイトにuploadします:
curl -T - ftp://ftp.upload.com/myfile
指定したファイルを,userとpasswordを用いてログインし,uploadします:
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/myfile
ローカルファイルをリモートサイトにアップロードし,リモートのファイル
名に,ローカルのファイル名を用います:
curl -T uploadfile -u user:passwd ftp://ftp.upload.com/
FTPを用いて,リモートのファイルにローカルのファイルを追記(append)します:
curl -T localfile -a ftp://ftp.upload.com/remotefile
curlはproxy経由のftpアップロードもサポートしていますが,但し,proxyが
tunnelingを許可するように設定されていなくてはなりません。もし設定され
ている場合,以下のように実行できます:
curl --proxytunnel -x proxy:port -T localfile ftp.upload.com
HTTP
標準入力(stdin)からの全てのデータを,指定したhttpサイトにuploadします:
curl -T - http://www.upload.com/myfile
これがうまく動作するためには,予め,httpサーバがPUTを受け付けるように
設定しておく必要があります。
httpでデータをアップロードするための他の方法については,POSTの節を参照
してください。
VERBOSE / DEBUG -- 詳しいメッセージ/デバッグ
curlが,サポートしていない点で失敗した場合や,サーバが受け付けてくれ
ない場合,レスポンスが理解できない場合などには,-vオプションを用いる
ことで,より詳しいメッセージを取得することができます。curlはたくさん
の情報と,クライアント−サーバ間のやりとりにおいて送受信した内容を示
してくれます(但しこれは実際の送受信データを示すものではありません)。
curl -v ftp://ftp.upload.com/
To get even more details and information on what curl does, try using the
--trace or --trace-ascii options with a given file name to log to, like
this:
curlの動作についての詳細と情報を得るには,--traceまたは--trace-ascii
オプションを,ログを保存するためのファイル名称を指定した上で,次のよ
うに用いてください:
curl --trace trace.txt www.haxx.se
DETAILED INFORMATION -- 詳細な情報
指定したファイルやドキュメントに対して詳細な情報を取得するには,プロト
コル毎に異なった方法が提供されています。curlで,単一のファイルに関する
詳細な情報を取得したい場合は,-Iまたは--headオプションを用いるべきです。
これは,HTTP及びFTPに対して,単一のファイルに関する取得可能な全ての情報
を表示します。HTTPの情報についてはさらに拡張されています。
HTTPについては,データの前に示されるヘッダ情報(-Iオプションで表示される
ものと同一です)を,-iまたは--includeオプションを用いて取得することがで
きます。curlは,FTP及びHTTPにおいて, -Dまたは--dump-headerオプションを
指定することで,ヘッダを指定したファイルに保存します。
HTTPヘッダを別のファイルに保存します(例:headers.txt):
curl --dump-header headers.txt curl.haxx.se
別ファイルに保存されたヘッダは,後に,サーバにcookieを送信したい場合に
有用になります。cookieの節を参照してください。
POST (HTTP) -- POSTメソッド(HTTP)
curlを用いてデータをpostするのは簡単です。-d <data>オプションを
用います。postされるデータはURLエンコードされている必要があります。
ゲストブックに,単純な"name"と"phone"をpostします。
curl -d "name=Rafael%20Sagula&phone=3320780" \
http://www.where.com/guest.cgi
curlを用いてformにpostする方法,レッスン1:
(postしたい)formから,全ての<input>タグを抜き出します(curlの
siteにあるperlプログラム:formfind.plが,この作業の助けになるでしょう)。
もし"普通の"postであれば,-dオプションを使います。-dは,引数として
postする文字列全体をとります。形式は以下のようなものです:
<variable1>=<data1>&<variable2>=<data2>&...
The 'variable' names are the names set with "name=" in the <input> tags, and
the data is the contents you want to fill in for the inputs. The data *must*
be properly URL encoded. That means you replace space with + and that you
write weird letters with %XX where XX is the hexadecimal representation of
the letter's ASCII code.
'variable'は,<input>タグの"name="で指定されたもので,'data'は,
送信するデータです。'data'は正しくURLエンコードされていなくてはなり
ません。これはすなわち,スペースを"+"で置換し,問題のある文字は%XX
形式(XXは文字のASCIIコードの16進数表現)に変換することを意味します。
例:
(ページが http://www.formpost.com/getthis/ にあるとします)
<form action="post.cgi" method="post">
<input name=user size=10>
<input name=pass type=password size=10>
<input name=id type=hidden value="blablabla">
<input name=ding value="submit">
</form>
ユーザ'foobar',パスワード'12345'でログインしたいとします。
これをPOSTするには,コマンドラインで次のように入力します:
curl -d "user=foobar&pass=12345&id=blablabla&ding=submit" (次行につづきます)
http://www.formpost.com/getthis/post.cgi
-d オプションは,MIMEタイプとして application/x-www-form-urlencoded を
用います。これはCGIなどにおいて一般的に理解されます。curlは,より
高機能な multipart/form-data タイプもサポートしています。これは,
ファイルのアップロードのようなものについてサポートしています。
-F オプションは,-F "name=contents"という形式のパラメータをとります。
contentsをファイルから取得したい場合は,contentsに<@filename>を
指定します。ファイルを指定した場合は,ファイル名の後ろに';type=<mime type>'
と追記することによって,タイプも指定することができます。また,1つの
フィールドに対して,複数のファイルを指定することもできます。例えば,
'coolfiles'というフィールド名に3つのファイルを,異なったタイプを
用いて送信する場合の記法です:
curl -F "coolfiles=@fil1.gif;type=image/gif,fil2.txt,fil3.html" \
http://www.post.com/postit.cgi
もしcontent-typeが指定されていない場合は,curlはファイルの拡張子(ごく
一部だけしか対応しません)から推測を試みます。または,以前に指定された
タイプ(複数のファイルをリストで指定されている場合の,先頭側のファイル)
を用いるか,デフォルトタイプである'text/plain'を用います。
-F オプションを用いて,form入力をエミュレートします。1つのformに3つの
フィールドがあるとします。1つはpostするファイル名を,1つはあなたの
名前を,もう1つはファイルについての説明です。postしたいファイルは
"cooltext.txt"です。curlに,あなたの好みのbrowserに代わってこのデータを
postさせるためには,このformのページのHTMLソースを読んで,inputフィールド
を見つけます。今回の例では,inputフィールドの名前は'file','yourname',
'filedescription'です。
curl -F "file=@cooltext.txt" -F "yourname=Daniel" \
-F "filedescription=Cool text file with cool text inside" \
http://www.post.com/postit.cgi
2つのファイルを1度のpostで送信するには2つの方法があります:
1. 1つのフィールドと1つのフィールド名で複数のファイルを送信します:
curl -F "pictures=@dog.gif,cat.gif"
2. 2つのフィールドと2つのフィールド名で送信します:
curl -F "docpicture=@dog.gif" -F "catpicture=@cat.gif"
REFERRER -- リファラ
HTTPリクエストは,オプションとして,どのページから参照されたかに
ついての情報を含むことができます。curlは,referrerを,コマンドライン
から指定することができます。これは特に,この情報が取得できること,
または正しい情報が含まれていることを期待しているような,サーバまたはCGI
スクリプトを騙すために使うことができます。
curl -e www.coolsite.com http://www.showme.com/
注意:referrer フィールドは,HTTP仕様において,full URLでなければ
ならないと規定されています。
USER AGENT -- ユーザエージェント
HTTPリクエストは,リクエストを生成するブラウザについての情報を含める
オプションをサポートしています。curlはこの情報をコマンドラインから
指定することができます。これは,ある特定のブラウザしか認めないような
サーバまたはCGIを騙すのに有用です。
例:
curl -A 'Mozilla/3.0 (Win95; I)' http://www.nationsbank.com/
他の一般的な文字列は:
'Mozilla/3.0 (Win95; I)' Netscape Version 3 for Windows 95
'Mozilla/3.04 (Win95; U)' Netscape Version 3 for Windows 95
'Mozilla/2.02 (OS/2; U)' Netscape Version 2 for OS/2
'Mozilla/4.04 [en] (X11; U; AIX 4.2; Nav)' NS for AIX
'Mozilla/4.05 [en] (X11; U; Linux 2.0.32 i586)' NS for Linux
Internet Explorer は,常に,全ての点で互換性をとろうとします:
'Mozilla/4.0 (compatible; MSIE 4.01; Windows 95)' MSIE for W95
Mozillaが取りうるUser-Agent名は1つではありません:
'Konqueror/1.0' KDE File Manager desktop client
'Lynx/2.7.1 libwww-FM/2.14' Lynx command line browser
COOKIES -- クッキー
cookieは,クライアントサイドにおいてstate情報を維持するために,webサーバ
によって一般的に用いられます。サーバは,応答に,'Set-Cookie: <data>'
という形式のヘッダを含めることによって,cookieをセットします。data部分は,
NAME=VALUEのペアとして格納されます(セミコロン';'によって,"NAME1=VALUE1;
NAME2=VALUE2;"というように分離されます)。サーバはまた,"cookie"がどの
パスに対して用いられるものなのか("path=value"で指定),"cookie"の有効期限
("expire=DATE"で指定),どのドメインで有効か("domain=NAME"で指定),
使用をセキュアな接続時に限定するか("secure"で指定),をそれぞれ指定する
ことができます。
このようなヘッダを含んだページをサーバから受け取ったとします:
Set-Cookie: sessionid=boo123; path="/foo";
これは,"/foo"で始まるパスから何か取得しようとする場合に,最初のペアを
送信して欲しい,とサーバが望んでいることを示します。
例として,cookieを介して名前を要求するページを取得します:
curl -b "name=Daniel" www.sillypage.com
curlは,以前に取得しておいたcookieを,以降のセッションに用いることが
できます。サーバからcookieを取得して,以下のように保存するとします:
curl --dump-header headers www.example.com
... その後,そのサイト(または別のサイト)に接続する際に,'headers'
ファイルに保存されたcookieを使用します:
curl -b headers www.example.com
ヘッダをファイルに保存するのは,cookieを保存するための一つの方法ですが,
これはエラーが生じる恐れもありますし,正しい保存方法ではありません。
かわりに,curlに,受信したcookieを,よく知られたnetscape形式のcookie
ファイルで保存させます:
curl -c cookies.txt www.example.com
-b オプションを指定することで,"cookie awareness"を有効にします。
さらに -L オプションを指定することで,curlに,"location:"ヘッダに
従わせることができます(これは,cookieと併せてしばしば用いられます)。
従って,もしサイトがcookieとlocationを送信してくる場合,以下のように,
存在しないファイルを,cookie awarenessにするためのトリガとして使う
ことができます:
curl -L -b empty.txt www.example.com
cookieを読み込むファイルは,plain HTTPヘッダまたは,netscapeのcookie
ファイル形式でなくてはなりません。curlは,ファイルの内容から,どちらの
種類かを決定します。上述のコマンドでは,curlは,www.example.comから
取得したヘッダを解析し,cookieを保存します。curlは,保存されたcookieを
locationで指定されたサーバに送信します。"empty.txt"は,存在しない
ファイルかもしれません。
netscape形式のcookieファイルからcookieを読み書きする場合,-b と -c
の両オプションを,同一のファイルに対して使うことができます:
curl -b cookies.txt -c cookies.txt www.example.com
PROGRESS METER -- 進捗メータ
進捗メータは,ユーザに,動作状況を示すために存在します。出力の各フィールド
の意味は次の通りです:
% Total % Received % Xferd Average Speed Time Curr.
Dload Upload Total Current Left Speed
0 151M 0 38608 0 0 9406 0 4:41:43 0:00:04 4:41:39 9287
左から順に:
% - 転送全体のうちの完了した割合を示します
Total - 想定される転送量の全体の容量を示します
% - 既にダウンロードされた割合を示します
Received - 既にダウンロードされたバイト数を示します
% - 既にアップロードされた割合を示します
Xferd - 既にアップロードされたバイト数を示します
Average Speed
Dload - 平均のダウンロード速度を示します
Average Speed
Upload - 平均のアップロード速度を示します
Time Total - 操作が完了するまでの全体の予想時間を示します
Time Current - 操作を開始してからの経過時間を示します
Time Left - 操作完了までの残り予想時間を示します
Curr.Speed - 最後の5秒間における平均転送速度を示します
(転送開始時の最初の5秒については,経過時間ベースです)
-# オプションは,進捗メータを,プログレスバー形式で表示します。
詳しい説明は表示されません。
SPEED LIMIT -- 速度制限
curlは,転送速度条件を指定することができます。-y および -Y オプション
を使用することで,curlに対し,もし転送速度が,指定した最低限度を,
指定した時間以上下回った場合に,転送を中断させることができます。
curlに対し,3000byte/sec. 以下の転送速度が60秒以上続いた場合に中断を
指示します:
curl -Y 3000 -y 60 www.far-away-site.com
これは,全体での時間制限との組み合わせで用いられることが多いです。
前述の操作を30分以内で完了するように制限する場合は:
curl -m 1800 -Y 3000 -y 60 www.far-away-site.com
Forcing curl not to transfer data faster than a given rate is also possible,
which might be useful if you're using a limited bandwidth connection and you
don't want your transfer to use all of it (sometimes referred to as
"bandwidth throttle").
curlに対し,指定した速度以上では転送しないようにする指定も可能です。
これは,制限された帯域を用いていて,その帯域を使い切らないように
したい場合("bandwidth throttle"として言及されます)に有用です。
curlに,10kByte/sec. 以下で転送するように指定します:
curl --limit-rate 10K www.far-away-site.com
あるいは
curl --limit-rate 10240 www.far-away-site.com
curlに,1MByte/sec.以上の速度でアップロードしないように指定します:
curl -T upload --limit-rate 1M ftp://uploadshereplease.com
--limit-rate オプションを使用する場合,転送速度は,1秒あたりの値で
指定されますが,これは,全体の転送速度を,与えられた数値より低くして
しまうことがあります。もし転送が何度か詰まった場合,必然的に低くなります。
CONFIG FILE -- 設定ファイル
curlは,起動時に,ユーザのホームディレクトリから,.curlrc ファイル
(win32システムでは _curlrc ファイル)を自動的に読み込みます。
設定ファイルは,通常のコマンドラインオプションからなりますが,より
読みやすくする目的で,長いタイプのオプションも,ダッシュを省いた形で
使用することができます。オプションとパラメータの間は,スペースか,'=',
または":"で分離します。ファイル内ではコメントも使用することができます。
もし行の先頭文字が'#'であった場合,その行はコメントとして扱われます。
もしパラメータ内にスペースを含めたい場合,パラメータ全体をdouble-quote(")
でかこむ必要があります。もしそのパラメータ内に'"'自身が含まれる場合,
'\"'としてエスケープする必要があります。
注意:オプションと引数は同一の行に指定しなくてはなりません。
例として,デフォルトのタイムアウトとプロキシを指定します:
#タイムアウトを30分にします:
-m 1800
#全てのアクセスにプロキシを使用します:
proxy = proxy.our.domain.com:8080
行末にあるホワイトスペースは意味を持ちますが,各行の先頭にあるホワイト
スペースは無視されます。
curlにデフォルトファイルを無視させるには,次のように,コマンドライン
パラメータの先頭に -q オプションを記述します:
curl -q www.thatsite.com
curlに,URLが指定されなかった場合に,ローカルのヘルプページを取得して,
表示させるための設定ファイルは次のようになります:
#デフォルトURL
url = "http://help.with.curl.com/curlhelp.html"
-K または --config オプションを用いることによって,別の設定ファイルを
使用させることができます。もし設定ファイル名として"-"を指定した場合,
設定を標準入力(stdin)から読み込ませることを意味します。これは,プロセス
テーブルなどにおいて,オプションの内容を表示させないために使うことが
できます:
echo "user = user:passwd" | curl -K - http://that.secret.site.com
curlを自身の特定のプログラムで使う場合に,webページを取得する際に,
自分自身のカスタムヘッダを送信したい場合があるかもしれません。これは,
-H オプションで実現できます。
例として,webページ取得時に,ヘッダ "X-you-and-me: yes" を送信します:
curl -H "X-you-and-me: yes" www.love.com
これは,curlに,通常とは異なるヘッダを出力させたい場合にも有用です。
-H オプションで指定したヘッダは,curlが通常送信するヘッダを上書き
します。もし,内部ヘッダ(通常送信されるヘッダ)を空白で置き換えた場合,
これは,そのヘッダを送信させないことになります。Host: ヘッダを送信
させない場合は次のようになります:
curl -H "Host:" www.server.com
FTP and PATH NAMES -- FTPとpath
URLとして ftp:// の形式でファイルを取得する場合,与えられるpathは,
ログインするディレクトリに依存することに注意してください。'README'
ファイルを自分のFTPサイトの自分のホームディレクトリから取得する場合:
curl ftp://user:passwd@my.site.com/README
しかし,README ファイルを,同じサイトのルートディレクトリから取得
したいこともあるでしょう。その場合は絶対パスを指定する必要があります:
curl ftp://user:passwd@my.site.com//README
(ファイル名の前に余分なスラッシュがあります)
FTP and firewalls -- FTPとファイアウォール
FTPプロトコルは,データ転送を開始するに際して,第二の接続を開こうと
します。これを行うには2つの方法があります。
curlのデフォルトの動作は,PASVコマンドを用いて,サーバに対し,別の
ポートを開いて,クライアントからの接続を待ち受けるようにさせること
です。これは,クライアントがファイアウォールの内側にいて,外側から
内側への接続が許可されていないような状況においては良い方法です。
curl ftp.download.com
例として,サーバがファイアウォールの背後にいて,port 21以外への接続を
許可していない場合(または単にPASVコマンドをサポートしていない場合)は,
別の方法として,PORTコマンドを用いて,サーバに対し,クライアントへ,
与えられたIPアドレスとポート番号(PORTコマンドの引数として与えられます)
を用いて接続するように指示します。
-P オプションは,あまり多くの選択肢がありません。あなたのマシンは
それほど多くのIPアドレスやネットワークインタフェースを持っていない
かもしれませんし,curlは,その中からどれを使うかを選択することしか
選択肢を提供することができません。デフォルトアドレスを使う場合は:
curl -P - ftp.download.com
PORTコマンドで,'le0'インタフェースで接続させる場合(windowsでは動作
しません)は:
curl -P le0 ftp.download.com
PORTコマンドで,IPアドレスとして192.168.0.10を使用させる場合は:
curl -P 192.168.0.10 ftp.download.com
NETWORK INTERFACE -- ネットワークインタフェースの指定
サーバから特定のインタフェースを用いてwebページを取得する場合:
curl --interface eth0:1 http://www.netscape.com/
または
curl --interface 192.168.1.10 http://www.netscape.com/
HTTPS -- HTTPSの利用
セキュアなHTTPを利用するには,SSLライブラリがインストールされている
ことと,curlがビルドされた際にそれが利用されていることが必要です。
もしそれが為されていれば,curlはHTTPSプロトコルを用いてのドキュメント
取得やポストを行うことができます。
例:
curl https://www.secure-site.com
curlは,有効な証明書を求めてくるサイトに対しての,個人証明書を使った,
ファイルのget/postをサポートしています。唯一の欠点は,証明書がPEMフォー
マットでなくてはならない,ということです。PEMは,証明書を格納するための
標準でオープンなフォーマットですが,最も普及しているブラウザでは使用さ
れていません(NetscapeとMSIEは,PKCS#12フォーマットを利用しています)。
もしcurlに,あなたのブラウザで用いている証明書を利用させたい場合,証明書の
コンバータをダウンロードしてコンパイルし,その上で,あなたのブラウザの
証明書を,PEMフォー的にコンバートする必要があります。この種類のコンバータ
は,OpenSSLの最近の版には含まれており,古い版向けには,Dr. Stephan N.
Henson によって,SSLeayへのパッチという形式で書かれています。このパッチ
(SSLeayのインストールが必要です)は,彼のサイトから取得できます:
http://www.drh-consultancy.demon.co.uk/
個人の証明書とパスワードを用いて,自動的にドキュメントを取得する例です:
curl -E /path/to/cert.pem:password https://secure.site.com/
もし,コマンドラインからパスワードを指定しなかった場合,データを取得する
前に,正しいパスワードの提示を求められます。
多くの古いSSLサーバは,SSLv3またはTLSに関して問題を抱えています。
OpenSSLの新しいバージョンなどを用いている場合は,従って,curlが使用する
SSLのバージョンを指定することが有用な場合があります。-3,-2,-1の
オプションで指定します(それぞれ,SSLv3,SSLv2,TLSv1に対応します)。
curl -2 https://secure.site.com/
指定しない場合,curlは,最初にv3を試し,次にv2を使用します。
OpenSSLを,通常つかっているブラウザの証明書をcurlで利用できるPEMフォーマット
にコンバートするために用いる場合,次のようにしてください(netscapeを
想定していますが,IEでも同様です):
Netscapeの'security'メニューボタンを押下します。
'certificates->yours'を選択し, リストから証明書を選択します。
'export'ボタンを押下します。
その証明書に対するPINを入力します。
保存するための適切な場所を指定します。
opensslを,証明書をコンバートするために起動します。opensslがインストール
されたディレクトリにいるとして,次のようにしてください:
#. /apps/openssl pkcs12 -in [file you saved] -clcerts -out [PEMfile]
RESUMING FILE TRANSFERS -- ファイル転送のresume
前回中断されたファイル転送を再開するために,curlは,ftpのupload/downloadと
同様に,http(s)のresumeをサポートしています。
ドキュメントのダウンロードを再開します:
curl -C - -o file ftp://ftp.server.com/path/file
ドキュメントのアップロードを再開します(*1):
curl -C - -T file ftp://ftp.server.com/path/file
webサーバからのドキュメントのダウンロードを再開します(*2):
curl -C - -o file http://www.server.com/
(*1) = これは,FTPサーバが,非標準コマンドの SIZE をサポートしている
必要があります。もしサポートしていない場合,curlはその旨の
エラーを表示します。
(*2) = これは,webサーバが少なくともHTTP/1.1をサポートしている必要が
あります。もしサポートしていない場合,curlはその旨のエラーを
表示します。
TIME CONDITIONS -- 時間の指定
HTTPは,クライアントに対して,ドキュメントをリクエストする際の時間条件を
指定することを認めています。これは,If-Modified-Since または If-Unmodified-Since
です。curlは,-zまたは--time-cond オプションでこれを指定することが
できます。
例として,リモートファイルがローカルコピーより新しい場合のみダウンロード
する場合は:
curl -z local.html http://remote.server.com/remote.html
または,ローカルファイルがリモートファイルより新しい場合にのみダウンロード
することもできます。このためには,日付条件の前に'-'を指定します:
curl -z -local.html http://remote.server.com/remote.html
自由な書式で日づけ条件を指定することもできます。curlに対して,昨日以降,
アップデートされている場合のみダウンロードします:
curl -z yesterday http://remote.server.com/remote.html
curlは広範囲の日付フォーマットをサポートします。ダッシュ'-'を前置することで,
日付を逆にチェックすることができます。
DICT -- 辞書
遊んでみてください。
curl dict://dict.org/m:curl
curl dict://dict.org/d:heisenbug:jargon
curl dict://dict.org/d:daniel:web1913
'm'は'match'と'find'のエイリアスです。'd'は'define'と'lookup'のエイリ
アスです。例として:
curl dict://dict.org/find:curl
RFCに記述されているURL記法のルールを破るコマンド(しかしDICTプロトコル
ではありません)は:
curl dict://dict.org/show:db
curl dict://dict.org/show:strat
認証は未だ実装されていません(RFCでは要求されていません)。
LDAP -- LDAPの利用
もしOpenLDAPライブラリをインストールしている場合,curlはそれを利用でき,
ldap:// プロトコルもサポートします。
LDAPは複雑で,LDAPクエリを書くことは簡単なことではありません。記法に
ついてはどこか別のところで探すことをお勧めします。二箇所を勧めておきます:
Netscape's "Netscape Directory SDK 3.0 for C Programmer's Guide Chapter 10:
Working with LDAP URLs":
http://developer.netscape.com/docs/manuals/dirsdk/csdk30/url.htm
RFC 2255, "The LDAP URL Format" http://www.rfc-editor.org/rfc/rfc2255.txt
例を示すために,自分のローカルLDAPサーバから,メールアドレスに特定の
サブドメインを持つ全ての人を取得します:
curl -B "ldap://ldap.frontec.se/o=frontec??sub?mail=*sth.frontec.se"
もし,この情報をHTMLフォーマットで取得したい場合は,-B(ASCIIを強制)オプ
ションを外すことで可能です。
ENVIRONMENT VARIABLES -- 環境変数
curlは,以下の環境変数に従います:
http_proxy, HTTPS_PROXY, FTP_PROXY, GOPHER_PROXY
これらはプロトコル固有のproxyです。全体に有効なproxyは次のように指定します:
ALL_PROXY
どのようなproxyも用いないで接続するべきホスト名のリストは,コンマで
区切って次の環境変数に指定します('*'は全てのホストにマッチします)。
NO_PROXY
もし,ドメインのパスの末尾の文字列が指定されたホストに合致した場合,
そのノードとのやり取りは,proxyを使用せずに行われます。
-xまたは--proxyオプションを利用すると,環境変数を上書きします。
NETRC -- NETRC
Unixは,古くから,.netrcという概念を導入しています。これは,ユーザに,
よく訪問するftpサイトについてのusernameとpasswordをファイルに指定する
ことで,それらのサイトを訪れる際にいちいちタイプしなくても済むように
させたものです。これは,もし第三者があなたのパスワードを取得した場合に
非常に大きなセキュリティリスクとなることから,多くのunixプログラムでは,
所有者自身のみ読み込み可能な状態になっていない場合は,このファイルは
読み込まないようにしています(curlはこの点はケアしていません)。
curlは,-n または --netrc ,--netrc-optional オプションによって指定
された場合のみ,.netrcファイルをサポートします。これはftpに限られた
ものではなく,curlは,認証が用いられている全てのプロトコルに対して
適用します。
とてもシンプルな .netrc ファイルは次のようなものです:
machine curl.haxx.se login iamdaniel password mysecret
CUSTOM OUTPUT -- カスタム出力
スクリプトプログラマの便宜のために,curlの進捗を知るための,-w または
--write-out オプションが導入されています。これを用いることで,転送に
ついての情報を表示させることができます。
ダウンロードされたバイト数を,テキストと改行を加えて表示させます:
curl -w 'We downloaded %{size_download} bytes\n' www.download.com
KERBEROS4 FTP TRANSFER -- Kerberos4を用いたFTP転送
curlは,FTP転送について,kerberos4をサポートしています。kerberosパッケージ
をインストールし,これを使うようにビルドされたcurlを用いる必要があります。
最初に,kauth ツールを用いて,通常の手順どおりkrb-ticketを取得します。
次に,curlを次のように利用します:
curl --krb4 private ftp://krb4site.com -u username:fakepwd
-u オプションで指定したパスワードは使われませんが,空白にした場合,
curlはこれを質問してきます。しかし,真のパスワードは既にkauthに対して
入力済みです。
TELNET -- Telnet
curlは,telnetを基本的にサポートしており,使用するのはとても簡単です。
curlは標準入力(stdin)からの全てのデータをリモートサーバに送信します。
リモートのtelnetサーバに接続するには次のようにします:
curl telnet://remote.server.com
そして,サーバへ送信するデータを標準入力から入力します。結果は,
標準出力(stdout)または,-o オプションで指定したファイルに送られます。
遅い接続などの場合には,-N または --no-buffer オプションを指定する
ことで,バッファ出力をオフにすることができます。
telnetプロトコルのネゴシエーションに対してオプションを送信するには,
-t オプションを用います。サーバに対して,vt100ターミナルを使用する
ことを通知するには,次のようにしてください:
curl -tTTYPE=vt100 telnet://remote.server.com
-t で送信する他の興味深いオプションとしては次のものがあります:
- XDISPLOC=<X display> Xのdisplayを指定します。
- NEW_ENV=<var,val> 環境変数を指定します。
注意:telnetプロトコルは,ログインにおいてのuserとpasswordを指定する
方法を定めていません。従ってcurlはログインを自動的に行うことができま
せん。ログインを行うには,loginプロンプトが受信されるのを監視して,
それに従ってusernameとpasswordを送信する必要があります。
PERSISTENT CONNECTIONS -- 永続的コネクション
複数のファイルの転送を一つのコマンドラインで行わせることができます。
指定された順序で一つづつ転送されます。
libcurlは,転送に際して永続的コネクションを使用しようとします。従って,
同じホストに対する二回目の転送においては,既に初期化され,前回の転送
でオープンされたままの接続をそのまま使用することができます。これは,
最初の転送以外での接続時間を大幅に減少させ,ネットワークの使用に
際してもよいことです。
curlは,連続して起動された場合は,永続的コネクションを使用することは
できません。もし,多くのURLに接続する場合で,同じホストに接続する場合
には,1つのコマンドラインにまとめることを試すことで,転送が高速化
されるかもしれません。もしhttp proxyをファイル転送に用いる場合は,
事実上,全ての転送は永続化されます。
MAILING LISTS -- メーリングリスト
curl及びその開発,またそれに関連する議論を行うために,いくつかのメーリング
リストを開設しています。全ての情報は http://curl.haxx.se/mail/ で得られます。
使用可能ないくつかのリストは:
curl-users
コマンドラインツールのユーザのためのものです。どうやって使うのか,
なぜ動かないのか,新しい機能,関連するツール,質問,ニュース,
インストール方法,コンパイル方法,進行中の事柄,移植,などです。
curl-library
libcurlの開発者または使用者のためのものです。バグや拡張,改善など。
curl-announce
頻度は少ないです。新しい公開版がアナウンスされるだけです。多くても
月に1通か2通ですが,通常は,2ヶ月に1通ぐらいです。
curl-and-php
Using the curl functions in PHP. Everything curl with a PHP angle. Or PHP
with a curl angle.
PHPにおいてcurlの機能を使う人のためのものです。PHP側の視点でのcurl,
curl側の視点でのPHP,の全てに関して扱います。
curl-and-python
curlを使うPythonハッカーのためのリストです。pycurlを使うか否かは関係ありません。
curlに関する質問や,機能リクエスト,障害報告は,これらのメーリングリストに
送ってください。特定の個人には送らないで下さい。