据我所知,http.Transport的代理字段请求一个生成代理服务器地址的函数。这是我的往返旅行:
roundtripper := &http.Transport{
Proxy: proxyrouter.Calculateproxy,
...
}所以代理的类型是func(*Request) (*url.URL, error)。这将链接到服务器,稍后将使用以下方法调用:
response := roundtripper.RoundTrip(request)返回响应。现在有什么方法可以知道使用了哪个代理地址来获得这个响应呢?(因为我的Calculateproxy函数只是随机地址)
发布于 2016-10-04 19:40:04
让代理函数添加一个头来记录使用的代理服务器:
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")https://stackoverflow.com/questions/39848379
复制相似问题