在 Windows 中用 go-ieproxy 按 URL 选择代理
在自有 transport 上使用 go-ieproxy.GetProxyFunc,而不是把 Windows 的自动策略压平成静态环境变量值。
在 go-ieproxy 已可用、标准默认 transport 仍处于安装状态时,挂接它能感知请求的代理函数:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = ieproxy.GetProxyFunc()
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}导入 net/http、time 和 github.com/mattn/go-ieproxy,并让工作负载的请求经由 client 发出。类型断言要求 DefaultTransport 仍然是 http.Transport。
GetProxyFunc 覆盖静态设置、显式自动配置脚本和完全自动发现。它的 Windows 查询使用当前用户的配置,若首次 API 调用失败则回退到注册表。
OverrideEnvWithStaticProxy 做出不同的选择:它导出的是手动设置,无法保留按目标自动作出的判定。仅当策略是有意保持静态时才使用这种转换。
对 Windows 服务而言,当前用户可能与浏览器正常工作的桌面用户不同。比较结果时请核对服务账号和实际目标。发现机制给出的是路由候选,而不是身份验证,也不保证端点可达。