PHP:クライアントがプロキシサーバーと匿名レベルを使用するかどうかを判断する

2866 ワード

クライアントがプロキシサーバを使用するかどうかを判断するには,クライアントが送信する環境変数情報から判断する.
具体的には、HTTP_を見てVIAフィールドは、このフィールドが設定されている場合、クライアントがプロキシサーバを使用していることを示します.
匿名レベルは次の表を参照して判断できます.
エージェントを掛けて効果を試してみる適用例を示します.http://ip.mixsec.org/
一、プロキシサーバーを使用していない場合:     REMOTE_ADDR=IP     HTTP_VIA=数値なしまたは非表示     HTTP_X_FORWARDED_FOR=数値なしまたは非表示
二、透明プロキシサーバーを使用する場合:Transparent Proxies
    REMOTE_ADDR=プロキシサーバIP    HTTP_VIA=プロキシサーバIP(補足:このフィールドはプロキシサーバによって埋め込まれ、ゲートウェイ情報などが埋め込まれる場合があります)    HTTP_X_FORWARDED_FOR=実際のIP    このようなエージェント・サーバは、アクセス・オブジェクトに情報を転送しても、実際のアイデンティティを隠すことはできません.
 
三、一般匿名プロキシサーバーを使用する場合:Anonymous Proxies    REMOTE_ADDR=プロキシサーバIP    HTTP_VIA=プロキシサーバIP(補足:このフィールドはプロキシサーバによって埋め込まれ、ゲートウェイ情報などが埋め込まれる場合があります)    HTTP_X_FORWARDED_FOR=プロキシサーバIP    実際のIPは非表示ですが、プロキシ・サーバを使用してアクセスしていることがアクセス・オブジェクトに明らかになりました.
 
四、欺瞞エージェントサーバーを使用する場合:Distorting Proxies    REMOTE_ADDR=プロキシサーバIP    HTTP_VIA=プロキシサーバIP  (補足:このフィールドはプロキシサーバによって埋め込まれ、ゲートウェイ情報などが埋め込まれる場合があります)    HTTP_X_FORWARDED_FOR=ランダムIP    アクセス先にエージェントサーバを使用していることを伝えましたが、実際のIPの代わりに虚偽のランダムIPを作成しました.
 
五、高匿名プロキシサーバーを使用する場合:High Anonymity Proxies   REMOTE_ADDR=プロキシサーバIP   HTTP_VIA=数値なしまたは非表示   HTTP_X_FORWARDED_FOR=数値なしまたは非表示   すべての情報をプロキシサーバの情報に置き換え、そのプロキシサーバを完全に使用してオブジェクトに直接アクセスするようにします.
それ以外に、proxy judgesを通じて他の参考になる判定情報をまとめ、実践的に利用することができる.
最後にphpの例を書きます.参考までにしてください.
if(!empty($_SERVER['HTTP_VIA']))    //     
{
    if(!isset($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        //Anonymous Proxies             

        //  IP    $_SERVER['REMOTE_ADDR']

   }
   else
   {
        //Transparent Proxies        
        //  IP    $_SERVER['REMOTE_ADDR']
        //  ip    $_SERVER['HTTP_X_FORWARDED_FOR']
   }
}
else    //            
{
    //  ip    $_SERVER['REMOTE_ADDR']
}
転載先:http://blog.csdn.net/alexdream/article/details/6120204