web-dev-qa-db-ja.com

プロキシの背後にいるときに、Webサイトで実際のIPアドレスを見つけるにはどうすればよいですか

WhatIsMyIP のようないくつかのWebサイトが、プロキシサーバーを使用している場合でも、実際のIPアドレスが何であるかを調べます。と言いました :

検出されたプロキシ

次に、実際のIPアドレスを提供します。

JavaScriptを使用して、Webブラウザーのプロキシ設定を使用しないためにHTTPリクエストを送信することは可能ですか(Javaで実装するにはどうすればよいですか)、または魔法のテクニックがありますか?

46
user13934

いくつかの方法があります。

  • X-Forwarded-ForX-Client-IPなどのプロキシヘッダーは、非透過プロキシによって追加できます。
  • アクティブなプロキシチェックを使用できます。ターゲットサーバーは、一般的なプロキシポート(8080など)でクライアントIPに接続しようとし、そのようなサービスが実行されていることを検出すると、プロキシとしてフラグを立てます。
  • サーバーは、リクエストが既知のプロキシであるIPからのものかどうかを確認できます。 WhatsMyIPには、HideMyAssなどの一般的なものを含め、おそらくこれらの大きなリストがあります。
  • Webクライアントソフトウェア(JavaアプレットまたはFlashアプリなど)は、ブラウザー設定を読み取るか、ターゲットシステムのWebサービスに直接接続して(プロキシをバイパス)、IPが一致することを確認できる可能性があります。
  • モバイルアプリソフトウェアは、クライアントIPを識別できます。例: PhoneGapプラグイン
52
Polynomial

多項式が言ったこと以外に、別の一般的な方法は、ブラウザーにHTTPSの有無にかかわらずサイトを表示させ、接続が同じIPからのものかどうかを確認することです。

SSL接続のプロキシはスプーフィング証明書を必要とするため、多くの透過(プロキシなど)プロキシはSSLトラフィックがプロキシなしで通過することを許可し、これにより他の問題のバケット全体が発生します。

この場合、SSLアドレスは「実際の」アドレスであり、非SSLアドレスはプロキシのアドレスです。

14
tylerl

プロキシーの背後にある間に、Webサーバー/ Webサイトが実際のIPを見つけることができる場合があります。通常、HTTPプロキシサーバーは、クライアント/ユーザーからリクエストを受信すると、HTTPヘッダーに新しいフィールド(X-Forwarded-For)を追加し、その後、リクエストをWebサーバーに転送します。このX-Forwarded-Forフィールドには、クライアントのIPアドレスがあります。したがって、このフィールドを分析することで、Webサイトは実際のIPアドレスを把握できます。

ただし、プロキシサーバーはさまざまなレベルの匿名性を提供します。非常に匿名のプロキシ(エリートプロキシとも呼ばれます)が使用されている場合、これらのエリートプロキシには通常そのようなヘッダーが含まれていないため、Webサイトが実際のIPアドレスを見つけることができない場合があります。別のオプションは、実際のIPアドレスを非表示にする場合は、Ultrasurfを使用することです。

X-forwarded-forヘッダーの詳細と、Webサーバーがプロキシサーバーの使用を検出する方法を示す簡単なデモpythonスクリプト: X-Forwarded -For

3
Guest