2017-10-22 175 views
0

我正在做一个测试工具来测试一个web服务器。该工具可以构造一个简单的http请求,并发送到服务器。但是每个请求应该有一个不同的src ip addr。如何修改Go中的http请求中的ip地址/ Java

我的问题是。有什么办法可以从http请求中构建ip包,修改ip addr并直接发送到网络中?

我使用java或去(新去)。非常感谢! :)

+0

欺骗IP地址可能太麻烦了。你可以直接挂接到服务器并构造请求对象(无论你喜欢什么地址)? –

回答

0

IP地址处理的级别低于HTTP - 具体地说,它是由TCP/IP协议完成的。 Can I trust the source IP of an HTTP request?提供了一个很好的概述为什么你从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地址(如果已设置) 。尽管如此,请确保在生产中禁用此功能。