据我所知,http.Transport的Proxy字段要求生成代理服务器地址的函数。所以这是我的往返者:
roundtripper := &http.Transport{
Proxy: proxyrouter.Calculateproxy,
...
}
所以代理的类型是func(*Request) (*url.URL, error)
。这会链接到服务器,稍后会调用:
response := roundtripper.RoundTrip(request)
返回响应。现在有什么方法可以知道使用什么代理地址来获得此响应吗? (因为我的Calculateproxy函数只是随机地址)
答案 0 :(得分:0)
让Proxy功能添加标头以记录使用的代理服务器:
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")