Windows®環境にcURLコマンドを実行できるようにインストールする手順
2014/11/22
Windowsを利用しているとネット上で見かける情報がそのまま利用できない場合もあります。
今回のWindows上でcURLコマンドの実行した際に「< の使い方が誤っています。」という
エラーに出会ったこともそんなケースの一つです。
ここではWindows環境でcURLコマンドが実行できるようにインストールを行って、
実際に実行する手順をご紹介します。
はじめに
「cURL」私はこれまでこうしたコマンドラインツールが存在していることは、
各種プラグインの検証時に接していたため、知ってはいたものの深追いをしていませんでした。
WordTwitの利用と導入(wordpressプラグイン)#Disable CURL support
しかし今回、JetPackデバッガのデバッグ過程でcURLに触れる機会がありましたので、
しぶしぶですがcURLのインストールと実行環境を用意しました。
その手順をご紹介しておきます。
環境
- windows: windows 7 Ultimate(64bit)
- cURL:
cURLのダウンロード
cURLのダウンロードを行うにはcURLのサイトにアクセスしダウンロードを行います。
curl and libcurl
cURLサイトにアクセスしたらサイドメニューのDownloadをクリックします。
ダウンロードページが開いたらスクロールし下部のほうに表示された、
Win32 – Generic/Win64 – Genericに表示されているcURLをダウンロードします。
今回は確認のため以下のファイルをダウンロードしています。
この辺は、SSLが必要であればSSLが含まれているものなど適宜選択してください。
curl-7.33.0-win64-ssl-sspi / curl-7.33.0-win64-nossl
curl-7.34.0-ssl-sspi-zlib-static-bin-w32
ダウンロードを行ったらzipファイルが保存されます。
zipファイルを解凍します。
cドライブなどにコピーしてインストールは完了です。
フォルダ名は適宜変更します。
コマンドプロンプトでインストールしたディレクトリ(フォルダ)に移動せず実行したい場合には、
環境変数PATHにインストールしたディレクトリを登録してください。
Windows7で環境変数PATHを設定する手順
cURLコマンドの実行
インストールしたcURLでコマンドを実行します。
インストールの確認とヘルプの表示
ここでは「C:\curlx64-nossl」に対してcurlを保存しています。
実行の確認を行うために、cURLのマニュアルを確認してみます。
1 2 3 4 5 6 |
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\>cd c:\curlx64-nossl c:\curlx64-nossl>curl --help |
ざっとヘルプの内容が表示され、確認できます。
さすがに見にくいので、テキストファイルにでも落として読んでください。
ヘルプの内容を「c:\curl_help.txt」に出力し保存しています。
1 |
c:\curlx64-nossl>curl --help >c:\curl_help.txt |
保存したテキストファイルを確認することで、オプションなどを確認することができます。
cURLで実際にサイトにアクセスしてみます。
cURLによるサイトアクセス
curlでコマンドに表示したいURLを続けて入力して利用します。
1 |
curl http://www.example.com/ |
当然ですが、SSLに対応していないcURL(curl-7.33.0-win64-nossl)を
ダウンロードしてインストールしている場合には、
https://…で始まるURLを入力した場合には以下のようにエラーになります。
1 2 |
c:\curlx64-nossl>curl https://www.google.co.jp/ curl: (1) Protocol https not supported or disabled in libcurl |
コマンドプロンプト画面
SSLに対応しているcURL(curl-7.33.0-win64-ssl-sspi)を
ダウンロードしてインストールしている場合には、
https://…で始まるURLを入力するとアクセスは行えますが以下のようにエラーになります
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
c:\curlx64>curl https://www.google.co.jp/ curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: http://curl.haxx.se/docs/sslcerts.html curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option. If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL). If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option. |
コマンドプロンプト画面
これは証明書の検証に失敗しているといった情報のメッセージが表示されています。
とにかく実行したいという場合には、「-k (or –insecure) option」を利用すると書かれていますので、
-k (or –insecure) optionを付加して実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
c:\curlx64>curl --insecure https://www.google.co.jp/ <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage"><head><me ta content="世界中のあらゆる情報を検索するためのツールを提供しています。さまざま な検索機能を活用して、お探しの情報を見つけてください。" name="description"><meta content="noodp" name="robots"><meta content="/images/google_favicon_128.png" it emprop="image"><title>Google</title><script>(function(){ window.google={kEI:"4PcfU_G4LcekkwXq1IHgCw",getEI:function(a){for(var b;a&&(!a.g etAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||google.kEI},h ttps:function(){return"https:"==window.location.protocol},kEXPI:"17259,4000116,4 007661,4007830,4008067,4008133,4008142,4009033,4009352,4009565,4009641,4010297,4 010806,4010858,4010899,4011228,4011258,4011679,4012373,4012504,4012549,4012896,4 013338,4013374,4013414,4013416,4013591,4013605,4013723,4013747,4013787,4013823,4 013979,4014016,4014092,4014273,4014308,4014431,4014513,4014515,4014636,4014649,4 014671,4014792,4014810,4014813,4014825,4014991,4015119,4015121,4015155,4015195,4 015234,4015320,4015349,4015444,4015497,4015516,4015582,4015589,4015628,4015638,4 015640,4015759,4015840,4015904,4015958,4015959,4016000,4016007,8300007,8500157,1 0200002,10200012,10200029,10200030,10200040,10200048,10200053,10200055,10200066, 10200083,10200103,10200120",kCSI:{e:"17259,4000116,4007661,4007830,4008067,40081 33,4008142,4009033,4009352,4009565,4009641,4010297,4010806,4010858,4010899,40112 28,4011258,4011679,4012373,4012504,4012549,4012896,4013338,4013374,4013414,40134 16,4013591,4013605,4013723,4013747,4013787,4013823,4013979,4014016,4014092,40142 73,4014308,4014431,4014513,4014515,4014636,4014649,4014671,4014792,4014810,40148 13,4014825,4014991,4015119,4015121,4015155,4015195,4015234,4015320,4015349,40154 44,4015497,4015516,4015582,4015589,4015628,4015638,4015640,4015759,4015840,40159 04,4015958,4015959,4016000,4016007,8300007,8500157,10200002,10200012,10200029,10 200030,10200040,10200048,10200053,10200055,10200066,10200083,10200103,10200120", ei:"4PcfU_G4LcekkwXq1IHgCw"},authuser:0,ml:function(){},kHL:"ja",time:function() {return(new Date).getTime()},log:function(a,b,c,h,k){var d= new Image,f=google.lc,e=google.li,g="";d.onerror=d.onload=d.onabort=function(){d elete f[e]};f[e]=d;c||-1!=b.search("&ei=")||(g="&ei="+google.getEI(h));c=c||"/"+ (k||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+g+"&zx="+google.time();a=/^http:/i;a.te st(c)&&google.https()?(google.ml(Error("GLMM"),!1,{src:c}),delete f[e]):(d.src=c ,google.li=e+1)},lc:[],li:0,y:{},x:function(a,b){google.y[a.id]=[a,b];return!1}, load:function(a,b,c){google.x({id:a+l++},function(){google.load(a,b,c)})}};var l =0;})(); (function(){google.sn="webhp";google.timers={};google.startTick=function(a,b){go ogle.timers[a]={t:{start:google.time()},bfr:!!b}};google.tick=function(a,b,g){go ogle.timers[a]||google.startTick(a);google.timers[a].t[b]=g||google.time()};goog le.startTick("load",!0); try{}catch(d){}})(); var _gjwl=location;function _gjuc(){var a=_gjwl.href.indexOf("#");if(0<=a&&(a=_g jwl.href.substring(a),0<a.indexOf("&q=")||0<=a.indexOf("#q="))&&(a=a.substring(1 ),-1==a.indexOf("#"))){for(var d=0;d<a.length;){var b=d;"&"==a.charAt(b)&&++b;va r c=a.indexOf("&",b);-1==c&&(c=a.length);b=a.substring(b,c);if(0==b.indexOf("fp= "))a=a.substring(0,d)+a.substring(c,a.length),c=d;else if("cad=h"==b)return 0;d= c}_gjwl.href="/search?"+a+"&cad=h";return 1}return 0} function _gjh(){!_gjuc()&&window.google&&google.x&&google.x({id:"GJH"},function( ){google.nav&&google.nav.gjh&&google.nav.gjh()})}; window._gjh&&_gjh();</script><style>#gbar,#guser{font-size:13px;padding-top:1px !important;}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:ri ght}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position: absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;verti cal-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important }a.gb1,a.gb4{color:#00c !important}.gbi .gb4{color:#dd8e27 !important}.gbf .gb4{ color:#900 !important}</style><style>body,td,a,p,.h{font-family:arial,sans-serif }body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac _m td{line-height:17px}form{margin-bottom:20px}.h{color:#36c}.q{color:#00c}.ts t d{padding:0}.ts{border-collapse:collapse}em{font-weight:bold;font-style:normal}. lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17p x arial,sans-serif}.ds{display:inline-box;display:inline-block;margin:3px 0 4px; margin-left:4px}input{font-family:inherit}a.gb1,a.gb2,a.gb3,a.gb4{color:#11c !im portant}body{background:#fff;color:black}a{color:#11c;text-decoration:none}a:hov er,a:active{text-decoration:underline}.fl a{color:#36c}a:visited{color:#551a8b}a .gb1,a.gb4{text-decoration:underline}a.gb3:hover{text-decoration:none}#ghead a.g b2:hover{color:#fff !important}.sblc{padding-top:5px}.sblc a{display:block;margi n:2px 0;margin-left:13px;font-size:11px}.lsbb{background:#eee;border:solid 1px;b order-color:#ccc #999 #999 #ccc;height:30px}.lsbb{display:block}.ftl,#fll a{disp lay:inline-block;margin:0 12px}.lsb{background:url(/images/srpr/nav_logo80.png) 0 -258px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;out line:0;font:15px arial,sans-serif;vertical-align:top}.lsb:active{background:#ccc }.lst:focus{outline:none}#addlang a{padding:0 3px}</style><script></script></hea d><body lang="ja" bgcolor="#fff"><script>(function(){var src='/images/nav_logo17 6.png';var iesg=false;document.body.onload = function(){window.n && window.n();i f (document.images){new Image().src=src;} if (!iesg){document.f&&document.f.q.focus();document.gbqf&&document.gbqf.q.focus ();} } })();</script><textarea id="csi" style="display:none"></textarea><div id="mngb"> <div id=gbar><nobr><b class=gb1>検索</b> <a class=gb1 href="https://www.google. co.jp/imghp?hl=ja&tab=wi">画像</a> <a class=gb1 href="https://maps.google.co.jp/ maps?hl=ja&tab=wl">地図</a> <a class=gb1 href="https://play.google.com/?hl=ja&ta b=w8">Play</a> <a class=gb1 href="https://www.youtube.com/?gl=JP&tab=w1">YouTube </a> <a class=gb1 href="https://news.google.co.jp/nwshp?hl=ja&tab=wn">ニュース</ a> <a class=gb1 href="https://mail.google.com/mail/?tab=wm">Gmail</a> <a class=g b1 href="https://drive.google.com/?tab=wo">ドライブ</a> <a class=gb1 style="text -decoration:none" href="http://www.google.co.jp/intl/ja/options/"><u>もっと見る< /u> »</a></nobr></div><div id=guser width=100%><nobr><span id=gbn class=gb i></span><span id=gbf class=gbf></span><span id=gbe></span><a href="http://www.g oogle.co.jp/history/optout?hl=ja" class=gb4>ウェブ履歴</a> | <a href="/preferen ces?hl=ja" class=gb4>設定</a> | <a target=_top id=gb_70 href="https://accounts.g oogle.com/ServiceLogin?hl=ja&continue=https://www.google.co.jp/" class=gb4>ログ イン</a></nobr></div><div class=gbh style=left:0></div><div class=gbh style=righ t:0></div> </div><center><br clear="all" id="lgpd"><div id="lga"><div style="pa dding:28px 0 3px"><div title="Google" align="left" id="hplogo" onload="window.lo l&&lol()" style="height:110px;width:276px;background:url(/images/srpr/logo9w.png ) no-repeat"><div nowrap="" style="color:#777;font-size:16px;font-weight:bold;po sition:relative;top:70px;left:218px">日本</div></div></div><br></div><form actio n="/search" name="f"><table cellpadding="0" cellspacing="0"><tr valign="top"><td width="25%"> </td><td align="center" nowrap=""><input name="ie" value="Shi ft_JIS" type="hidden"><input value="ja" name="hl" type="hidden"><input name="sou rce" type="hidden" value="hp"><div class="ds" style="height:32px;margin:4px 0">< input style="color:#000;margin:0;padding:5px 8px 0 6px;vertical-align:top" autoc omplete="off" class="lst" value="" title="Google 検索" maxlength="2048" name="q" size="57"></div><br style="line-height:0"><span class="ds"><span class="lsbb">< input class="lsb" value="Google 検索" name="btnG" type="submit"></span></span><s pan class="ds"><span class="lsbb"><input class="lsb" value="I'm Feeling Lucky" n ame="btnI" onclick="if(this.form.q.value)this.checked=1; else top.location='/doo dles/'" type="submit"></span></span></td><td class="fl sblc" align="left" nowrap ="" width="25%"><a href="/advanced_search?hl=ja&authuser=0">検索オプション</ a><a href="/language_tools?hl=ja&authuser=0">言語ツール</a></td></tr></table ><input id="gbv" name="gbv" type="hidden" value="1"></form><div id="gac_scont">< /div><div style="font-size:83%;min-height:3.5em"><br></div><span id="footer"><di v style="font-size:10pt"><div style="margin:19px auto;text-align:center" id="fll "><a href="/intl/ja/ads/">広告掲載</a><a href="http://www.google.co.jp/intl/ja/s ervices/">ビジネス ソリューション</a><a href="https://plus.google.com/1158997673 81375908215" rel="publisher">+Google</a><a href="/intl/ja/about.html">Google に ついて</a><a href="https://www.google.co.jp/setprefdomain?prefdom=US&sig=0_i BYQGDBA7XyEsis9DqhXRyDwo4o%3D" id="fehl">Google.com</a></div></div><p style="col or:#767676;font-size:8pt">© 2013 - <a href="/intl/ja/policies/">プライバシ ーと利用規約</a></p></span></center><div id=xjsd></div><div id=xjsi data-jiis="b p"><script>if(google.y)google.y.first=[];(function(){function b(a){window.setTim eout(function(){var c=document.createElement("script");c.src=a;document.getEleme ntById("xjsd").appendChild(c)},0)}google.dljp=function(a){google.xjsu=a;b(a)};go ogle.dlj=b;})(); if(!google.xjs){window._=window._||{};window._._DumpException=function(e){throw e};if(google.timers&&google.timers.load.t){google.timers.load.t.xjsls=new Date() .getTime();}google.dljp('/xjs/_/js/k\x3dxjs.hp.en_US.QXfKqNTtlrQ.O/m\x3dsb_he,pc c/rt\x3dj/d\x3d1/sv\x3d1/rs\x3dAItRSTPJ1r_DbltrqMjdDicQQca-mDrP8Q');google.xjs=1 ;}google.pmc={"sb_he":{"agen":true,"cgen":true,"client":"heirloom-hp","dh":true, "ds":"","eqch":true,"fl":true,"host":"google.co.jp","jsonp":true,"msgs":{"dym":" もしかして:","lcky":"I\u0026#39;m Feeling Lucky","lml":"詳細","oskt":"入力ツール ","psrc":"この検索キーワードは\u003Ca href=\"/history\"\u003Eウェブ履歴\u003C/a\ u003Eから削除されました","psrl":"削除","sbit":"画像で検索","srch":"Google 検索"} ,"ovr":{},"pq":"","qcpw":false,"scd":10,"sce":5,"stok":"dvbpZulh0Siln_60DZd1Z-tk 3yg"},"pcc":{}};google.y.first.push(function(){if(google.med){google.med('init') ;google.initHistory();google.med('history');}});if(google.j&&google.j.en&&google .j.xi){window.setTimeout(google.j.xi,0);}</script></div><script>(function(){if(g oogle.timers&&google.timers.load.t){var b,c,d,e,g=function(a,f){a.removeEventLis tener?(a.removeEventListener("load",f,!1),a.removeEventListener("error",f,!1)):( a.detachEvent("onload",f),a.detachEvent("onerror",f))},h=function(a){e=(new Date ).getTime();++c;a=a||window.event;a=a.target||a.srcElement;g(a,h)},k=document.ge tElementsByTagName("img");b=k.length;for(var l=c=0,m;l<b;++l)m=k[l],m.complete|| "string"!=typeof m.src||!m.src?++c:m.addEventListener?(m.addEventListener("load" ,h,!1),m.addEventListener("error", h,!1)):(m.attachEvent("onload",h),m.attachEvent("onerror",h));d=b-c;var n=functi on(){if(google.timers.load.t){google.timers.load.t.ol=(new Date).getTime();googl e.timers.load.t.iml=e;google.kCSI.imc=c;google.kCSI.imn=b;google.kCSI.imp=d;void 0!==google.stt&&(google.kCSI.stt=google.stt);google.csiReport&&google.csiReport ()}};window.addEventListener?window.addEventListener("load",n,!1):window.attachE vent&& window.attachEvent("onload",n);google.timers.load.t.prt=e=(new Date).getTime()}; })(); </script></body></html> c:\curlx64> |
コマンドプロンプト画面
このcURLによってレスポンスを受け取った内容は、
https://www.google.co.jp/ のHTMLソースです。
このようにしてcURLを利用することによってプログラムなどからサイトのソースを取得し、
サイト巡回を行ったりといったことができるようになります。
Windowsにて利用する場合の注意点
cURLを利用するうえでは、サイト側に対して、
POSTデータを送信した結果を受け取ったりという制御を行うことができます。
前回の投稿でご紹介したJetPackデバッガで提供されるサンプルソースなどがその例です。
JetPack by WordPress.comインストール後にダッシュボードからデバッグ情報を確認
投稿に追記をすでに行っていますが、JetPackデバッガからは以下のようなコマンドが例示されます。
c:\curl>curl -d '<methodCall><methodName>demo.sayHello</methodName></methodCall>
' http://algorhythnn.jp/blg/wp/xmlrpc.php
しかしこのコマンドはWindows上では実行できません。
このコマンドは -dスイッチによって、’ ~ ‘ 間のデータを指定したURLに対してPOST送信を行って、
レスポンスを受け取るものですが、’ ~ ‘ 間のデータが正しくデータとして認識されません。
結果として「< の使い方が誤っています。」というエラーになります。
この場合Windows環境では -d スイッチの後のデータ部を以下のように送信します。
シングルクォートをダブルクォートに変更します。
c:\curl>curl -d "<methodCall><methodName>demo.sayHello</methodName></methodCall>
" http://algorhythnn.jp/blg/wp/xmlrpc.php
コマンドが正しく実行されレスポンスを受け取ることができるようになります。
さいごに
このようにしてcURLをインストールすることで、Web上のサイトデータなどをプログラム的な方法で、
アクセスしデータを取得することができるようになります。
cURLには非常に多くの機能がありますので、
cURL – How To Use (マニュアルページ日本語訳)などでその他の機能などは確認されるといいでしょう。
参考
Tatsuo Ikura さんのサイトはいつもすっきりとまとまっていてわかりやすいなと思います。
よくリンクさせていただいています^^
基本的な手順はIkuraさんのサイトのままですが、
x64環境であること、実行時のデータ指定方法に注意が必要なことを補足するために本投稿を作成しております。
cURLのコマンドライン実行環境 – buzzword update
Windows は米国 Microsoft Corporation の米国およびその他の国における登録商標です。
登録番号は以下の通りです。
第3333588号、第3351402号、第4197799号、
第4348387号、第4395963号、第4648301号
Windows は米国 Microsoft Corporation の米国およびその他の国における国際登録商標です。
国際登録番号:1135413
関連記事
-
(mod_fcgid on 2.0.x)windowsでCGIをFastCGIで実行するように設定したかった
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
VBScript でもデバッグしながら開発を行える
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ファイル名の一覧を書き出す方法(windows)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
PHPをmod_fcgidやmod_fastcgiでFastCGI実行する方法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(バッチで一発)windows7をリモートでシャットダウンする方法
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ローカル環境へのMySQL設置
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
VisualStudio 2005 Trial(評価版)は今でもダウンロードできたのか。
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
ローカル環境へのwordpress設置
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
[コンピュータに MSVCR110.dllがない]とApacheMonitor.exeを起動して言われた場合
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
(mod_fastcgi on 2.2.x)windowsでCGIをFastCGIで実行するように設定する
Google or AdMax Promotion(it) 禁断の機能がau公式 …
Comment
[…] Windows®環境にcURLコマンドを実行できるようにインストールする手順 | ええかげんブログ(本店) […]