2017-10-22 11 views
0

Webサーバーをテストするためのテストツールを実行しています。このツールは単純なhttp要求を作成し、サーバーに送信することができます。しかし、各リクエストには異なるsrc ip addrが必要です。Go/JavaのhttpリクエストでIPアドレスを変更する方法

私の質問です。 httpリクエストからipパッケージを構築し、ip addrを変更してネットに直接送信する方法はありますか?

私はjavaまたはgo(new to go)を使用します。どうもありがとう! :)

+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アドレスを上書きすることをお勧めします。ただし、本番環境ではこの機能を無効にしてください。

関連する問題