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リクエストをルーティングする必要がある場合に使用します。