Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/05/2005, 14:42
Avatar de chalchis
chalchis
 
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
snifer

<?php
$HUA=$_SERVER['HTTP_USER_AGENT'];
$HUA=strtolower($HUA);
//*********** Determinamos el navegador ********
//Declaramos las variables navegador, version, sistema
$navegador="Desconocido";
$version="Desconocido";
$sistema="Desconocido";

//Proceso de búsqueda:
//1. navegador
// a. Versión
//2. sistema Operativo
//(Búsquedas no sensibles a mayusculas)

//DETECCIÓN DE navegador
//~~~~~~~~~~~~~~~~~~~~~~

//Detección de Opera
//Exemplo: Opera/6.05 (Windows XP; U) [es-ES]
if (stristr($HUA,"opera"))
{
$navegador="Opera";
$K=strpos($HUA, "opera");
$version=substr($HUA,$K+6,5);
}
elseif (stristr($HUA,"aweb"))
{
$navegador="AWeb";
$sistema="Amiga OS";
}
elseif (stristr($HUA, "msie"))
{
$navegador="Internet Explorer";
$K=strpos($HUA, "msie");
$temp=substr($HUA,$K);
$P=strpos($temp, chr(59));
$version=substr($temp,5,$P-5);
if (stristr($HUA,"aol"))
{
$K=strpos($HUA, "aol");
$temp=substr($HUA,$K);
$P=strpos($temp, chr(59));
$navegador.=" (AOL ".substr($temp,4,$P-4).")";
}
elseif (stristr($HUA,"msn"))
{
$K=strpos($HUA, "msn");
$temp=substr($HUA,$K);
$P=strpos($temp, chr(59));
$navegador.=" (MSN ".substr($temp,4,$P-4).")";
}
}
elseif (stristr($HUA,"mozilla") && ! (stristr($HUA,"opera") || stristr($HUA,"msie")))
{
$navegador="Mozilla";
if (stristr($HUA,"rv:"))
{
$K=strpos($HUA, "rv:");
$P=strrpos($HUA, chr(41))-$K;
$version=substr($HUA,$K+3,$P-3);
}
elseif (stristr($HUA,"mozilla/5.0"))
{
$version="5.0";
}
else
{
$navegador="Netscape Navigator";
$K=strpos($HUA,"/");
$P=strpos($HUA," ");
$version=substr($HUA,$K+1, $P-7);
if (stristr($HUA,"c-cck-mcd"))
{
$version=str_replace("c-cck-mcd","",$version);
}
if (stristr($HUA,"sc-sgi"))
{
$version=str_replace("sc-sgi","",$version);
}
if(stristr($HUA,"gold"))
{
$version=str_replace("gold"," Gold",$version);
$version=str_replace("Gold"," Gold",$version);
}
}
if (stristr($HUA,"phoenix"))
{
$navegador="Phoenix";
$K=strrpos($HUA,"phoenix");
$version=substr($HUA,$K+8);
//Cambia o '/' por un espacio
$version=str_replace("/"," ",$version);
}
elseif (stristr($HUA,"netscape"))
{
$navegador="Netscape";
$K=strrpos($HUA,"netscape");
$version=substr($HUA,$K+9);
$version=str_replace("/"," ",$version);
}
elseif (stristr($HUA,"firebird"))
{
$navegador="Firebird";
$K=strrpos($HUA,"firebird");
$version=substr($HUA,$K+9);
$version=str_replace("/"," ",$version);
}
elseif (stristr($HUA,"Chimera"))
{
$navegador="Chimera";
$K=strrpos($HUA,"chimera");
$version=substr($HUA,$K+7);
$version=str_replace("/"," ",$version);
$sistema="Mac OS X";
}
elseif (stristr($HUA,"Camino"))
{
$navegador="Camino";
$K=strrpos($HUA,"camino");
$version=substr($HUA,$K+6);
$version=str_replace("/"," ",$version);
$version=str_replace("+","",$version);
$sistema="Mac OS X";
}
elseif (stristr($HUA,"safari"))
{
$navegador="Safari";
$K=strrpos($HUA,"safari");
$version="1.0 Build ".substr($HUA,$K+7);
}
elseif (stristr($HUA,"konqueror"))
{
$navegador="Konqueror";
$K=strpos($HUA, "konqueror");
$temp=substr($HUA,$K);
$P=strpos($temp, chr(59));
$version=substr($temp,10,$P-10);
}
elseif (stristr($HUA,"galeon"))
{
$navegador="Galeon";
$K=strpos($HUA, "galeon");
$temp=substr($HUA,$K);
$P=strpos($temp, chr(32));
$version=substr($temp,7,$P-7);
}
elseif (stristr($HUA,"MultiZilla"))
{
$navegador="MultiZilla";
$K=strpos($HUA,"multizilla");
$temp=substr($HUA,$K);
$K=strpos($temp,"v");
$temp=substr($temp,$K+1);
$P=strpos($temp," ");
$version=substr($temp,0,$P);
}
elseif (stristr($HUA,"netpositive") || stristr($HUA,"zonesurf"))
{
$navegador="NetPositive";
$K=strpos($HUA, "netpositive");
$temp=substr($HUA,$K);
$P=strrpos($temp, chr(41));
$version=substr($temp,12,$P-12);
$sistema="BeOS";
}
elseif (stristr($HUA,"qnx voyager"))
{
$navegador="Voyager";
$K=strpos($HUA, "qnx voyager");
$temp=substr($HUA,$K);
$P=strpos($temp, chr(59));
$version=substr($temp,12,$P-12);
}
}
elseif (stristr($HUA,"lynx") || stristr($HUA,"links"))
{
$navegador="Lynx";
if (stristr($HUA,"lynx"))
{
$P=strpos($HUA," ");
$version=substr($HUA,5, $P-5);
}
elseif (stristr($HUA,"0."))
{
$P=strpos($HUA,chr(59));
$version=substr($HUA,7, $P-7);
}
}
elseif (stristr($HUA,"arachne"))
{
$navegador="Arachne";
}
elseif (stristr($HUA,"googlebot"))
{
$navegador="Googlebot";
}
elseif(stristr($HUA,"infomine"))
{
$navegador="Infomine";
}
elseif(stristr($HUA,"ia_archiver"))
{
$navegador="Archive.org Spider";
}
elseif(stristr($HUA,"msnbot"))
{
$navegador="MSN Bot";
}
elseif(stristr($HUA,"validator") && stristr($HUA,"w3c"))
{
$navegador="W3C Validator";
}
if (stristr($HUA,"dos"))
{
$sistema="MS-DOS";
}
if (stristr($HUA,"amiga"))
{
$sistema="Amiga OS";
}
//Detección de Windows
if (stristr($HUA,"windows 3.1") || (stristr($HUA,"win16")) || (stristr($HUA,"win95") && stristr($HUA,"16bit")))
{
$sistema="Windows 3.1/3.11";
}
elseif (stristr($HUA,"nt 3.51") || (stristr($HUA,"nt3.51")))
{
$sistema="Windows nt 3.51";
}
elseif (stristr($HUA,"windows 95") || (stristr($HUA,"win95")))
{
$sistema="Windows 95";
}
elseif (stristr($HUA,"windows me") || (stristr($HUA,"win") && stristr($HUA,"4.90")))
{
$sistema="Windows Millenium Edition";
}
elseif (stristr($HUA,"windows 98") || (stristr($HUA,"win98")) || (stristr($HUA,"win") && stristr($HUA,"3.95")))
{
$sistema="Windows 98";
}
elseif (stristr($HUA,"nt 5.0") || stristr($HUA,"windows 2000"))
{
$sistema="Windows 2000";
}
elseif (stristr($HUA,"nt 5.1") || stristr($HUA,"windows xp"))
{
$sistema="Windows XP";
}
elseif (stristr($HUA,"nt 5.2"))
{
$sistema="Windows Server 2003";
}
elseif (stristr($HUA,"windows CE"))
{
$sistema="Windows Pocket PC";
}
elseif (stristr($HUA,"nt 4") || stristr($HUA,"nt4") || stristr($HUA,"winnt") || stristr($HUA,"windows nt"))
{
$sistema="Windows NT 4.0";
}
elseif (stristr($HUA,"windows"))
{
$sistema="Windows";
}
//Detección de Mac OS
if (stristr($HUA,"mac os x"))
{
$sistema="Mac OS X";
}
elseif (stristr($HUA,"68k"))
{
$sistema="Mac 68K";
}
elseif (stristr($HUA,"mac_powerpc") || stristr($HUA,"ppc") || stristr($HUA,"macintosh"))
{
$sistema="Mac OS 8/9";
}
//Detección de sistemas baseados en Unix (Linux, Solaris, HP-UX, BeOS, QNX...)
if (stristr($HUA,"linux"))
{
$sistema="Linux";
}
elseif (stristr($HUA,"freebsd"))
{
$sistema="FreeBSD";
}
elseif (stristr($HUA,"openbsd"))
{
$sistema="OpenBSD";
}
elseif (stristr($HUA,"netbsd"))
{
$sistema="NetBSD";
}
elseif (stristr($HUA,"beos"))
{
$sistema="BeOS";
}
elseif (stristr($HUA,"sunos") || stristr($HUA,"solaris"))
{
$sistema="Sun Solaris";
$K=strpos($HUA, "sunos");
$temp=substr($HUA,$K+6);
$P=strpos($temp, chr(32));
$temp=substr($temp,0,$P);
if ($temp=="sun4u;" || $temp=="sun4m;")
{
$temp="";
}
$sistema.=" ".$temp;
}
elseif (stristr($HUA,"qnx") || stristr($HUA,"photon"))
{
$sistema="QNX";
}
elseif (stristr($HUA,"hp-ux"))
{
$sistema="HP-UX";
}
elseif (stristr($HUA,"irix"))
{
$sistema="SGI IRIX";
}
elseif (stristr($HUA,"aix") || stristr($HUA,"ibm"))
{
$sistema="IBM AIX";
}
elseif (stristr($HUA,"os/2") && stristr($HUA,"warp"))
{
$sistema="OS/2 Warp";
}
elseif (stristr($HUA,"os/2"))
{
$sistema="OS/2";
}
elseif (stristr($HUA,"HURD") || (stristr($HUA,"GNU") && stristr($HUA,"HURD")))
{
$sistema="Unix (GNU Hurd)";
}
//Para outros Unix
elseif (stristr($HUA,"unix") || stristr($HUA,"x11"))
{
$sistema="Unix";
}
//ÚLTIMOS DETALLES
//Elimina los caracteres raros del final
$version=str_replace(")","",$version);
$version=str_replace(";)","",$version);
$version=str_replace("+","",$version);
$version=str_replace("c-sgi [","",$version);
$version=str_replace("c-ja","",$version);
$version=str_replace("c-cern","",$version);
$version=str_replace("_strs","",$version);
$version=str_replace(" [","",$version);
//Cosas raras
if($sistema==="Linux" && $navegador==="Internet Explorer")
{
$navegador="Mozilla";
$version="Descoñecida";
}
//De non estar definidas las variables, se ponen como desconosidas
if($sistema===false || $sistema==="")
{
$sistema=false;
}
if($version===false || $version==="")
{
$version=false;
}
if($navegador===false || $navegador==="")
{
$navegador=false;
}
//echo $navegador.' ';
//echo $version.' ';
//echo $sistema.' ';
//************************** Termina Sniffer *******


?>
__________________
gerardo