gpt4 book ai didi

golang 强制对特定 ip 的 http 请求(类似于 curl --resolve)

转载 作者:IT老高 更新时间:2023-10-28 13:05:40 24 4
gpt4 key购买 nike

如何强制 golang https get 请求使用特定的 IP 地址。我想跳过 DNS 解析并自己提供 IP。 curl 中的等价物是 --resolve,如下图所示。

curl https://domain.com/dir/filename --resolve "domain.com:443:10.10.10.10"

由于这是 ssl,因此我想避免用 IP 代替域,如下例所示。

curl https://10.10.10.10/dir/filename --header "主机:domain.com"

最佳答案

您可以提供自定义 Transport.DialContext功能。

func main() {
dialer := &net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
// DualStack: true, // this is deprecated as of go 1.16
}
// or create your own transport, there's an example on godoc.
http.DefaultTransport.(*http.Transport).DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) {
if addr == "google.com:443" {
addr = "216.58.198.206:443"
}
return dialer.DialContext(ctx, network, addr)
}
resp, err := http.Get("https://google.com")
log.Println(resp.Header, err)
}

关于golang 强制对特定 ip 的 http 请求(类似于 curl --resolve),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624248/

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