如何在 Go/Java 中修改 http 请求中的 IP 地址



我正在做一个测试工具来测试Web服务器。该工具可以构造一个简单的http请求,并发送到服务器。但是每个请求都应该有一个不同的 src ip 地址。

我的问题是。有没有办法从 http 请求构建 ip 包,修改 ip 地址,然后直接发送到网络中?

我使用 java 或 go(新来的)。非常感谢!:)

IP

地址的处理级别低于 HTTP - 具体来说,它由 TCP/IP 协议完成。我可以信任 HTTP 请求的源 IP 吗?很好地概述了为什么您从 HTTP 客户端获得的 IP 是可信的(并且难以欺骗)。

也就是说,HTTP标头支持"建议"从TCP获得的IP地址不正确的想法 - 最常见的方法是X-Forwarded-For标头。假设你的服务器依赖于这个值(它可能不应该!),你可以很容易地欺骗你的IP:

req, err := http.NewRequest("GET", "http://example.com", nil)
// ...
req.Header.Add("X-Forwarded-For", "1.2.3.4")
resp, err := client.Do(req)

当然,大多数服务器不会依赖此字段,因为滥用的可能性很大。

如果您正在为自己的服务器编写测试工具,最好的方法是向服务器添加逻辑,以检查是否存在 X-Forwarded-For 标头(或类似内容)并覆盖 IP 地址(如果已设置)。但是,请确保在生产中禁用此功能。

最新更新