Esta es una biblioteca de rastreo de navegadores extremadamente complicada y casi completamente inútil. Inútil porque no deberías utilizar el rastreo del navegador. Así que detente ahora mismo y lee algo sobre la detección de funciones. Lo digo en serio. Irse. Me lo agradecerás más tarde.
La versión PHP de WhichBrowser para usar en un servidor. Totalmente compatible con PHP 7.0 o superior, incluido PHP 8.
También disponible:
WhichBrowser/Parser-JavaScript
Una versión JavaScript de WhichBrowser para usar con Node.js en el servidor
Qué navegador/servidor
Un servidor escrito en PHP que proporciona una API de JavaScript para usar en el navegador
Pero ¿por qué casi completamente inútil y no completamente inútil? Bueno, siempre hay una excepción a la regla. Existen razones válidas para rastrear el navegador: mejorar la experiencia del usuario o recopilar información sobre qué navegadores se utilizan en su sitio web. Mi sitio web es html5test.com y quería saber qué puntuación pertenece a cada navegador. Y para hacer eso necesitas una biblioteca de rastreo de navegador.
¿Por qué es extremadamente complicado?
Porque todo el mundo miente. En serio, no hay un solo navegador que sea completamente veraz. Casi todos los navegadores dicen que son Netscape 5 y casi todos los navegadores WebKit dicen que están basados en Gecko. Incluso Internet Explorer 11 ya no pretende ser IE, sino un navegador sin nombre similar a Gecko. Y se pone peor. Por eso es complicado.
¿Qué tipo de información da? Obtiene un bonito objeto que tiene información sobre el navegador, el motor de renderizado, el sistema operativo y el dispositivo. Le brinda nombres y versiones e incluso fabricante y modelo del dispositivo. Y WhichBrowser es bastante tenaz. Te brinda información que otros no. Por ejemplo:
JUC (Linux; U; 2.3.6; zh-cn; GT-I8150; 480*800) UCWEB8.7.4.225/145/800
UC Browser 8.7 on a Samsung Galaxy W running Android 2.3.6
Android nunca se menciona
Mozilla/5.0 (Series40; Nokia501/10.0.2; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.0.0.0.73
Nokia Xpress 3.0.0 on a Nokia Asha 501 running Nokia Asha Platform
A pesar de que el encabezado del agente de usuario afirma ser un dispositivo Serie 40, sabemos que en realidad ejecuta la plataforma Asha y también sabemos que OviBrowser pasó a llamarse Nokia Xpress.
Opera/9.80 (X11; Linux zvav; U; zh) Presto/2.8.119 Version/11.10
Opera Mini on a Nokia 5230 running Series60 5.0
El encabezado del agente de usuario se parece a Opera 11.10 en Linux, pero sabemos que es Opera Mini. Incluso podemos descubrir el sistema operativo real y el modelo de dispositivo a partir de otros encabezados.
WhichBrowser requiere PHP 7.0 o superior y es compatible con PHP 8. WhichBrowser es compatible con el estándar de carga automática PSR-4 y sigue el estilo de codificación PSR-1 y PSR-2.
Puede instalar WhichBrowser utilizando Composer, el administrador de paquetes estándar para PHP. El paquete se llama whichbrowser/parser .
composer require whichbrowser/parser
Puede actualizar WhichBrowser fácilmente ejecutando un comando simple.
composer update whichbrowser/parser
Debe ejecutar este comando con la mayor frecuencia posible. Quizás incluso quieras considerar configurar un trabajo cron para este propósito.
El primer paso requiere el cargador automático de Composer:
<?php
require ' vendor/autoload.php ' ; El segundo paso es crear un nuevo objeto WhichBrowserParser . Este objeto contendrá toda la información que la biblioteca pueda encontrar sobre el navegador. El objeto tiene un parámetro obligatorio, ya sea los encabezados enviados por el navegador o una cadena de agente de usuario. Es preferible usar los encabezados, porque permitirá una mejor detección, pero si solo tiene la cadena useragent, esto también funcionará.
Por ejemplo:
$ result = new WhichBrowser Parser ( getallheaders ());o:
$ result = new WhichBrowser Parser ( $ _SERVER [ ' HTTP_USER_AGENT ' ]); La variable $result ahora contiene un objeto que puede consultar para obtener información. Hay varias formas de acceder a la información.
En primer lugar, puede llamar a la función toString() para obtener una identificación legible por humanos:
" You are using " . $ result -> toString ();
// You are using Chrome 27 on OS X Mountain Lion 10.8Otra posibilidad es consultar el objeto:
$ result -> isType ( ' desktop ' );
// true
$ result -> isType ( ' mobile ' , ' tablet ' , ' media ' , ' gaming:portable ' );
// false
$ result -> isBrowser ( ' Maxthon ' , ' < ' , ' 4.0.5 ' );
// false
$ result -> isOs ( ' iOS ' , ' >= ' , ' 8 ' );
// false
$ result -> isOs ( ' OS X ' );
// true
$ result -> isEngine ( ' Blink ' );
// trueTambién puedes acceder a estas propiedades directamente:
$ result -> browser -> toString ();
// Chrome 27
$ result -> engine -> toString ();
// Blink
$ result -> os -> toString ();
// OS X Mountain Lion 10.8O acceda directamente a partes de estas propiedades:
$ result -> browser -> name ;
// Chrome
$ result -> browser -> name . ' ' . $ result -> browser -> version -> toString ();
// Chrome 27
$ result -> browser -> version -> value ;
// 27.0 . 1453.110
$ result -> engine -> name ;
// BlinkFinalmente también puedes consultar versiones directamente:
$ result -> browser -> version -> is ( ' > ' , 26 );
// true
$ result -> os -> version -> is ( ' < ' , ' 10.7.4 ' );
// false Es posible configurar opciones adicionales pasando una matriz como segundo parámetro al crear el objeto Parser .
En algunos casos es posible que desees desactivar la detección de bots. Esto permite que el bot engañe deliberadamente a WhichBrowser, para que usted pueda identificar la identidad del agente de usuario que el bot intenta imitar. Esto es especialmente útil cuando desea utilizar WhichBrowser para cambiar entre diferentes variantes de su sitio web y desea asegurarse de que los rastreadores vean la variante correcta del sitio web. Por ejemplo, un bot que imita un dispositivo móvil verá la variante móvil de su sitio.
$ result = new WhichBrowser Parser ( getallheaders (), [ ' detectBots ' => false ]);WhichBrowser admite adaptadores de caché compatibles con PSR-6 para almacenar en caché los resultados entre solicitudes. Usar un caché es especialmente útil si usa WhichBrowser en cada página de su sitio web y un usuario visita varias páginas. Durante la primera visita, se analizarán los encabezados y el resultado se almacenará en caché. En futuras visitas, se utilizarán los resultados almacenados en caché, lo cual es mucho más rápido que tener que analizar los encabezados una y otra vez.
Hay adaptadores disponibles para otros tipos de cachés, como APC, Doctrine, Memcached, MongoDB, Redis y muchos más. La configuración de estos adaptadores difiere entre sí, pero una vez configurados, todo lo que tiene que hacer es pasarlo como una opción al crear el objeto Parser , o usar la función setCache() para configurarlo después. WhichBrowser ha sido probado para funcionar con los adaptadores proporcionados por PHP Cache. Para obtener una lista de otros paquetes que proporcionan adaptadores, consulte Packagist.
Por ejemplo, si desea habilitar un caché basado en Memcached, necesita instalar un paquete de compositor adicional:
composer require cache/memcached-adapter
Y cambie la llamada a WhichBrowser/Parser de la siguiente manera:
$ client = new Memcached ();
$ client -> addServer ( ' localhost ' , 11211 );
$ pool = new Cache Adapter Memcached MemcachedCachePool ( $ client );
$ result = new WhichBrowser Parser ( getallheaders (), [ ' cache ' => $ pool ]);o
$ client = new Memcached ();
$ client -> addServer ( ' localhost ' , 11211 );
$ pool = new Cache Adapter Memcached MemcachedCachePool ( $ client );
$ result = new WhichBrowser Parser ();
$ result -> setCache ( $ pool );
$ result -> analyse ( getallheaders ()); También puede especificar después de cuántos segundos se debe descartar un resultado almacenado en caché. El valor predeterminado es 900 segundos o 15 minutos. Si cree que WhichBrowser utiliza demasiada memoria para el almacenamiento en caché, debe reducir este valor. Puede hacer esto configurando la opción cacheExpires o pasándola como segundo parámetro a la función setCache() .
Después de crear un nuevo objeto WhichBrowserParser , contiene una serie de propiedades y funciones. Se garantiza que todas estas propiedades estarán presentes.
Propiedades:
browserengineosdeviceFunciones:
getType()
Devuelve la propiedad type y subtype del objeto device . Si hay un subtipo presente, se concatena con el tipo y se separa por un semicolor, por ejemplo: mobile:smart o gaming:portable . Si el subtipo no es aplicable, simplemente devuelve el tipo, por ejemplo: desktop o ereader .
isType($type [,$type [,$type [,$type]]])
Si se utiliza un solo argumento, la función devuelve true si el argumento coincide con el type de propiedad del objeto device . Opcionalmente, el argumento también puede proporcionar un subtipo concatenándolo con el tipo y separándolo con un punto y coma. Puede utilizar varios argumentos, en cuyo caso la función devuelve true si uno de los argumentos coincide. Si ninguno de los argumentos coincide, devuelve false
isMobile()
Devuelve true si el navegador es un dispositivo móvil, como un teléfono, tableta, lector electrónico, cámara, reproductor multimedia portátil, reloj o consola de juegos portátil. De lo contrario devuelve false .
isBrowser($name [, $comparison, $version])
Se utiliza para consultar el name y la propiedad version del objeto browser . La función puede contener un único argumento para una comparación simple basada en name , o tres argumentos para comparar tanto name como version . El primer argumento siempre contiene el nombre del navegador. El segundo argumento es una cadena que puede contener < , <= , = , => o > . El tercero es un número entero, flotante o cadena que contiene la versión. Puede utilizar versiones como 10 , 10.7 o '10.7.4' . Para obtener más información sobre cómo se realizan las comparaciones de versiones, consulte la función is() del objeto Version .
isEngine($name [, $comparison, $version])
Se utiliza para consultar el name y la propiedad version del objeto engine . Esta función funciona exactamente de la misma manera que isBrowser .
isOs($name [, $comparison, $version])
Se utiliza para consultar el name y la propiedad version del objeto os . Esta función funciona exactamente de la misma manera que isBrowser .
isDetected()
¿Se detectó realmente algún navegador o no pudimos detectar nada?
toString()
Obtenga una representación legible por humanos del navegador detectado, incluido el sistema operativo y la información del dispositivo.
Un objeto de la clase WhichBrowserModelBrowser se utiliza para la propiedad browser del objeto principal WhichBrowserParser y contiene varias propiedades. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
namealiasversionstockchannelmodehiddenfamilyusingFunciones:
isFamily($name)
¿La familia de este navegador tiene este nombre o el navegador mismo tiene este nombre?
isUsing($name)
¿El navegador utiliza una vista web con el nombre proporcionado?
getName()
Obtener el nombre del navegador
getVersion()
Obtener la versión del navegador
toString()
Obtenga una representación legible por humanos del navegador detectado
Un objeto de la clase WhichBrowserModelEngine se utiliza para la propiedad engine del objeto principal WhichBrowserParser y contiene varias propiedades. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
nameversionFunciones:
getName()
Obtener el nombre del motor de renderizado
getVersion()
Obtenga la versión del motor de renderizado
toString()
Obtenga una representación legible por humanos del motor de renderizado detectado
Un objeto de la clase WhichBrowserModelOs se utiliza para la propiedad os del objeto principal WhichBrowserParser y contiene varias propiedades. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
nameversionfamilyFunciones:
isFamily($name)
¿La familia de este sistema operativo tiene este nombre o el sistema operativo en sí tiene este nombre?
getName()
Obtener el nombre del sistema operativo
getVersion()
Obtener la versión del sistema operativo
toString()
Obtenga una representación legible por humanos del sistema operativo detectado
Un objeto de la clase WhichBrowserModelDevice se utiliza para la propiedad device del objeto principal WhichBrowserParser y contiene varias propiedades. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
typesubtypeidentifiedmanufacturermodel La propiedad type puede contener cualquier valor de la siguiente lista:
Si el type es "móvil", la propiedad subtype puede contener cualquier valor de la siguiente lista:
Si el type es "juegos", la propiedad subtype puede contener cualquier valor de la siguiente lista:
Funciones:
getManufacturer()
Obtenga el nombre del fabricante
getModel()
Obtener el nombre del modelo
toString()
Obtenga una representación legible por humanos del dispositivo detectado
Un objeto de la clase WhichBrowserModelFamily se utiliza para la propiedad family del objeto WhichBrowserModelBrowser y WhichBrowserModelOs y contiene varias propiedades. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
nameversionFunciones:
getName()
Obtener el nombre de la familia
getVersion()
Obtén la versión de la familia.
toString()
Obtenga una representación legible por humanos de la familia
Un objeto de la clase WhichBrowserModelUsing se utiliza para la propiedad using del objeto WhichBrowserModelBrowser y contiene varias propiedades. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
nameversionFunciones:
getName()
Obtener el nombre de la vista web
getVersion()
Obtener la versión de la vista web
toString()
Obtenga una representación legible por humanos de la vista web
Un objeto de la clase WhichBrowserModelVersion se utiliza para la propiedad version del browser , engine y objeto os y contiene una serie de propiedades y funciones. Si una propiedad no es aplicable en esta situación será nula o indefinida.
Propiedades:
valuealiasnicknamedetailsFunciones:
is($version) o is($comparison, $version)
Con esta función es fácil comparar una versión con otra. Si especifica solo un argumento, esta función regresará si las versiones son las mismas. También puede especificar dos argumentos; en ese caso, el primer argumento contiene el operador de comparación, como < , <= , = , => o > . El segundo argumento es la versión con la que desea compararlo. Puedes usar versiones como 10 , 10.7 o '10.7.4' , pero ten en cuenta que 10 no es lo mismo que 10.0 . Por ejemplo, si nuestra versión de sistema operativo es 10.7.4 :
$ result -> os -> version -> is ( ' 10.7.4 ' );
// true
$ result -> os -> version -> is ( ' 10.7 ' );
// true
$ result -> os -> version -> is ( ' 10 ' );
// true
$ result -> os -> version -> is ( ' 10.0 ' );
// false
$ result -> os -> version -> is ( ' > ' , ' 10 ' );
// false
$ result -> os -> version -> is ( ' > ' , ' 10.7 ' );
// false
$ result -> os -> version -> is ( ' > ' , ' 10.7.3 ' );
// true