この記事では、ユーザーの実際の IP アドレスを取得する場合の HTTP_X_FORWARDED_FOR、HTTP_VIA、および REMOTE_ADDR の違いの概要を紹介します。
1. プロキシ サーバーを使用しない状況:
REMOTE_ADDR = あなたのIP
HTTP_VIA = 値がないか、表示されません
HTTP_X_FORWARDED_FOR = 値がないか、表示されません
2. 透過プロキシサーバーの使用状況: 透過プロキシ
REMOTE_ADDR = 最後のプロキシ サーバー IP
HTTP_VIA = プロキシサーバーのIP
HTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.129.72.215。
このタイプのプロキシ サーバーは依然としてあなたの情報を訪問者に転送するため、あなたの本当の身元を隠すという目的を達成することはできません。
3. 通常の匿名プロキシサーバーを使用する状況: 匿名プロキシ
REMOTE_ADDR = 最後のプロキシ サーバー IP
HTTP_VIA = プロキシサーバーのIP
HTTP_X_FORWARDED_FOR = プロキシ サーバー IP。複数のプロキシ サーバーを経由する場合、この値は 203.98.182.163、203.98.182.163、203.129.72.215 のようになります。
実際の IP を隠しますが、訪問者にはプロキシ サーバーを使用してアクセスしていることを明らかにします。
4. 欺瞞的なプロキシサーバーの使用: プロキシを歪める
REMOTE_ADDR = プロキシサーバーのIP
HTTP_VIA = プロキシサーバーのIP
HTTP_X_FORWARDED_FOR = ランダム IP。複数のプロキシ サーバーを経由する場合、この値は 203.98.182.163、203.98.182.163、203.129.72.215 のようになります。
訪問者にプロキシ サーバーを使用していることを伝えますが、実際の IP の代わりに偽のランダム IP を作成して騙します。
5. 高匿名性プロキシサーバーの使用状況: 高匿名性プロキシ(エリートプロキシ)
REMOTE_ADDR = プロキシサーバーのIP
HTTP_VIA = 値がないか、表示されません
HTTP_X_FORWARDED_FOR = 値がないか、複数のプロキシ サーバーを経由する場合、この値は 203.98.182.163、203.98.182.163、203.129.72.215 のようになります。
プロキシ サーバーを使用してオブジェクトに直接アクセスしているのと同じように、すべての情報をプロキシ サーバーの情報で完全に置き換えます
例 1 (ユーザーの実際の IP アドレスを取得する)
HP がユーザーの実際の IP アドレスを取得するためのコードは次のとおりです
コードは次のとおりです | コードをコピー |
関数getIp() { if($_SERVER['HTTP_CLIENT_IP']) { $ip = $_SERVER['HTTP_CLIENT_IP'] //PHP が IP を取得します ;} elseif ($_SERVER['HTTP_X_FORWARDED_FOR']) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } 他 { $ip = $_SERVER['REMOTE_ADDR'] //PHP は IP を取得します } } |
例子2
代码如下 | 复制幣 |
/* mktime:2012/9/9 */ |