IK.AM


Dev > curl

HTTP/3に対応したcurlをHomebrewでインストールするメモ

Created on Thu May 16 2024 • Last Updated on Fri Jun 07 2024N/A Views

🏷️ curl | HTTP/3 | Homebrew

手元のMacにインストールされているcurl (8.4.0) はまだHTTP/3に対応していないので、HTTP/3に対応したcurlをインストールする。

手元のcurlのバージョンは次の通り。

$ curl --version
curl 8.4.0 (x86_64-apple-darwin23.0) libcurl/8.4.0 (SecureTransport) LibreSSL/3.3.6 zlib/1.2.12 nghttp2/1.58.0
Release-Date: 2023-10-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz MultiSSL NTLM NTLM_WB SPNEGO SSL threadsafe UnixSockets

CloudflareがFormulaを公開しているので、これを使用する。

インストール方法は次の通り。

brew remove -f curl
brew tap cloudflare/homebrew-cloudflare
brew install cloudflare/cloudflare/curl

PATHを更新する。

echo 'export PATH="/opt/homebrew/opt/curl/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

HTTP/3に対応したcurlのversionに更新された。

$ curl --version
curl 8.7.1 (aarch64-apple-darwin23.4.0) libcurl/8.7.1 BoringSSL zlib/1.2.12 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.7 libssh2/1.11.0 nghttp2/1.61.0 quiche/0.21.0 librtmp/2.3 OpenLDAP/2.6.8
Release-Date: 2024-03-27
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM SPNEGO SSL threadsafe UnixSockets zstd

--http3-onlyオプションまたは--http3オプション(HTTP/3が対応していない場合はフォールバックする)をつけてwww.google.comにアクセス。

$ curl -sI --http3-only https://www.google.com
HTTP/3 200 
content-type: text/html; charset=ISO-8859-1
content-security-policy-report-only: object-src 'none';base-uri 'self';script-src 'nonce-y6mVW8uGnNhDZ-xNDKxEMg' 'strict-dynamic' 'report-sample' 'unsafe-eval' 'unsafe-inline' https: http:;report-uri https://csp.withgoogle.com/csp/gws/other-hp
p3p: CP="This is not a P3P policy! See g.co/p3phelp for more info."
date: Mon, 27 May 2024 02:19:02 GMT
server: gws
x-xss-protection: 0
x-frame-options: SAMEORIGIN
expires: Mon, 27 May 2024 02:19:02 GMT
cache-control: private
set-cookie: 1P_JAR=2024-05-27-02; expires=Wed, 26-Jun-2024 02:19:02 GMT; path=/; domain=.google.com; Secure
set-cookie: AEC=AQTF6HyWW59syvHq_IU2A7RWxZ9yD31KrcD0PWLPXDfSoBiIY1asrSorjQ; expires=Sat, 23-Nov-2024 02:19:02 GMT; path=/; domain=.google.com; Secure; HttpOnly; SameSite=lax
set-cookie: NID=514=QWu6LZaPkS8mPRYU2gGVdfmFyQd4P979IyyhJ4uap_kEUb-DU2LVqgsgviT2wdbSwz_G2_q5dNGKqtEbjgron0hkGocAXoY2WrSUdqDgM7QWFvW5EpG1es9gPmjLxgozEZ_9LPpF3_WRq5BF3MJM8pQ1p09U-kjRgkvCPVVlfuc; expires=Tue, 26-Nov-2024 02:19:02 GMT; path=/; domain=.google.com; HttpOnly
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

HTTP/3 200で返った。

Found a mistake? Update the entry.