curlでプロキシを設定する

curlでHTTP、HTTPS、SOCKSプロキシを経由してリクエストを送信する方法を解説。プロキシ認証、環境変数での設定、バイパスルールによるネットワークアクセスを学びましょう。

General

詳細な説明

curlでプロキシを使う

プロキシはクライアントと宛先サーバーの間で仲介役として機能します。curlはHTTP、HTTPS、SOCKS4、SOCKS5プロキシをサポートしており、さまざまなネットワーク構成に対応できます。

HTTPプロキシ

curl -x http://proxy.example.com:8080 https://api.example.com/data

-x(または --proxy)フラグでプロキシサーバーとポートを指定します。

HTTPSプロキシ

curl -x https://proxy.example.com:8443 https://api.example.com/data

SOCKS5プロキシ

curl --socks5 proxy.example.com:1080 https://api.example.com/data

プロキシ経由でDNS解決を行う場合:

curl --socks5-hostname proxy.example.com:1080 https://api.example.com/data

プロキシ認証

curl -x http://proxy.example.com:8080 \
  -U proxyuser:proxypass \
  https://api.example.com/data

またはプロキシURLに資格情報を埋め込みます:

curl -x http://proxyuser:proxypass@proxy.example.com:8080 \
  https://api.example.com/data

環境変数での設定

curlは標準的なプロキシ環境変数を尊重します:

export http_proxy="http://proxy.example.com:8080"
export https_proxy="http://proxy.example.com:8080"
export no_proxy="localhost,127.0.0.1,.internal.com"

curl https://api.example.com/data  # プロキシが自動的に使用される

特定ホストでのプロキシバイパス

curl --noproxy "localhost,.local,.internal.com" \
  -x http://proxy.example.com:8080 \
  https://api.example.com/data

トンネリング付きプロキシ

HTTPプロキシを経由したHTTPSでは、curlはCONNECTメソッドを使ってトンネルを作成します:

curl -x http://proxy.example.com:8080 \
  --proxytunnel \
  https://api.example.com/data

プロキシ接続のデバッグ

curl -v -x http://proxy.example.com:8080 https://api.example.com/data

verbose出力でプロキシCONNECTハンドシェイクとトンネル確立の過程を確認できます。* CONNECT api.example.com:443 HTTP/1.1 のような行が表示されれば、プロキシが使用されていることが確認できます。

一般的なプロキシ使用シナリオ

  • 企業ネットワーク: 会社のプロキシを経由してトラフィックをルーティングする
  • テスト: 異なる地理的位置からのリクエストをシミュレーションする
  • デバッグ: mitmproxyなどのツールを使ってHTTPSトラフィックを調査する
  • プライバシー: 匿名プロキシやTorを経由してリクエストをルーティングする

ユースケース

企業ファイアウォールの内側で作業する開発者が、開発およびテスト中に認証付きHTTPプロキシを経由して外部サービスへAPIリクエストをルーティングする必要がある場合に使用します。

Try It — Curl to Code Converter

フルツールを開く