转到 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")
我了解到 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")