仅让一个主机通过 HTTPX 代理
为选定主机挂载代理传输,同时让客户端常规回退路由保持直连。
为选定主机配置代理传输,为客户端的其余请求显式配置直连传输:
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 配置,应显式提供该信任配置,或保留适当的环境读取策略,避免无声丢失。
无需更改整机代理。路由检查中应同时包含目标代理主机和特意选择的回退主机。