登录
首页 >  Golang >  Go问答

改变 go-optical 客户端的 IP 地址的步骤

来源:stackoverflow

时间:2024-02-08 16:12:27 354浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《改变 go-optical 客户端的 IP 地址的步骤》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我使用 Fiber 作为 HTTP 客户端向 http 服务器发出一些请求,但是我受到速率限制。在我的虚拟机上,我配置了 5 个不同的 IP 地址(公共/私有),并确认它们确实已连接到互联网。

curl --interface 10.0.0.4 ipinfo.io/json

curl --interface 10.0.0.5 ipinfo.io/json

... curl --interface 10.0.0.8 ipinfo.io/json

每个返回一个不同的面向公众的 IP 地址。

现在我有兴趣使用这些本地地址发出循环请求,但我不太确定如何进行。

我可以设置/调用某种属性或函数来更改传出请求的来源吗?

我环顾了一下 fasthttp.HostClient ,它是 Fiber.Agent 扩展的,但我没有看到任何有用的东西。

谢谢大家。


正确答案


a := fiber.AcquireAgent()
req := a.Request()
req.Header.SetMethod(fiber.MethodGet)
req.SetRequestURI(fmt.Sprintf(formatUrl, args...))

if err := a.Parse(); err != nil {
    h.Logger.Error("%v", err)
    return fiber.StatusInternalServerError, nil, []error{err}
}

customDialer := fasthttp.TCPDialer{
    Concurrency: 1000,
    LocalAddr: &net.TCPAddr{
        IP: h.IPPool[atomic.AddUint32(&h.IpIdx, 1)%uint32(len(h.IPPool))],
    },
}

a.HostClient.Dial = func(addr string) (net.Conn, error) {
    return customDialer.Dial(addr)
}

创建自定义拨号器和拨号函数允许您更改与 http 请求关联的本地地址。

今天关于《改变 go-optical 客户端的 IP 地址的步骤》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>