判断客户端是否使用代理服务器及其匿名级别

转自:http://www.cnblogs.com/heiing/archive/2010/04/19/1715304.html

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断。

具体来说,就是看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‘]
}

时间: 2024-10-06 00:07:20

判断客户端是否使用代理服务器及其匿名级别的相关文章

PHP:判断客户端是否使用代理服务器及其匿名级别

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断. 具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器. 匿名级别可以参考下表来判断. 给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/ 一.没有使用代理服务器的情况:     REMOTE_ADDR = 您的 IP     HTTP_VIA = 没数值或不显示     HTTP_X_FORWARDED_FOR = 没数值或不显示 二.使用透明代理服务器的情

【转载】PHP判断客户端是否使用代理服务器及其匿名级别

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断. 具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器. 匿名级别可以参考下表来判断. 给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/ 一.没有使用代理服务器的情况:     REMOTE_ADDR = 您的 IP     HTTP_VIA = 没数值或不显示     HTTP_X_FORWARDED_FOR = 没数值或不显示 二.使用透明代理服务器的情

判断客户端是否使用了代理

要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断. 具体来说,就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器. 匿名级别可以参考下表来判断. 给出一个应用例子,可以挂上代理试试效果: http://ip.mixsec.org/ 一.没有使用代理服务器的情况:      REMOTE_ADDR = 您的 IP      HTTP_VIA = 没数值或不显示      HTTP_X_FORWARDED_FOR = 没数值或不显示 二.使用透明代理服务

判断客户端是否是手机或者PC

/// <summary> /// 判断客户端是否是手机或者PC /// </summary> /// <returns></returns> public static bool IsMobileDevice() { HttpContext context = HttpContext.Current; //C#自带方法判断是否为移动端 if (context.Request.Browser.IsMobileDevice) { return true; }

服务器中判断客户端socket断开连接的方法

1, 如果服务端的Socket比客户端的Socket先关闭,会导致客户端出现TIME_WAIT状态,占用系统资源. 所以,必须等客户端先关闭Socket后,服务器端再关闭Socket才能避免TIME_WAIT状态的出现. 2, 在linux下写socket的程序的时候,如果尝试send到一个disconnected socket上,就会让底层抛出一个SIGPIPE信号. client端通过 pipe 发送信息到server端后,就关闭client端, 这时server端,返回信息给 client

使用JS判断客户端、浏览器、操作系统类型

一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端. 核心代码如下: 方法一: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content=&quo

OpenWRT上判断客户端在线个数

有两种方式: 一.通过DHCP client分配列表 (缺点:client列表会根据超时时间刷新,一般超时时间为12h,) 二.通过arp缓存列表/proc/net/arp(缺点:arp刷新时间默认为30s,这个时间的误差可以接受.) 主要讲解第二种方法: Flags: 0x0是找不到这台主机了. 0x2是主机还在线. IP address HW type Flags HW address Mask Device 192.168.235.1 0x1 0x2 00:01:41:80:e3:e9 *

JS判断客户端是否是iOS或者Android或者ipad(三)

 *  * @function: 判断浏览器类型是否是Safari.Firefox.ie.chrome浏览器  * @return: true或false  *  */ function isSafari(){     var userAgent = navigator.userAgent.toLowerCase();     if(userAgent.indexOf("safari") > -1 && userAgent.indexOf("chrome

一个JS判断客户端是否已安装某个字体(Only IE)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh" lang="zh" dir=&qu