clj-http 3.13.1 では、ライブラリが文書化している Java プロパティとリクエストマップのインターフェースから始めます。デスクトップのプロキシ設定だけでは、アプリケーションがどの設定を渡したかは分かりません。

リクエストで HTTP 中継を明示的に選べます。

(require '[clj-http.client :as http])

(http/get "https://example.com/"
          {:proxy-host "proxy.example.net"
           :proxy-port 8080})

共有の JVM ポリシーには、clj-http は HTTP 宛先向けに http.proxyHost と http.proxyPort、HTTPS 宛先向けに https.proxyHost と https.proxyPort を文書化しています。共有のバイパスプロパティは http.nonProxyHosts です。

明示的な proxy-host と proxy-port オプションは、http.nonProxyHosts を含むプロパティベースの経路を上書きします。プロキシ資格情報のない許可された公開テスト構成では、HTTP プロキシ一覧の HTTP エントリがリクエストのホストとポートを提供できます。clj-http はリクエスト単位の除外用に proxy-ignore-hosts も公開しています。文書化された既定値には localhost と 127.0.0.1 が含まれます。

中継が資格情報を必要とする場合は、アプリケーションの資格情報ソースから proxy-user と proxy-pass をリクエストオプションに渡します。

SOCKS には別のインターフェースがあります。clj-http.conn-mgr/make-socks-proxied-conn-manager でマネージャを作成し、connection-manager として渡します。そのマネージャはワークロードのライフサイクルに合わせて再利用し、終了時に閉じます。

関連記事