纯真下载 | 纯真证券 | 贴图助手 | IP代理 | IP小秘书
发新话题
打印

UA规则

UA规则

大神,请问有没有什么技术手段或者特定的规则,可以判断浏览器的UserAgent是否是已知浏览器的UA,或者是正常的UA(该浏览器不已知)。

  |     |   TOP

楼主
通过UA检测常用浏览器的代码,网上一搜一大堆,一般主流的浏览器或者特定的应用,会有自己特定的UA,www.cz88.net/ip 这里的操作系统和浏览器也是通过UA判断的。
但是,UA是可以伪造或者程序自己随便设定的,只能作为参考值。
时间、时间、时间

  |     |   TOP

沙发
嗯,就是现在我要将文件中数据清洗后入表,每行数据都有ua,就是要将不是已知浏览器的ua给过滤掉,或者是不正常的ua过滤掉。
想问一下有没有已经实现了的技术手段或者规则可以做到这个事情,直接用一下

  |     |   TOP

板凳
就是一个子串判断啊,php的

//获取客户端浏览器  
function GetBrowser(){  
    $sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串  
    if (stripos($sys, "Firefox/") > 0) {  
        preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);  
        $exp[0] = "Firefox";  
        $exp[1] = $b[1];  //获取火狐浏览器的版本号  
    } elseif (stripos($sys, "Maxthon") > 0) {  
        preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);  
        $exp[0] = "傲游";  
        $exp[1] = $aoyou[1];  
    } elseif (stripos($sys, "MSIE") > 0) {  
        preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);  
        $exp[0] = "IE";  
        $exp[1] = $ie[1];  //获取IE的版本号  
    } elseif (stripos($sys, "OPR") > 0) {  
        preg_match("/OPR\/([\d\.]+)/", $sys, $opera);  
        $exp[0] = "Opera";  
        $exp[1] = $opera[1];   
    } elseif(stripos($sys, "Edge") > 0) {  
        //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配  
        preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);  
        $exp[0] = "Edge";  
        $exp[1] = $Edge[1];  
    } elseif (stripos($sys, "Chrome") > 0) {  
        preg_match("/Chrome\/([\d\.]+)/", $sys, $google);  
        $exp[0] = "Chrome";  
        $exp[1] = $google[1];  //获取google chrome的版本号  
    } elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){  
        preg_match("/rv:([\d\.]+)/", $sys, $IE);  
        $exp[0] = "IE";  
        $exp[1] = $IE[1];  
    }else {  
        $exp[0] = "未知浏览器";  
        $exp[1] = "";   
    }  
    return $exp;  
}  
  
//获取客户端操作系统  
function GetOS(){  
    $agent = $_SERVER['HTTP_USER_AGENT'];  
    $os = false;  
        if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)){ $os = 'Windows 7'; }
        else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)){ $os = 'Windows 8'; }
        else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)){ $os = 'Windows 10'; }
        else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)){ $os = 'Windows XP'; }
        else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)){ $os = 'Windows 2000'; }
        else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)){ $os = 'Windows NT'; }
        else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)){ $os = 'Windows 32'; }
        else if (preg_match('/linux/i', $agent)){ $os = 'Linux'; }
        else if (preg_match('/unix/i', $agent)){ $os = 'Unix'; }
        else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)){ $os = 'SunOS'; }
        else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)){ $os = 'IBM OS/2'; }
        else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)){ $os = 'Macintosh'; }
        else if (preg_match('/PowerPC/i', $agent)){ $os = 'PowerPC'; }
        else if (preg_match('/AIX/i', $agent)){ $os = 'AIX'; }
        else if (preg_match('/HPUX/i', $agent)){ $os = 'HPUX'; }
        else if (preg_match('/NetBSD/i', $agent)){ $os = 'NetBSD'; }
        else if (preg_match('/BSD/i', $agent)){ $os = 'BSD'; }
        else if (preg_match('/OSF1/i', $agent)){ $os = 'OSF1'; }
        else if (preg_match('/IRIX/i', $agent)){ $os = 'IRIX'; }
        else if (preg_match('/FreeBSD/i', $agent)){ $os = 'FreeBSD'; }
        else if (preg_match('/teleport/i', $agent)){ $os = 'teleport'; }
        else if (preg_match('/flashget/i', $agent)){ $os = 'flashget'; }
        else if (preg_match('/webzip/i', $agent)){ $os = 'webzip'; }
        else if (preg_match('/offline/i', $agent)){ $os = 'offline'; }
        else{ $os = '未知操作系统'; }  
    return $os;   
}
时间、时间、时间

  |     |   TOP

4楼
发新话题