PHP – Obtener navegador web e información de usuario

Resumen:

Obtener el nombre del navegador de un usuario que visita una página con PHP; además intentar parsearlo / interpretarlo para conocer el sistema operativo y dispositivo.

Información del navegador con PHP

La información del navegador se encuentra en $_SERVER["HTTP_USER_AGENT"] y su salida es algo como:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36

Esa es toda la información que se tiene sobre el navegador (ya que la IP está en otro lugar); en ella está incluido el sistema operativo y dispositivo, entre otros.

Recuerda que esta información no siempre es confiable, es decir, se puede modificar desde el cliente o puede incluso no estar disponible.

Además de eso, es un poco complejo parsear la cadena así que hay varias librerías que pueden hacer el trabajo por nosotros.

Parsear información de navegador con PHP

Como lo dije, a partir del User-Agent podemos intuir muchas cosas como sistema operativo o dispositivo, además de la familia del navegador web, todo esto obtenido desde PHP.

Existen muchas librerías y en este caso usaré esta, la cual puedes instalar con Composer usando:

composer require ua-parser/uap-php

Si no tienes composer mira un tutorial de instalación, y si tienes un proyecto de PHP que no está adaptado a composer mira cómo adaptarlo.

Uso de uap-php

Una vez que hayas descargado la librería con Composer incluye el autoload:

require_once "vendor/autoload.php"

Ahora mira este ejemplo:

<?php
/**
 * Demostrar uso de librería uap-php
 *
 * https://parzibyte.me/blog
 */
require_once "vendor/autoload.php";
use UAParser\Parser;

# Podría venir de otro lado
$agenteDeUsuario = $_SERVER["HTTP_USER_AGENT"];
$parseador = Parser::create();
$resultado = $parseador->parse($agenteDeUsuario);

$familiaNavegador = $resultado->ua->family; // Chrome, Firefox, Safari, Edge
$navegador = $resultado->ua->toString();
$dispositivo = $resultado->device->family;
$familiaSistema = $resultado->os->family;
$sistema = $resultado->os->toString();
$completo = $resultado->toString();

?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Información de navegador</title>
</head>
<body>
    <strong>Familia de navegador: </strong> <?php echo $familiaNavegador ?><br>
    <strong>Navegador: </strong> <?php echo $navegador ?><br>
    <strong>Dispositivo: </strong> <?php echo $dispositivo ?><br>
    <strong>Familia de OS: </strong> <?php echo $familiaSistema ?><br>
    <strong>Sistema operativo: </strong> <?php echo $sistema ?><br>
    <strong>Información completa: </strong> <?php echo $completo ?><br>
</body>
</html>

Debemos crear un parseador e invocar al método parse, pasándole la cadena del agente de usuario.

Esta cadena puede ser tomada de $_SERVER como lo mostré anteriormente, o de otro lugar. Por ejemplo, podrías hacer una API que indique los detalles del navegador usando PHP, la cual recibiría esta cadena desde el cliente.

Después de eso puedes acceder a ua, device y os.

Nota: puedes ver más sobre la librería en el repositorio de GitHub.

Ejemplos de información que se puede obtener con PHP

Finalmente veamos algunos ejemplos en distintos navegadores web:

Navegador Chrome sobre Android 9
Navegador Chrome sobre Windows 10
Navegador Edge corriendo sobre Windows 10
Firefox sobre Android 9
Firefox sobre Windows 10

Como ves, Chrome en Android envía el nombre del dispositivo mientras que Firefox no.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *