Webサーバーをテストするためのテストツールを実行しています。このツールは単純なhttp要求を作成し、サーバーに送信することができます。しかし、各リクエストには異なるsrc ip addrが必要です。Go/JavaのhttpリクエストでIPアドレスを変更する方法
私の質問です。 httpリクエストからipパッケージを構築し、ip addrを変更してネットに直接送信する方法はありますか?
私はjavaまたはgo(new to go)を使用します。どうもありがとう! :)
Webサーバーをテストするためのテストツールを実行しています。このツールは単純なhttp要求を作成し、サーバーに送信することができます。しかし、各リクエストには異なるsrc ip addrが必要です。Go/JavaのhttpリクエストでIPアドレスを変更する方法
私の質問です。 httpリクエストからipパッケージを構築し、ip addrを変更してネットに直接送信する方法はありますか?
私はjavaまたはgo(new to go)を使用します。どうもありがとう! :)
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アドレスを上書きすることをお勧めします。ただし、本番環境ではこの機能を無効にしてください。
おそらく、IPアドレスを偽装するのは面倒です。サーバーに直接フックして、要求オブジェクト(あなたが好きなアドレス)を構築できますか? –