Publié le 17/12/2010
Auteur fobec
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Detecter le systeme d'exploitation a 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.

Parser le User Agent

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'OS à partir du User Agent

Détecter le système d'exploitation d'un visiteur

<?php
echo "Le systeme d'exploitation de l'internaute est: ".ParseUserAgent::getOSName('');
?>
affiche par exemple
Le systeme d'exploitation de l'internaute est: Windows Seven

Détecter le crawler de Google

<?php
$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

La class ParseUserAgent est un exemple d'extraction du système d'exploitation à partir du UserAgent. Bien sur, les données peuvent être affinées et améliorées. Le but est de montrer la quantité d'information disponible dans l'UserAgent envoyé par le navigateur internet.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - class
Mise a jour
17/12/2010
Visualisation
vu 3754 fois
Public
Internaute
Auteur de la publication
Fobec
Admin
Auteur de 264 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Vincent dans tuto

Sympa votre petit script :) Oui il existe des bibliotheques deja toutes faites mais elles sont en general 50x plus lourdes que ce petit bout de code qui fait exactement ce qu'il faut. En plus votr...

Publié par Fobec dans logiciel

prise en charge du format ipV6. L'api est compatible avec tous les ip qu'elles soient au format ipV4 ou ipV6.

Publié par dieteticien-lyon dans CMS

Il existe aussi programme-dietetique.com qui est pas mal et au niveau fonctionnalit&Atilde;&copy;

Publié par mohamed dans php5

code comment publier tous les ficher en php5 et html5

Publié par Fobec dans CMS

Norton emet une alerte de type 'Suspicious.Cloud', hasard de compilation ou menace serieuse ? Faites attention en installant le logiciel.<br>Merci JM de l'avoir signaler.