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.