curlのプロキシ認証、-xオプションと環境変数どっちで書いても同じ

  • curl
  • Proxy
  • Shell

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

-xオプションで指定する場合

curl example.com -x http://<auth-username>:<auth-password>@<proxy-host>:<proxy-port>

-x(--proxy)は [protocol://][user:password@]host[:port] という書式を取るので、これで認証付きプロキシをそのまま指定できる。

パスワードに @ や : が入ってると壊れるので、その場合はURLエンコードするか、-U user:password でユーザー名・パスワードだけ分離した方が安全。

環境変数で指定する場合

export http_proxy=http://username:password@192.168.1.1:3214
export https_proxy=http://username:password@192.168.1.1:3214

http_proxy / https_proxy はcurlに限らずwgetやgitなど多くのCLIツールが見に行く慣習的な環境変数。curlは小文字表記を優先して読む。

大文字の HTTP_PROXY は環境によって読まれなかったり、意図的に無視される実装があるらしい(httpoxy脆弱性の経緯で警戒されてる)。実機で全パターン検証したわけではないので、そこは未確認。

除外したいホストがあるなら no_proxy も一緒に設定しておくと良い。

結論

どっちの方法でも認証付きプロキシは通せる。一時的に1コマンドだけ通したいなら -x、シェルセッション全体やcurl以外のツールにも効かせたいなら環境変数、という使い分けで良さそう。