2017-10-22 262 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地址(如果已設置) 。儘管如此,請確保在生產中禁用此功能。