Go 如何设置HTTP请求使用哪个IP?

Go 如何设置HTTP请求使用哪个IP?,go,Go,我不知道是否可能,因为std库没有说明当前使用的地址: 我要做的是设置http请求的源地址,为什么?因为我不想将我的主ip地址用于此类内容…您可以在客户端的传输中设置自定义拨号程序 // Create a transport like http.DefaultTransport, but with a specified localAddr transport := &http.Transport{ Proxy: http.ProxyFromEnvironment, D

我不知道是否可能,因为std库没有说明当前使用的地址:


我要做的是设置http请求的源地址,为什么?因为我不想将我的主ip地址用于此类内容…

您可以在客户端的传输中设置自定义拨号程序

// Create a transport like http.DefaultTransport, but with a specified localAddr
transport := &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    DialContext: (&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        LocalAddr: localAddr,
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   10 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

client := &http.Client{
    Transport: transport,
}

您想要代理(或代理本身)之类的服务吗?有很多服务可以混淆您的IP地址(例如代理、VPN、Tor)。我怀疑你需要做类似的事情,而不是欺骗你的IP,否则你将永远看不到该页面,因为它将被提供给和IP地址不是你的。我的服务器上有几个公共IP,我想做的是选择一个用于web请求,例如:但我不想依赖扩展二进制文件。。。我也不想欺骗我的ip地址…请参阅的
LocalAddr
字段。大多数标准软件包都有一种方法可以指定您自己的拨号程序,而不是默认拨号程序。如果可以,我会检查它,我也会尝试go curl。。我想知道为什么否决?这就像一个魅力,这是作为一个vpn在我的开发机器上实验的结果代码。。。go curl也可以与easy.Setopt(curl.OPT_接口,“10.9.8.2”)。。谢谢:)@kainlite你确定有效吗?我从ResolveTCPAddr收到一个错误(您忽略了它):拨打tcp 10.9.8.2:8080->54.221.194.87:80:bind:无法分配请求的地址(由于之前的“找不到端口”错误,我不得不在其上添加一个端口)。您需要使用网络中的ip地址,我用这个ip做一个vpn@JimB默认的Go http.Client会选择哪个IP地址?@alex:Go客户端不会选择地址,它与任何其他
connect
调用一样工作,如果没有地址,系统会为套接字分配地址。
// Create a transport like http.DefaultTransport, but with a specified localAddr
transport := &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    DialContext: (&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        LocalAddr: localAddr,
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   10 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

client := &http.Client{
    Transport: transport,
}