HTTPXで1つのホストだけをプロキシ経由にする
選んだホストにプロキシトランスポートをマウントし、クライアントの通常のフォールバック経路は直接接続に保ちます。
選んだホストにプロキシトランスポートを割り当て、クライアントの残りには直接接続トランスポートを明示します。
import httpx
direct = httpx.HTTPTransport(trust_env=False)
proxied = httpx.HTTPTransport(
proxy="http://203.0.113.10:8080",
trust_env=False,
)
with httpx.Client(
transport=direct,
mounts={"all://example.com": proxied},
trust_env=False,
timeout=15,
) as client:
response = client.get("https://example.com/")
print(response.status_code)
other = client.get("https://example.org/")
print(other.status_code)
文書用プロキシアドレスを、利用サービスまたはHTTPプロキシ一覧の目的のHTTPエンドポイントに置き換えます。ここではexample.comがマウントを使い、example.orgが既定の直接接続を使います。両方の呼び出しが重要です。プロキシ側のホストで成功しただけではフォールバック経路を確認できません。
| マッチ条件 | 効果 |
|---|---|
all://example.com | 接続先のスキームを問わず、指定したホストそのもの。 |
| サブドメイン | 別途選ぶ必要がある。対象に含めるなら、対応するワイルドカードを意図的に使う。 |
| パス | マウントが選ぶのはスキーム、ホスト、必要に応じたポートのパターンであり、URLパスではない。 |
| 別ホストへのリダイレクト | リダイレクト追従を有効にすると、新しいURLでマッチ判定を行い、直接接続のフォールバックを使う場合がある。 |
例ではクライアントと両方のトランスポートで環境設定の読み取りを無効にしています。応用時に別の広範なプロキシルールや一致するマウントがあると、結果が変わる可能性があります。環境変数のCA設定に依存する構成では、その信頼設定を明示するか適切な読み取り方針を残し、知らないうちに失わないようにしてください。
端末全体のプロキシ設定変更は不要です。経路確認には、目的のプロキシ経由ホストと、意図的に選んだフォールバック用ホストの両方を含めます。