Detecter le système d'exploitation à partir du User Agent

Lors d'une requête HTTP, des données sont automatiquement transmises au serveur web. En PHP, la variable  $_SERVER['HTTP_USER_AGENT'] contient le type de navigateur et le système d'exploitation du navigateur internet.
La class ParseUserAgent est un exemple pour extraire le système d'exploitation à partir de la variable User Agent.

<?php

class ParseUserAgent {
    /**
     * Principaux Système d'exploitation
     * @var array
     */
    private static $patternList=array(
            "Win16"=>"Windows 3.11",
            "(Windows 95)|(Win95)|(Windows_95)"=>"Windows 95",
            "(Windows 98)|(Win98)"=>"Windows 98",
            "(Windows NT 5.0)|(Windows 2000)"=>"Windows 2000",
            "(Windows NT 5.1)|(Windows XP)"=>"Windows XP",
            "(Windows NT 5.2)"=>"Windows Server 2003",
            "(Windows NT 6.0)"=>"Windows Vista",
            "(Windows NT 7.0)"=>"Windows Seven",
            "(Windows NT 4.0)|(WinNT4.0)|(WinNT)|(Windows NT)"=>"Windows NT 4.0",
            "OpenBSD"=>"Open BSD",
            "Ubuntu"=>"Linux Ubuntu",
            "(Linux)|(X11)"=>"Linux",
            "Googlebot"=>"Crawler Google"
    );

/**
 * Extraire l'OS
 * @param string $useragent
 * @return string Nom du système d'exploitation
 */
    public static function getOSName($useragent) {
        $osName='unknown';

    /** Si useragent n'est pas renseigné,détecter à partir du navigateur */
        if (!isset($useragent)||strlen($useragent)<5) {
            if (isset($_SERVER['HTTP_USER_AGENT'])) {
                $useragent= $_SERVER['HTTP_USER_AGENT'];
            } else {
                $useragent='';
            }
        }
        /** Tester tous les couples pattern=>nom d'OS **/
        foreach(self::$patternList as $pattern=>$name) {
            if (eregi($pattern,$useragent)) {
                $osName=$name;
                break;
            }
        }
       return $osName;
    }
}
?>

Exemple d'utilisation de la class:

- Détecter le système d'exploitation d'un visiteur
echo "Le systeme d'exploitation de l'internaute est: ".ParseUserAgent::getOSName('');
affiche par exemple
Le systeme d'exploitation de l'internaute est: Windows Seven

- Parser un UserAgent
$ua='Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)';
echo 'UserAgent correspond a :'.ParseUserAgent::getOSName($ua);
résultat de l'ua
L'OS de l'UserAgent est :Crawler Google
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour17/12/2010
VisualisationVu 776 fois
PublicInternaute
CategorieWeb - PHP - String
Auteur de l'article
fobec fobec
connecté le 09/05/2012
36 ans - France Nord-Est
45 articles dans la section
Contacter l'auteur
Partager l'article