对于 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 传入。按工作负载的生命周期复用并关闭该管理器。

相关文章