Go 如何设置HTTP请求使用哪个IP?
我不知道是否可能,因为std库没有说明当前使用的地址: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
我要做的是设置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,
}