转到 RoundTrip/Transport 代理地址

Go RoundTrip/Transport Proxy Address

我了解到 http.Transport 的 Proxy 字段要求生成代理服务器地址的函数。所以这是我的往返:

roundtripper := &http.Transport{
    Proxy: proxyrouter.Calculateproxy,
...
}

所以代理的类型是func(*Request) (*url.URL, error)。这将链接到服务器,稍后调用:

response := roundtripper.RoundTrip(request)

其中 returns 响应。现在有什么办法可以知道使用什么代理地址来获得这个响应? (因为我的 Calculateproxy 函数只采用随机地址)

让Proxy功能加一个header记录使用的代理服务器:

Transport{
    Proxy: func(req *Request) (*url.URL, error) {
        p, err := proxyrouter.Calculateproxy(req)
        if err != nil {
            return err
        }
        req.Header.Set("X-Proxy-Addr", p.String())
        return req, nil
    },
}

http.Response 引用了原始请求

proxy := resp.Request.Header.Get("X-Proxy-Addr")