HTTPプロキシ経由で実際のIPを確認する

HTTPプロキシ経由で実際のIPを確認する

JavaアプリケーションでHTTPプロキシを設定しています。そのアプリケーションでは、プロキシが機能しているかどうかをクエリしてテストします。http://api.ipify.org/ただし、プロキシの IP アドレスではなく、実際の IP アドレスが返されます。Wireshark で確認したところ、コンピューターが HTTP 要求をプロキシに送信し、プロキシが実際の IP アドレスを返します。どうしてそれが可能なのか疑問に思っていました。また、API をクエリせずにこの動作を確認する方法があるかどうかも知りたいです。ありがとうございます!

答え1

ご存知のとおり、次のようなヘッダーが送信されます:X-転送先、これには元の IP が含まれます。

そのリクエスト ヘッダーを削除するかカスタマイズすることは可能ですが、削除しようとすると、プロキシによって追加され、制御できなくなる可能性があります。まだご覧になっていない場合、役立つかもしれない興味深い記事があります。JavaからのHTTPリクエスト、ヘッダーとプロキシ情報の追加別の選択肢としては、別のプロキシ プロバイダーを検討することが考えられます。

プロキシが動作しているかどうかを確認する別の方法として、InetAddress.isReachable() を使用できるはずです。Google.com などの任意の Web サイトや、インターネット上にあるカスタム サーバーからの応答を確認できます。プロキシ IP を検証しようとしているのでなければ、無料のホストであっても、独自の検証サーバーをセットアップできます。InetAddress.isReachable には、ここで説明されているように、いくつかの欠点がある可能性があります。「isReachable」メソッドは、多くの場合、私にとっては使用する価値がありませんでした。

これはあなたの質問に最も関連があるようです:Java でプロキシが動作しているかどうかを確認するにはどうすればいいですか?また、有料サービスを使用するのではなく、プロキシ リストを確認するなど、同様のことをしようとしていると思います。ソフトウェアが自分専用なのか、リリースされて共有されるのかによって異なります。自分だけの場合は、匿名性を確保できるプロキシを購入する価値があるかもしれません。

答え2

ここで何が起こったのかが分かったと思います。プロキシはX-Forwarded-For HTTPフラグを使用しているようです。http://en.wikipedia.org/wiki/X-Forwarded-Forしたがって、実際に確認する唯一の方法は、API をクエリして返される内容を確認することだと思います。

関連情報