Windows 10 に curl がプリインストールされてた

Windows 10 で curl やその他の Unix コマンドが標準で使えるようになっていました。

2018年4月に配布された Windows 10 の大型アップデート (RS4, 1803) から使えるようになったようです。他にも tar コマンドなどがプリインストールされるようになっています。

下記は Windows 10 ver 1803 の curl です。

>where curl
C:\Windows\System32\curl.exe

>curl -V
curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL
Release-Date: [unreleased]
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL

参考までに、macOS (Mojave 10.14.4) の curl

$ which curl
/usr/bin/curl

$ curl -V
curl 7.54.0 (x86_64-apple-darwin18.0) libcurl/7.54.0 LibreSSL/2.6.5 zlib/1.2.11 nghttp2/1.24.1
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz HTTP2 UnixSockets HTTPS-proxy

こちらは Ubuntu 18.04 の curl

$ which curl
/usr/bin/curl

$ curl -V
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.0g zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
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 HTTP2 UnixSockets HTTPS-proxy PSL

Windows 10 の curl は LDAP などいくつかのプロトコルのサポートがないですね。また、http2 や https-proxy のサポートがありません。そのかわり (?) SSPI がサポートされています。

Windows の curl を使ってみよう

個人的によく使うオプションと共に使ってみました。まずは -v

>curl -v https://www.google.com
* Rebuilt URL to: https://www.google.com/
*   Trying 172.217.31.132...
* TCP_NODELAY set
* Connected to www.google.com (172.217.31.132) port 443 (#0)
* schannel: SSL/TLS connection with www.google.com port 443 (step 1/3)
* schannel: checking server certificate revocation

(snip)

> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.55.1
> Accept: */*

(snip)

つづいて -I。これは HEAD のリクエストが送信されます。

curl -I https://www.google.com
HTTP/1.1 200 OK
Date: Wed, 17 Apr 2019 13:29:21 GMT
Expires: -1
Cache-Control: private, max-age=0

(snip)

さらに -X-H-d 。JSON を POST で送信しています。

>curl -X POST -H 'Content-Type:application/json' -d '{"key":"value"}' https://www.google.com
<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 405 (Method Not Allowed)!!1</title>

(snip)

あまり使いませんが --http2 オプション。上に書いた通り http2 のサポートがないため、エラーになります。

>curl --http2 https://www.google.com
curl: (1) Unsupported protocol

虚しい。

まとめ

いくつか使えないプロトコルがあるものの、ちょっとした調査には十分です。

これまで Windows で curl を使いたい場合は Web から Windows 用のバイナリをダウンロードしてくる必要がありましたが、今後はそうした機会も減るかもしれませんね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です