gpt4 book ai didi

http - 如何知道给定请求中HTTP客户端使用的代理

转载 作者:行者123 更新时间:2023-12-03 10:10:45 24 4
gpt4 key购买 nike

我正在通过某些代理服务器发出一些请求。定义要使用的代理URL的函数将从代理列表中随机选择。我想知道对于给定的请求,正在使用哪个代理URL。据我所知,当使用代理服务器时,http header 保持不变,但是tcp header 是变化的。
这是一些说明它的代码(为简单起见,没有错误处理):

func main() {
transport := &http.Transport{Proxy: chooseProxy}
client := http.Client{Transport: transport}

request, err := http.NewRequest(http.MethodGet, "https://www.google.com", nil)
checkErr(err)

// How to know here which proxy was used? Suppose the same client will perform several requests to different URL's.
response, err := client.Do(request)
checkErr(err)

dump, _ := httputil.DumpRequest(response.Request, false)
fmt.Println(dump)
}

func chooseProxy(request *http.Request) (*url.URL, error) {
proxies := []string{"proxy1", "proxy2", "proxy3"}

proxyToUse := proxies[rand.Intn(len(proxies))]

return url.Parse(proxyToUse)
}
我假设即使使用相同的客户端,也要为每个请求调用传输中的Proxy函数,如文档中所说的“Proxy为给定请求指定一个返回代理的函数”。我对吗?

最佳答案

某些HTTP代理添加了Via header ,以告知其身份。
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Via

关于http - 如何知道给定请求中HTTP客户端使用的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65361194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com