--- title: HTTP/3に対応したcurlをHomebrewでインストールするメモ tags: ["curl", "HTTP/3", "Homebrew"] categories: ["Dev", "curl"] date: 2024-05-16T01:00:16Z updated: 2024-06-06T23:50:18Z --- 手元の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](https://github.com/cloudflare/homebrew-cloudflare/blob/master/curl.rb)を公開しているので、これを使用する。 インストール方法は次の通り。 ``` 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`で返った。