From 1c090da414dd7b8b416db89b423fa02bfcccc1ff Mon Sep 17 00:00:00 2001 From: Robert Kaiser Date: Tue, 29 Sep 2009 17:16:22 +0200 Subject: [PATCH] update user agent library for more browsers, OSes, and bots --- include/classes/useragent.php-class | 789 +++++++++++++++++----------- testbed/ua_list_raw.txt | 107 +++- 2 files changed, 601 insertions(+), 295 deletions(-) diff --git a/include/classes/useragent.php-class b/include/classes/useragent.php-class index be512f4..f87badb 100755 --- a/include/classes/useragent.php-class +++ b/include/classes/useragent.php-class @@ -212,16 +212,66 @@ class userAgent { $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|BonEcho/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Bon Echo'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|GranParadiso/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Gran Paradiso'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|Shiretoko/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Shiretoko'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|Namoroka/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Namoroka'; + $this->version = $regs[1]; + $this->bot = false; + } elseif (preg_match('|Minefield/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { $this->brand = 'Minefield'; $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|PmWFx/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'PmW-Firefox'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|BeZillaBrowser/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'BeZillaBrowser'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|Songbird/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Songbird'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|Shredder/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Shredder'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|prism/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Prism'; + $this->version = $regs[1]; + $this->bot = false; + } elseif (preg_match('|Minimo/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { $this->brand = 'Minimo'; $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|Fennec/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Fennec'; + $this->version = $regs[1]; + $this->bot = false; + } elseif (preg_match('|Galeon/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Galeon'; $this->version = $regs[1]; @@ -297,11 +347,31 @@ class userAgent { $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|Spinn3r ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { /* looks like Gecko! */ + $this->brand = 'Spinn3r'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Butterfly/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { /* looks like Gecko! */ + $this->brand = 'Butterfly'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Googlebot/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { /* looks like Gecko! */ + $this->brand = 'Googlebot'; + $this->version = $regs[1]; + $this->bot = true; + } elseif (preg_match('|Firefox/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Firefox'; $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|Thunderbird/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + $this->brand = 'Thunderbird'; + $this->version = $regs[1]; + $this->bot = false; + } elseif (preg_match('|rv:([0-9a-zA-Z\.+]+)|', $this->uastring, $regs) && strstr($this->uastring, "Mozilla/") && strstr($this->uastring, "Gecko/")) { $this->brand = 'Mozilla'; @@ -314,6 +384,26 @@ class userAgent { $this->version = 'M'.$regs[1]; $this->bot = false; } + elseif (preg_match('|Baiduspider|i', $this->uastring)) { + $this->brand = 'BaiDuSpider'; + $this->version = null; + $this->bot = true; + } + elseif (preg_match('|YodaoBot-Mobile/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { /* looks like Gecko! */ + $this->brand = 'YodaoBot-Mobile'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Googlebot-Mobile/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { /* looks like Gecko! */ + $this->brand = 'Googlebot-Mobile'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|FASTMobileCrawl/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { /* looks like Gecko! */ + $this->brand = 'FASTMobileCrawl'; + $this->version = $regs[1]; + $this->bot = true; + } elseif (preg_match('|MSFrontPage/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Microsoft FrontPage'; $this->version = $regs[1]; @@ -384,6 +474,11 @@ class userAgent { $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|Browser/Obigo-([0-9A-Z]+/[0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Obigo'; + $this->version = $regs[1]; + $this->bot = false; + } elseif (preg_match('|Nokia([0-9a-zA-Z]+/[0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Nokia'; $this->version = $regs[1]; @@ -409,6 +504,16 @@ class userAgent { $this->version = $regs[1]; $this->bot = false; } + elseif (preg_match('|NewsFox/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'NewsFox'; + $this->version = $regs[1]; + $this->bot = false; + } + elseif (preg_match('|rdfbot/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'rdfbot'; + $this->version = $regs[1]; + $this->bot = false; + } elseif (preg_match('|IBM-WebExplorer-DLL/v([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'WebExplorer'; $this->version = $regs[1]; @@ -474,7 +579,32 @@ class userAgent { $this->version = $regs[1]; $this->bot = true; } - elseif (preg_match('|([0-9a-zA-Z\.+]+bot)/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { + elseif (preg_match('|heritrix([0-9a-zA-Z\.+-]+)|', $this->uastring, $regs)) { + $this->brand = 'Heritrix'; + $this->version = str_replace('-', '.', $regs[1]); + $this->bot = true; + } + elseif (preg_match('|SBSearch/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'SBSearch'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Powermarks/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Powermarks'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|TopBlogsInfo/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'TopBlogsInfo'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|picmole/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'picmole'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|([0-9a-zA-Z\._+-]+bot)/([0-9a-zA-Z\.+]+)|i', $this->uastring, $regs)) { $this->brand = $regs[1]; $this->version = $regs[2]; $this->bot = true; @@ -504,11 +634,6 @@ class userAgent { $this->version = $regs[1]; $this->bot = true; } - elseif (preg_match('|Powermarks/([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { - $this->brand = 'Powermarks'; - $this->version = $regs[1]; - $this->bot = true; - } elseif (preg_match('|Gulper Web Bot ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Gulper Web Bot'; $this->version = $regs[1]; @@ -519,11 +644,41 @@ class userAgent { $this->version = $regs[1]; $this->bot = true; } + elseif (preg_match('|Advista Crawler ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'HTTrack'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Seznam screenshot-generator ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Seznam screenshot-generator'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Yahoo! SearchMonkey ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Yahoo! SearchMonkey'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Yahoo Pipes ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Yahoo! Pipes'; + $this->version = $regs[1]; + $this->bot = true; + } + elseif (preg_match('|Firebat ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Firebat'; + $this->version = $regs[1]; + $this->bot = true; + } elseif (preg_match('|Twiceler-([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Twiceler'; $this->version = $regs[1]; $this->bot = true; } + elseif (preg_match('|Nu_?tch-([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { + $this->brand = 'Nutch'; + $this->version = $regs[1]; + $this->bot = true; + } elseif (preg_match('|Microsoft URL Control - ([0-9a-zA-Z\.+]+)|', $this->uastring, $regs)) { $this->brand = 'Microsoft URL Control'; $this->version = $regs[1]; @@ -544,6 +699,21 @@ class userAgent { $this->version = null; $this->bot = true; } + elseif (preg_match('|ICCrawler|i', $this->uastring, $regs)) { + $this->brand = 'ICCrawler'; + $this->version = null; + $this->bot = true; + } + elseif (preg_match('|KaloogaBot|', $this->uastring, $regs)) { + $this->brand = 'KaloogaBot'; + $this->version = null; + $this->bot = true; + } + elseif (preg_match('|ScoutJet|', $this->uastring, $regs)) { + $this->brand = 'ScoutJet'; + $this->version = null; + $this->bot = true; + } elseif (preg_match('|http://www.livedir.net|', $this->uastring, $regs)) { $this->brand = 'livedir.net'; $this->version = null; @@ -554,6 +724,11 @@ class userAgent { $this->version = null; $this->bot = true; } + elseif (preg_match('|newstin.com|', $this->uastring, $regs)) { + $this->brand = 'newstin.com'; + $this->version = null; + $this->bot = true; + } elseif (preg_match('|http://www.almaden.ibm.com/cs/crawler|', $this->uastring)) { $this->brand = 'almaden crawler'; $this->version = null; @@ -595,11 +770,6 @@ class userAgent { $this->version = null; $this->bot = true; } - elseif (preg_match('|Baiduspider|i', $this->uastring)) { - $this->brand = 'BaiDuSpider'; - $this->version = null; - $this->bot = true; - } elseif (preg_match('|Indy Library|', $this->uastring)) { $this->brand = 'Indy Library'; $this->version = null; @@ -726,7 +896,8 @@ class userAgent { 'NetResearchServer','LinkWalker','Zeus','W3C_Validator','ZyBorg','Ask Jeeves','ia_archiver', 'PingALink Monitoring Services','IlTrovatore-Setaccio','Nutch','Mercator','search.ch', 'appie','larbin','NutchCVS','Webchat','Mediapartners-Google','sitecheck.internetseer.com', - 'FavOrg','findlinks','DataCha0s','ichiro','Francis','','','','',''); + 'FavOrg','findlinks','DataCha0s','ichiro','Francis','CoralWebPrx','DoCoMo','Ocelli','Sogou Video', + 'Yandex','Yeti','Austronaut-URL-Checker'); if (in_array($this->brand, $botArray)) { $this->bot = true; @@ -759,57 +930,61 @@ class userAgent { if (!isset($this->uadata['engine'])) { $this->uadata['engine'] = 'unknown'; $this->uadata['geckodate'] = null; - if (preg_match('|Gecko/([0-9]+)|', $this->uastring, $regs) && (strpos($this->brand, 'Opera') === false)) { - $this->uadata['engine'] = 'gecko'; - $this->uadata['geckodate'] = $regs[1]; - } - elseif ((strpos($this->brand, 'Internet Explorer') !== false) || (strpos($this->brand, 'FrontPage') !== false)) { - if ((strpos(strtolower($this->uastring), 'mac') !== false) && (intval($this->getVersion()) >= 5)) { - $this->uadata['engine'] = 'tasman'; + if (!$this->bot) { + if (preg_match('|Gecko/([0-9]+)|', $this->uastring, $regs) && (strpos($this->brand, 'Opera') === false)) { + $this->uadata['engine'] = 'gecko'; + $this->uadata['geckodate'] = $regs[1]; } - else { - $this->uadata['engine'] = 'trident'; + elseif ((strpos($this->brand, 'Internet Explorer') !== false) || (strpos($this->brand, 'FrontPage') !== false)) { + if ((strpos(strtolower($this->uastring), 'mac') !== false) && (intval($this->getVersion()) >= 5)) { + $this->uadata['engine'] = 'tasman'; + } + else { + $this->uadata['engine'] = 'trident'; + } } - } - elseif ((strpos($this->brand, 'Konqueror') !== false) || (strpos($this->brand, 'Safari') !== false) || - (strpos($this->brand, 'Shiira') !== false) || (strpos($this->brand, 'Chrome') !== false) || - (strpos($this->brand, 'AppleWebKit') !== false) || (strpos($this->brand, 'OmniWeb') !== false)) { - $this->uadata['engine'] = 'khtml'; - } - elseif (strpos($this->brand, 'Netscape') !== false) { - // non-Gecko Netscape browsers - if (intval($this->version) <= 4) { - $this->uadata['engine'] = 'nscp'; + elseif ((strpos($this->brand, 'Konqueror') !== false) || (strpos($this->uastring, 'WebKit/') !== false) || + (strpos($this->brand, 'OmniWeb') !== false)) { + $this->uadata['engine'] = 'khtml'; + } + elseif (strpos($this->brand, 'Netscape') !== false) { + // non-Gecko Netscape browsers + if (intval($this->version) <= 4) { + $this->uadata['engine'] = 'nscp'; + } + elseif (strpos($this->uastring, 'MSIE') !== false) { + $this->uadata['engine'] = 'trident'; + } } - elseif (strpos($this->uastring, 'MSIE') !== false) { + elseif (strpos($this->brand, 'Opera') !== false) { + $this->uadata['engine'] = 'presto'; + } + elseif (strpos($this->brand, 'Dillo') !== false) { + $this->uadata['engine'] = 'gzilla'; + } + elseif ((strpos($this->brand, 'ELinks') !== false) || (strpos($this->brand, 'Links') !== false)) { + $this->uadata['engine'] = 'links'; + } + elseif ((strpos($this->brand, 'Lynx') !== false)) { + $this->uadata['engine'] = 'lynx'; + } + elseif ((strpos($this->brand, 'ICEbrowser') !== false) || (strpos($this->brand, 'ICE Browser') !== false)) { + $this->uadata['engine'] = 'icestorm'; + } + elseif ((strpos($this->brand, 'PlayStation') !== false) || (strpos($this->brand, 'NetFront') !== false)) { + $this->uadata['engine'] = 'netfront'; + } + elseif ((strpos($this->brand, 'Avant') !== false) || (strpos($this->brand, 'Crazy Browser') !== false) || + (strpos($this->brand, 'AOL') !== false) || (strpos($this->brand, 'MSN') !== false) || + (strpos($this->brand, 'MyIE2') !== false) || (strpos($this->brand, 'Maxthon') !== false)) { $this->uadata['engine'] = 'trident'; } - } - elseif (strpos($this->brand, 'Opera') !== false) { - $this->uadata['engine'] = 'presto'; - } - elseif (strpos($this->brand, 'Dillo') !== false) { - $this->uadata['engine'] = 'gzilla'; - } - elseif ((strpos($this->brand, 'ELinks') !== false) || (strpos($this->brand, 'Links') !== false)) { - $this->uadata['engine'] = 'links'; - } - elseif ((strpos($this->brand, 'ICEbrowser') !== false) || (strpos($this->brand, 'ICE Browser') !== false)) { - $this->uadata['engine'] = 'icestorm'; - } - elseif ((strpos($this->brand, 'PlayStation') !== false) || (strpos($this->brand, 'NetFront') !== false)) { - $this->uadata['engine'] = 'netfront'; - } - elseif ((strpos($this->brand, 'Avant') !== false) || (strpos($this->brand, 'Crazy Browser') !== false) || - (strpos($this->brand, 'AOL') !== false) || (strpos($this->brand, 'MSN') !== false) || - (strpos($this->brand, 'MyIE2') !== false) || (strpos($this->brand, 'Maxthon') !== false)) { - $this->uadata['engine'] = 'trident'; - } - elseif (strpos($this->brand, 'Galeon') !== false) { - $this->uadata['engine'] = 'gecko'; - } - elseif (strpos($this->brand, 'WebPro') !== false) { - $this->uadata['engine'] = 'nscp'; + elseif (strpos($this->brand, 'Galeon') !== false) { + $this->uadata['engine'] = 'gecko'; + } + elseif (strpos($this->brand, 'WebPro') !== false) { + $this->uadata['engine'] = 'nscp'; + } } } return $this->uadata['engine']; @@ -829,258 +1004,286 @@ class userAgent { public function getOS() { if (!isset($this->uadata['os'])) { $this->uadata['os'] = null; - if ($this->hasEngine('gecko')) { - if (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = (strpos($regs[3],'chrome://')===false)?$regs[3]:null; - $this->uadata['eng_version'] = $regs[4]; + if (!$this->bot) { + if ($this->hasEngine('gecko')) { + if (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = (strpos($regs[3],'chrome://')===false)?$regs[3]:null; + $this->uadata['eng_version'] = $regs[4]; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + $this->uadata['eng_version'] = $regs[3]; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^;]+); m([^\);]+)\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = $regs[3]; + $this->uadata['eng_version'] = 'M'.$regs[4]; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); m([^\);]+)\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + $this->uadata['eng_version'] = 'M'.$regs[3]; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^\);]+)\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = $regs[3]; + $this->uadata['eng_version'] = null; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); ([^;]+); rv:([^\);]+)\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + $this->uadata['eng_version'] = $regs[3]; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^\);]+)\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + $this->uadata['eng_version'] = null; + } + elseif (preg_match('|Mozilla/5.0 Galeon/[^\(]+ \(([^;]+); ([^;]+);[^\)]+\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + $this->uadata['eng_version'] = null; + } + elseif (preg_match('|Debian/|', $this->uastring, $regs)) { + $this->uadata['os'] = 'Debian Linux'; + $this->uadata['lang'] = null; + $this->uadata['eng_version'] = null; + } } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); rv:([^\);]+)(; [^\)]+)?\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = null; - $this->uadata['eng_version'] = $regs[3]; + elseif ($this->hasEngine('trident') || $this->hasEngine('tasman')) { + if (preg_match('/Mozilla\/[^\(]+ \(compatible *; MSP?IE ([^;]+)[^\)]*; ?((?:Mac|Win)[^;]+)[^\)]*\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = (strpos($this->uastring,'MSPIE')!==false)?null:$regs[1]; + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + } + elseif (preg_match('/Mozilla\/[^\(]+ \(compatible *; MSIE ([^;]+)[^\)]*\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $regs[1]; + $this->uadata['os'] = null; + $this->uadata['lang'] = null; + } + elseif (preg_match('/Microsoft Internet Explorer\/[^\s]+ \(((?:Mac|Win)[^;\)]+)\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = null; + } + elseif (preg_match('/Microsoft Pocket Internet Explorer\/[^\s]+/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = null; + $this->uadata['os'] = 'Windows CE'; + $this->uadata['lang'] = null; + } } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^;]+); m([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = $regs[3]; - $this->uadata['eng_version'] = 'M'.$regs[4]; - } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); m([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - $this->uadata['eng_version'] = 'M'.$regs[3]; - } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^;]+); ([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = $regs[3]; - $this->uadata['eng_version'] = null; + elseif ($this->hasEngine('khtml')) { + if (preg_match('/Mozilla\/[^\(]+ \(compatible; Konqueror\/([^;]+); ([^;]+); ([^;]+); ([^;]+); ([^\);]+)\)(?: KHTML\/([0-9a-zA-Z\.+]+))?/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = strlen($regs[6])?$regs[6]:$regs[1]; + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = $regs[5]; + } + elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; Konqueror\/([^;]+); ([^\);]+)[^\)]*\)(?: KHTML\/([0-9a-zA-Z\.+]+))?/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = strlen($regs[3])?$regs[3]:$regs[1]; + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); U; ([^;]+); ([^\);]+)\)|', $this->uastring, $regs)) { + if (strpos($regs[3], '/') !== false) { + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = null; + } + else { + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = $regs[3]; + } + $this->uadata['eng_version'] = null; + } + elseif (preg_match('|Mozilla/5.0 \(([^;]+); U; ([^\);]+)\)|', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + $this->uadata['eng_version'] = null; + } + elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; [^;]+; ([^\);]+)\)/i', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = null; + $this->uadata['eng_version'] = null; + } + elseif (preg_match('/Midori\/[^\(]+ \((?:X11; )?([^;]+); U; ([^\)]+)\) WebKit/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = null; + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); ([^;]+); rv:([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = null; - $this->uadata['eng_version'] = $regs[3]; - } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); [^;]+; ([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = null; - $this->uadata['eng_version'] = null; - } - elseif (preg_match('|Mozilla/5.0 Galeon/[^\(]+ \(([^;]+); ([^;]+);[^\)]+\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = null; - $this->uadata['eng_version'] = null; - } - elseif (preg_match('|Debian/|', $this->uastring, $regs)) { - $this->uadata['os'] = 'Debian Linux'; - $this->uadata['lang'] = null; - $this->uadata['eng_version'] = null; - } - } - elseif ($this->hasEngine('trident') || $this->hasEngine('tasman')) { - if (preg_match('/Mozilla\/[^\(]+ \(compatible *; MSP?IE ([^;]+)[^\)]*; ?((?:Mac|Win)[^;]+)[^\)]*\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = (strpos($this->uastring,'MSPIE')!==false)?null:$regs[1]; - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = null; + elseif ($this->hasEngine('presto')) { + // Opera < 8 + if (preg_match('/Opera\/[^\(]+ \((?:X11; )?([^;]+)[^\)]+\) +\[([a-z_-]+)\]/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } + elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; MSIE [^;]+; (?:X11; )?([^;\)]+)[^\)]*\) Opera [^ ]+\s+\[([a-z_-]+)\]/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } + elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+\) Opera [^ ]+\s+\[([a-z_-]+)\]/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } + // Opera mini + elseif (preg_match('/Opera\/([^\(]+) \((?:X11; )?([^;]+); Opera Mini; ([a-z_-]+); /i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = null; + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = $regs[3]; + } + elseif (preg_match('/Opera\/([^\(]+) \((?:X11; )?([^;]+); Opera Mini\/[^;]+; ([a-z_-]+); /i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $regs[1]; + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = $regs[3]; + } + // Opera >= 8 + elseif (preg_match('/Opera\/[^\(]+ \((?:X11; )?([^;]+); [^\)]+; ([a-z_-]+)\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } + elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; MSIE [^;]+; (?:X11; )?([^;]+); ([a-z_-]+)\) Opera [^ ]+/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } + elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+)\) Opera [^ ]+/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } + // Opera 9 Firefox-spoofing + elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+); rv:([^\);]+)\) Gecko\/\d+ Firefox\/[0-9a-zA-Z\.+]+ Opera [^ ]+/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } } - elseif (preg_match('/Mozilla\/[^\(]+ \(compatible *; MSIE ([^;]+)[^\)]*\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $regs[1]; - $this->uadata['os'] = null; - $this->uadata['lang'] = null; + elseif ($this->hasEngine('nscp')) { + if (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+) (?:\[([a-z_-]+)\][^\(]+)?\(X11; [^;]+; ([^\)]+)\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $regs[1]; + $this->uadata['os'] = $regs[3]; + $this->uadata['lang'] = $regs[2]; + } + elseif (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+) (?:\[([a-z_-]+)\][^\(]+)?\(([^;]+);[^\)]+\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $regs[1]; + $this->uadata['os'] = $regs[3]; + $this->uadata['lang'] = $regs[2]; + } + elseif (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+)[^\(]+\(([^;]+);[^\)]+\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $regs[1]; + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + } } - elseif (preg_match('/Microsoft Internet Explorer\/[^\s]+ \(((?:Mac|Win)[^;\)]+)\)/i', $this->uastring, $regs)) { + elseif ($this->hasEngine('gzilla')) { $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = null; - } - elseif (preg_match('/Microsoft Pocket Internet Explorer\/[^\s]+/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = null; - $this->uadata['os'] = 'Windows CE'; - $this->uadata['lang'] = null; - } - } - elseif ($this->hasEngine('khtml')) { - if (preg_match('/Mozilla\/[^\(]+ \(compatible; Konqueror\/([^;]+); ([^;]+); ([^;]+); ([^;]+); ([^\);]+)\)(?: KHTML\/([0-9a-zA-Z\.+]+))?/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = strlen($regs[6])?$regs[6]:$regs[1]; - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = $regs[5]; - } - elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; Konqueror\/([^;]+); ([^\);]+)[^\)]*\)(?: KHTML\/([0-9a-zA-Z\.+]+))?/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = strlen($regs[3])?$regs[3]:$regs[1]; - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = null; - } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); U; ([^;]+); ([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = $regs[3]; - $this->uadata['eng_version'] = null; - } - elseif (preg_match('|Mozilla/5.0 \(([^;]+); U; ([^\);]+)\)|', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - $this->uadata['eng_version'] = null; - } - elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; [^;]+; ([^\);]+)\)/i', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[1]; + $this->uadata['os'] = null; $this->uadata['lang'] = null; - $this->uadata['eng_version'] = null; - } - } - elseif ($this->hasEngine('presto')) { - // Opera < 8 - if (preg_match('/Opera\/[^\(]+ \((?:X11; )?([^;]+)[^\)]+\) +\[([a-z_-]+)\]/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - } - elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; MSIE [^;]+; (?:X11; )?([^;\)]+)[^\)]*\) Opera [^ ]+ +\[([a-z_-]+)\]/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - } - elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+\) Opera [^ ]+ \[([a-z_-]+)\]/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; } - // Opera mini - elseif (preg_match('/Opera\/([^\(]+) \((?:X11; )?([^;]+); Opera Mini; ([a-z_-]+); /i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = null; - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = $regs[3]; - } - elseif (preg_match('/Opera\/([^\(]+) \((?:X11; )?([^;]+); Opera Mini\/[^;]+; ([a-z_-]+); /i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $regs[1]; - $this->uadata['os'] = $regs[2]; - $this->uadata['lang'] = $regs[3]; - } - // Opera >= 8 - elseif (preg_match('/Opera\/[^\(]+ \((?:X11; )?([^;]+); [^\)]+; ([a-z_-]+)\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; + elseif ($this->hasEngine('links')) { + if (preg_match('/E?Links[^\(]+\([^;]+; ([^;]+)[^\)]+\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = null; + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = null; + } } - elseif (preg_match('/Mozilla\/[^\(]+ \(compatible; MSIE [^;]+; (?:X11; )?([^;]+); ([a-z_-]+)\) Opera [^ ]+/i', $this->uastring, $regs)) { + elseif ($this->hasEngine('lynx')) { $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - } - elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+)\) Opera [^ ]+/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - } - // Opera 9 Firefox-spoofing - elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+); rv:([^\);]+)\) Gecko\/\d+ Firefox\/[0-9a-zA-Z\.+]+ Opera [^ ]+/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - } - } - elseif ($this->hasEngine('nscp')) { - if (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+) (?:\[([a-z_-]+)\][^\(]+)?\(X11; [^;]+; ([^\)]+)\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $regs[1]; - $this->uadata['os'] = $regs[3]; - $this->uadata['lang'] = $regs[2]; - } - elseif (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+) (?:\[([a-z_-]+)\][^\(]+)?\(([^;]+);[^\)]+\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $regs[1]; - $this->uadata['os'] = $regs[3]; - $this->uadata['lang'] = $regs[2]; - } - elseif (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+)[^\(]+\(([^;]+);[^\)]+\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $regs[1]; - $this->uadata['os'] = $regs[2]; + $this->uadata['os'] = null; $this->uadata['lang'] = null; } - } - elseif ($this->hasEngine('gzilla')) { - $this->uadata['eng_version'] = $this->getVersion(); - $this->uadata['os'] = null; - $this->uadata['lang'] = null; - } - elseif ($this->hasEngine('links')) { - if (preg_match('/E?Links[^\(]+\([^;]+; ([^;]+)[^\)]+\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = null; - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = null; + elseif ($this->hasEngine('icestorm')) { + if (preg_match('/ICE Browser\/v?([0-9a-zA-Z\._+]+) \(Java [^;]+; ([^\)]+)\)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = str_replace('_', '.', $regs[1]); + $this->uadata['os'] = $regs[2]; + $this->uadata['lang'] = null; + } + elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+)\).* ICEbrowser\/([0-9a-zA-Z\._+]+)/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $regs[3]; + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } } - } - elseif ($this->hasEngine('icestorm')) { - if (preg_match('/ICE Browser\/v?([0-9a-zA-Z\._+]+) \(Java [^;]+; ([^\)]+)\)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = str_replace('_', '.', $regs[1]); - $this->uadata['os'] = $regs[2]; + else { + $this->uadata['eng_version'] = null; $this->uadata['lang'] = null; + if (preg_match('/AmigaOS/i', $this->uastring, $regs)) { + $this->uadata['os'] = 'AmigaOS'; + } + if (preg_match('/Commodore 64/i', $this->uastring, $regs)) { + $this->uadata['os'] = 'Commodore 64'; + } + elseif (preg_match('/curl\/[^\(]+\(([^\);]+)/i', $this->uastring, $regs)) { + $this->uadata['os'] = $regs[1]; + } + elseif (preg_match('/NCSA[_ ]Mosaic\/[^\(]+\((?:.*;)?([^\);]+)/i', $this->uastring, $regs)) { + $this->uadata['os'] = trim($regs[1]); + } + elseif (preg_match('/iCab.*(Mac[^\);]+).*?\)/i', $this->uastring, $regs)) { + $this->uadata['os'] = trim($regs[1]); + } + elseif (preg_match('/SymbianOS\/([^ ]+)/i', $this->uastring, $regs)) { + $this->uadata['os'] = 'SymbianOS '.$regs[1]; + } } - elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+)\).* ICEbrowser\/([0-9a-zA-Z\._+]+)/i', $this->uastring, $regs)) { - $this->uadata['eng_version'] = $regs[3]; - $this->uadata['os'] = $regs[1]; - $this->uadata['lang'] = $regs[2]; - } - } - else { - $this->uadata['eng_version'] = null; - $this->uadata['lang'] = null; - if (preg_match('/AmigaOS/i', $this->uastring, $regs)) { - $this->uadata['os'] = 'AmigaOS'; - } - if (preg_match('/Commodore 64/i', $this->uastring, $regs)) { - $this->uadata['os'] = 'Commodore 64'; - } - elseif (preg_match('/curl\/[^\(]+\(([^\);]+)/i', $this->uastring, $regs)) { - $this->uadata['os'] = $regs[1]; - } - elseif (preg_match('/NCSA[_ ]Mosaic\/[^\(]+\((?:.*;)?([^\);]+)/i', $this->uastring, $regs)) { - $this->uadata['os'] = trim($regs[1]); - } - elseif (preg_match('/iCab.*(Mac[^\);]+).*?\)/i', $this->uastring, $regs)) { - $this->uadata['os'] = trim($regs[1]); - } - elseif (preg_match('/SymbianOS\/([^ ]+)/i', $this->uastring, $regs)) { - $this->uadata['os'] = 'SymbianOS '.$regs[1]; - } - } - if ($this->uadata['os'] == 'Win 9x 4.90') { $this->uadata['os'] = 'Windows ME'; } - elseif ($this->uadata['os'] == 'WinNT4.0') { $this->uadata['os'] = 'Windows NT 4.0'; } - elseif ($this->uadata['os'] == 'Windows NT 5.0') { $this->uadata['os'] = 'Windows 2000'; } - elseif ($this->uadata['os'] == 'Windows NT 5.1') { $this->uadata['os'] = 'Windows XP'; } - elseif ($this->uadata['os'] == 'Windows NT 5.2') { $this->uadata['os'] = 'Windows 2003'; } - elseif ($this->uadata['os'] == 'Windows NT 5.2 x64') { $this->uadata['os'] = 'Windows 2003 (64bit)'; } - elseif ($this->uadata['os'] == 'Windows NT 6.0') { $this->uadata['os'] = 'Windows Vista'; } - elseif ($this->uadata['os'] == 'Win95') { $this->uadata['os'] = 'Windows 95'; } - elseif ($this->uadata['os'] == 'Win98') { $this->uadata['os'] = 'Windows 98'; } - elseif ($this->uadata['os'] == 'WinNT') { $this->uadata['os'] = 'Windows NT'; } - elseif ($this->uadata['os'] == 'Win32') { $this->uadata['os'] = 'Windows (32bit)'; } - elseif ($this->uadata['os'] == 'Win64') { $this->uadata['os'] = 'Windows (64bit)'; } - elseif (preg_match('/Mac ?OS ?X/i',$this->uadata['os'])) { $this->uadata['os'] = 'MacOS X'; } - elseif (preg_match('/Mac_P(ower|)PC/i',$this->uadata['os'])) { $this->uadata['os'] = 'MacOS'; } - elseif (strpos($this->uadata['os'], 'darwin') !== false) { $this->uadata['os'] = 'MacOS X'; } - elseif (strpos($this->uadata['os'], 'Darwin') !== false) { $this->uadata['os'] = 'MacOS X'; } - elseif (strpos($this->uadata['os'], 'apple') !== false) { $this->uadata['os'] = 'MacOS'; } - elseif (strpos($this->uadata['os'], 'Macintosh') !== false) { $this->uadata['os'] = 'MacOS'; } - elseif (strpos($this->uadata['os'], 'linux') !== false) { $this->uadata['os'] = 'Linux'; } - elseif (preg_match('/Symbian ?OS/i',$this->uadata['os'])) { $this->uadata['os'] = 'SymbianOS'; } + if ($this->uadata['os'] == 'Win 9x 4.90') { $this->uadata['os'] = 'Windows ME'; } + elseif ($this->uadata['os'] == 'WinNT4.0') { $this->uadata['os'] = 'Windows NT 4.0'; } + elseif ($this->uadata['os'] == 'Windows NT 5.0') { $this->uadata['os'] = 'Windows 2000'; } + elseif ($this->uadata['os'] == 'Windows NT 5.1') { $this->uadata['os'] = 'Windows XP'; } + elseif ($this->uadata['os'] == 'Windows NT 5.2') { $this->uadata['os'] = 'Windows 2003'; } + elseif ($this->uadata['os'] == 'Windows NT 5.2 x64') { $this->uadata['os'] = 'Windows 2003 (64bit)'; } + elseif ($this->uadata['os'] == 'Windows NT 6.0') { $this->uadata['os'] = 'Windows Vista'; } + elseif ($this->uadata['os'] == 'Windows NT 6.1') { $this->uadata['os'] = 'Windows 7'; } + elseif ($this->uadata['os'] == 'Win95') { $this->uadata['os'] = 'Windows 95'; } + elseif ($this->uadata['os'] == 'Win98') { $this->uadata['os'] = 'Windows 98'; } + elseif ($this->uadata['os'] == 'WinNT') { $this->uadata['os'] = 'Windows NT'; } + elseif ($this->uadata['os'] == 'Win32') { $this->uadata['os'] = 'Windows (32bit)'; } + elseif ($this->uadata['os'] == 'Win64') { $this->uadata['os'] = 'Windows (64bit)'; } + elseif (preg_match('/Mac ?OS ?X/i',$this->uadata['os'])) { $this->uadata['os'] = 'MacOS X'; } + elseif (preg_match('/Mac_P(ower|)PC/i',$this->uadata['os'])) { $this->uadata['os'] = 'MacOS'; } + elseif (strpos($this->uadata['os'], 'darwin') !== false) { $this->uadata['os'] = 'MacOS X'; } + elseif (strpos($this->uadata['os'], 'Darwin') !== false) { $this->uadata['os'] = 'MacOS X'; } + elseif (strpos($this->uadata['os'], 'apple') !== false) { $this->uadata['os'] = 'MacOS'; } + elseif (strpos($this->uadata['os'], 'Macintosh') !== false) { $this->uadata['os'] = 'MacOS'; } + elseif (strpos($this->uadata['os'], 'linux') !== false) { $this->uadata['os'] = 'Linux'; } + elseif (preg_match('/SymbianOS[\/ ]([0-9a-zA-Z\._+]+)/i', $this->uastring, $regs)) { $this->uadata['os'] = 'SymbianOS '.$regs[1]; } + elseif (preg_match('/Symbian ?OS/i',$this->uadata['os'])) { $this->uadata['os'] = 'SymbianOS'; } - if (strpos($this->uadata['os'], 'Win') !== false) { $this->uadata['platform'] = 'Windows'; } - elseif (strpos($this->uadata['os'], 'Mac') !== false) { $this->uadata['platform'] = 'Macintosh'; } - elseif (strpos($this->uadata['os'], 'Linux') !== false) { $this->uadata['platform'] = 'Linux'; } - elseif (strpos($this->uadata['os'], 'Solaris') !== false) { $this->uadata['platform'] = 'Solaris'; } - elseif (strpos($this->uadata['os'], 'SunOS') !== false) { $this->uadata['platform'] = 'Solaris'; } - elseif (strpos($this->uadata['os'], 'BeOS') !== false) { $this->uadata['platform'] = 'BeOS'; } - elseif (strpos($this->uadata['os'], 'FreeBSD') !== false) { $this->uadata['platform'] = 'FreeBSD'; } - elseif (strpos($this->uadata['os'], 'OpenBSD') !== false) { $this->uadata['platform'] = 'OpenBSD'; } - elseif (strpos($this->uadata['os'], 'NetBSD') !== false) { $this->uadata['platform'] = 'NetBSD'; } - elseif (strpos($this->uadata['os'], 'AIX') !== false) { $this->uadata['platform'] = 'AIX'; } - elseif (strpos($this->uadata['os'], 'IRIX') !== false) { $this->uadata['platform'] = 'IRIX'; } - elseif (strpos($this->uadata['os'], 'HP-UX') !== false) { $this->uadata['platform'] = 'HP-UX'; } - elseif (strpos($this->uadata['os'], 'AmigaOS') !== false) { $this->uadata['platform'] = 'Amiga'; } - elseif (strpos($this->uadata['os'], 'Commodore 64') !== false) { $this->uadata['platform'] = 'C64'; } - elseif (strpos($this->uadata['os'], 'OpenVMS') !== false) { $this->uadata['platform'] = 'OpenVMS'; } - elseif (strpos($this->uadata['os'], 'Warp') !== false) { $this->uadata['platform'] = 'OS/2'; } - elseif (strpos($this->uadata['os'], 'SymbianOS') !== false) { $this->uadata['platform'] = 'SymbianOS'; } - elseif (strpos($this->uadata['os'], 'CYGWIN') !== false) { $this->uadata['platform'] = 'Windows'; } - else { $this->uadata['platform'] = $this->uadata['os']; } + if (strpos($this->uadata['os'], 'Win') !== false) { $this->uadata['platform'] = 'Windows'; } + elseif (strpos($this->uadata['os'], 'Mac') !== false) { $this->uadata['platform'] = 'Macintosh'; } + elseif (strpos($this->uadata['os'], 'Linux') !== false) { $this->uadata['platform'] = 'Linux'; } + elseif (strpos($this->uadata['os'], 'Solaris') !== false) { $this->uadata['platform'] = 'Solaris'; } + elseif (strpos($this->uadata['os'], 'SunOS') !== false) { $this->uadata['platform'] = 'Solaris'; } + elseif (strpos($this->uadata['os'], 'BeOS') !== false) { $this->uadata['platform'] = 'BeOS'; } + elseif (strpos($this->uadata['os'], 'BePC') !== false) { $this->uadata['platform'] = 'BeOS'; } + elseif (strpos($this->uadata['os'], 'FreeBSD') !== false) { $this->uadata['platform'] = 'FreeBSD'; } + elseif (strpos($this->uadata['os'], 'OpenBSD') !== false) { $this->uadata['platform'] = 'OpenBSD'; } + elseif (strpos($this->uadata['os'], 'NetBSD') !== false) { $this->uadata['platform'] = 'NetBSD'; } + elseif (strpos($this->uadata['os'], 'AIX') !== false) { $this->uadata['platform'] = 'AIX'; } + elseif (strpos($this->uadata['os'], 'IRIX') !== false) { $this->uadata['platform'] = 'IRIX'; } + elseif (strpos($this->uadata['os'], 'HP-UX') !== false) { $this->uadata['platform'] = 'HP-UX'; } + elseif (strpos($this->uadata['os'], 'AmigaOS') !== false) { $this->uadata['platform'] = 'Amiga'; } + elseif (strpos($this->uadata['os'], 'webOS') !== false) { $this->uadata['platform'] = 'webOS'; } + elseif (strpos($this->uadata['os'], 'Commodore 64') !== false) { $this->uadata['platform'] = 'C64'; } + elseif (strpos($this->uadata['os'], 'OpenVMS') !== false) { $this->uadata['platform'] = 'OpenVMS'; } + elseif (strpos($this->uadata['os'], 'Warp') !== false) { $this->uadata['platform'] = 'OS/2'; } + elseif (strpos($this->uadata['os'], 'OS/2') !== false) { $this->uadata['platform'] = 'OS/2'; } + elseif (strpos($this->uadata['os'], 'SymbianOS') !== false) { $this->uadata['platform'] = 'SymbianOS'; } + elseif (strpos($this->uadata['os'], 'Gameboy') !== false) { $this->uadata['platform'] = 'Nintendo'; } + elseif (strpos($this->uadata['os'], 'Wii') !== false) { $this->uadata['platform'] = 'Nintendo'; } + elseif (strpos($this->uadata['os'], 'Nintendo') !== false) { $this->uadata['platform'] = 'Nintendo'; } + elseif (strpos($this->uadata['os'], 'J2ME') !== false) { $this->uadata['platform'] = 'Java'; } + elseif (strpos($this->uadata['os'], 'CYGWIN') !== false) { $this->uadata['platform'] = 'Windows'; } + elseif (strpos($this->uadata['os'], 'mingw') !== false) { $this->uadata['platform'] = 'Windows'; } + else { $this->uadata['platform'] = $this->uadata['os']; } - $this->uadata['lang'] = str_replace('_', '-', $this->uadata['lang']); + $this->uadata['lang'] = str_replace('_', '-', $this->uadata['lang']); + } } return $this->uadata['os']; } diff --git a/testbed/ua_list_raw.txt b/testbed/ua_list_raw.txt index e698c99..443fbd3 100755 --- a/testbed/ua_list_raw.txt +++ b/testbed/ua_list_raw.txt @@ -32,8 +32,16 @@ Mozilla/5.0 (Gameboy Color; U; Gameboy OS 2005; de-DE) Gecko/20041107 Firefox/1. Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.7.5) Gecko/20041111 Firefox/1.0 Mozilla/5.0 (X11; Linux i686; rv:1.7.5) Gecko/20041108 Firefox/1.0 Mozilla/5.0 (X11; U; Linux i686; chrome://navigator/locale/navigator.properties; rv:1.7.5) Gecko/20041107 Firefox/1.0 +Mozilla/5.0 (Windows; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090402 Firefox/3.6a1pre Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.5) Gecko/20041217 Firefox/1.0.4 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9a6pre) Gecko/20070702 Minefield/3.0a6pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.22pre) Gecko/20090415 BonEcho/2.0.0.22pre (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.15pre) Gecko/2009090911 GranParadiso/3.0.15pre (.NET CLR 3.5.30729) +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.4pre) Gecko/20090923 Shiretoko/3.5.4pre +Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2a2pre) Gecko/20090917 Namoroka/3.6a2pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a9pre) Gecko/2007110108 prism/0.8 +Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.4pre) Gecko/20090928 Lightning/1.0pre Shredder/3.0pre +Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.19) Gecko/20081209 Thunderbird/2.0.0.19 Mnenhy/0.7.5.0 Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.8b2) Gecko/20050324 SeaMonkey/1.0a Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9a6pre) Gecko/20070628 Firefox/2.0.0.4 SeaMonkey/2.0a1pre PrivatelyFakedUA/0.0 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20021109 Chimera/0.6+ @@ -41,8 +49,13 @@ Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7b) Gecko/20040302 C Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en; rv:1.8.1.5) Gecko/20070614 Camino/1.6 (like Firefox/2.0.0.4) Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031016 K-Meleon/0.8.1 Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.13) Gecko/20050610 K-Meleon/0.9 +Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.0.11) Gecko/2009061613 Songbird/1.3.0a (20090624013030) Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20020730 AOL/7.0 Mozilla/5.0 (Windows; U; Windows CE 4.21; rv:1.8b4) Gecko/20050720 Minimo/0.007 +Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2a1pre) Gecko/20090317 Fennec/1.0b1 +Mozilla/5.0 (X11; U; Linux armv7l; en-US; rv:1.9.2b1pre) Gecko/20090924 Fennec/1.0b4pre +Mozilla/5.0 (BeOS; U; Haiku BePC; en-US; rv:1.8.1.22pre) Gecko/20090908 BeZillaBrowser/2.0.0.22pre +Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.1.21) Gecko/20090410 PmWFx/2.0.0.21 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.7) Gecko/20061031 Firefox/1.5.0.7 Flock/0.7.7 Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Iceweasel/2.0 (Debian-2.0+dfsg-1) Mozilla/5.0 (X11; U; Linux armv6l; en-GB; rv:1.9a6pre) Gecko/20071128 Firefox/3.0a1 Tablet browser 0.2.2 RX-34+RX-44_2008SE_2.2007.48-9 @@ -106,7 +119,11 @@ Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/85 (KHTML, like Geck Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/125.4 (KHTML, like Gecko, Safari) OmniWeb/v563.51 Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/418 (KHTML, like Gecko) Shiira/1.2.2 Safari/125 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13 +Mozilla/5.0 (SymbianOS/9.4; U; Series60/5.0 Nokia5800d-1/21.0.025; Profile/MIDP-2.1 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 Mozilla/5.0 (SymbianOS/9.1; U; en-us) AppleWebKit/413 (KHTML, like Gecko) Safari/413 +Mozilla/5.0 (webOS/1.1; U; en-US) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0 +Midori/0.1.9 (X11; Linux i686; U; en-us) WebKit/532+ +Mozilla/5.0 (X11; U; Linux x86_64; cs-cz) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ Epiphany/2.27.91 SUSE/2.27.91-1.2 Opera/5.12 (Windows 2000; U) [de] Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.05 [ja] Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i586) Opera 7.23 [en] @@ -116,9 +133,11 @@ Mozilla/5.0 (Windows NT 5.0; U; en) Opera 8.0 Mozilla/4.0 (compatible; MSIE 6.0; Mac_PowerPC Mac OS X; en) Opera 8.0 Opera/8.00 (Windows NT 5.1; U; en) Opera/8.01 (X11; Linux i686; U; de) +Opera/9.30 (Nintendo Wii; U; ; 3642; en) Mozilla/5.0 (X11; Linux i686; U; en) Opera 8.01 Mozilla/5.0 (Windows NT 5.2; U; cs; rv:1.8.0) Gecko/20060728 Firefox/1.5.0 Opera 9.20 Mozilla/4.0 (compatible; MSIE 5.0; Mac_PowerPC) Opera 6.0 [de] +Mozilla/5.0 (X11; Linux i686; U) Opera 7.54 [de] Mozilla/4.1 (compatible; MSIE 5.0; Symbian OS; Nokia 6600;423) Opera 6.10 [de] Mozilla/4.0 (compatible; MSIE 6.0; Symbian OS; Nokia 6630/4.03.38; 6937) Opera 8.50 [es] Mozilla/4.0 (compatible; MSIE 6.0; ; Linux armv5tejl; U) Opera 8.02 [en_US] Maemo browser 0.4.31 N770/SU-18 @@ -126,6 +145,7 @@ Mozilla/4.0 (compatible; MSIE 6.0; Nitro) Opera 8.50 [ja] Opera/9.00 (Wii; U; ; 1038-58; Wii Shop Channel/1.0; en) Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr) Opera/2.0.3920 (J2ME/MIDP; Opera Mini; en; U; ssr) +Opera/9.60 (J2ME/MIDP; Opera Mini/4.2.14881Mod.by.Handler/960; U; en) Presto/2.2.0 Mozilla/4.75 [de] (Win98; U) Mozilla/1.6 [en] (Windows NT 5.1; U) Mozilla/1.0 (CP/M; 8-bit .NET) @@ -143,10 +163,11 @@ Links (0.92; Linux 2.2.14-5.0 i586) Links (2.1pre14; FreeBSD 4.9-RELEASE i386; x) Links (2.1pre15; CYGWIN_NT-5.0 1.3.1(0.38/3/2) i686; x) Links (1.00pre12; Linux 2.6.10-grsec i686; 139x54) (Debian pkg 0.99+1.00pre12-1) +Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6g Mozilla/5.0 (compatible; iCab 2.9.8; Macintosh; U, PPC; Mac OS X) iCab/2.9.8 (Macintosh; U; PPC) Mozilla/4.5 (compatible; iCab 2.9.8; Macintosh; U; PPC) -Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6g +Evolution/2.26; Evolution-RSS/0.1.2 NCSA_Mosaic/2.0 (Windows 3.1) NCSA_Mosaic/1.0 (X11; FreeBSD 1.2.0 i286) via proxy gateway CERN-HTTPD/1.0 NCSA Mosaic/2-7-6 (X11;OpenVMS V7.2 VAX) @@ -178,6 +199,7 @@ Java/1.4.1_02 LWP::Simple/5.79 PHP/4.2.3 w3m/0.5.1 +BlackBerry8120/4.3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/135 SonyEricssonK700i/R2AE SEMC-Browser/4.0.3 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Link/6.2.3.15.0 (Google WAP Proxy/1.0) SonyEricssonT610/R201 Profile/MIDP-1.0 Configuration/CLDC-1.0 (Google WAP Proxy/1.0) Nokia3510i/1.0 (04.01) Profile/MIDP-1.0 Configuration/CLDC-1.0 UP.Link/5.1.1.5a (Google WAP Proxy/1.0) @@ -185,14 +207,15 @@ Nokia7650/1.0 SymbianOS/6.1 Series60/0.9 Profile/MIDP-1.0 Configuration/CLDC-1.0 Nokia6630/1.0 (3.45.113) SymbianOS/8.0 Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (Google WAP Proxy/1.0) SIE-C60/12 UP.Browser/6.1.0.5.c.6 (GUI) MMP/1.0 (Google WAP Proxy/1.0) OPWV-SDK/62 UP.Browser/6.2.2.1.208 (GUI) MMP/2.0 +Vodafone/1.0/LG-HB620T/V10a Browser/Obigo-Q05A/3.12 MMS/LG-MMS-V1.0/1.2 Java/ASVM/1.1 Profile/MIDP-2.1 Configuration/CLDC-1.1 Mozilla/4.0 (MobilePhone MM-8300/US/1.0) NetFront/3.1 MMP/2.0 -Mozilla/4.0 (MobilePhone SCP-5500/US/1.0) NetFront/3.0 MMP/2.0 FAKE (compatible; Googlebot/2.1; +http://www.google.com/bot.html) Samsung-SPHA920 AU-MIC-A920/2.0 MMP/2.0 MOT-E398/0E.20.59R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.0 Mozilla/4.0 (compatible; 240x320) IXI/Q05A2.4 Mozilla/4.0 (compatible; AvantGo 6.0; FreeBSD) curl/7.7.2 (powerpc-apple-darwin6.0) libcurl 7.7.2 (OpenSSL 0.9.6b) curl/7.10.6 (i386-redhat-linux-gnu) libcurl/7.10.6 OpenSSL/0.9.7a ipv6 zlib/1.2.0.7 +curl/7.19.3 (i586-pc-mingw32msvc) libcurl/7.19.3 zlib/1.2.3 amaya/8.3 libwww/5.4.0 Python-urllib/1.15 w3m/0.3.1 @@ -208,16 +231,42 @@ Anonymisiert durch Steganos Internet Anonym Pro 6 Mozilla/4.0 (compatible; BorderManager 3.0) Mozilla/5.0 WebWasher 3.4 Mozilla/5.0 (SaferSurf) Firefox 1.5 +# feed readers: +Akregator/1.5.1; syndication SUSE +Bloglines/3.1 (http://www.bloglines.com; 1 subscriber) +Liferea/1.7.1-svn (Linux; en_US.UTF-8; http://liferea.sf.net/) +LiveJournal.com (webmaster@livejournal.com; for http://www.livejournal.com/users/kairo_at/; 1 readers) +Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1 subscribers; feed-id=1257454742140558029) +FeedDemon/3.0 (http://www.feeddemon.com/; Microsoft Windows XP) +FeedHub FeedDiscovery/1.0 (http://www.feedhub.com) +FeedHub FeedFetcher/1.0 (http://www.feedhub.com) +FeedHub MetaDataFetcher/1.0 (http://www.feedhub.com) +Feed43 Proxy/1.0 (www.feed43.com) Feed4 +Mozilla/5.0 NewsFox/1.0.5.2 +NetNewsWire/3.2b28 (Mac OS X; http://www.newsgator.com/Individuals/NetNewsWire/) +newsbeuter/0.9.1 (Linux 2.6.26-2-686; i686; http://synflood.at/newsbeuter.html) libcurl/7.18.2 GnuTLS/2.4.2 zlib/1.2.3.3 libidn/1.8 +NewsGator/2.0 Bot (http://www.newsgator.com) +NewsGatorOnline/2.0 (http://www.newsgator.com; 2 subscribers) +OutlookConnector/1.9 (TmstmpExt) +rdfbot/1.0 (rdfbotsupport AT rediffmailpro DOT com) +RssBandit/1.8.0.870 (.NET CLR 2.0.50727.3082; WinNT 5.1.2600 Service Pack 3; http://www.rssbandit.org) +RSSOwl/2.0.0.200903042053 (Windows; U; en) +The MultiZilla Feed Reader/Viewer +UniversalFeedParser/4.2-pre-293-svn +http://feedparser.org/ +WordPress/2.7 +GreatNews/1.0 # search bots: W3C_Validator/1.305.2.12 libwww-perl/5.64 Scooter/3.3 Spinne/2.0 med_AH Vagabondo/2.0 MT (webagent at wise-guys dot nl) TurnitinBot/1.5 ( ">http://www.turnitin.com/robot/crawlerinfo.html) +TurnitinBot/2.1 (http://www.turnitin.com/robot/crawlerinfo.html) FAST-WebCrawler/3.x Multimedia (mm dash crawler at fast dot no) Firefly/1.0 (compatible; Mozilla 4.0; MSIE 5.5) Googlebot/2.1 (+ ">http://www.googlebot.com/bot.html) Googlebot (+http://www.google.com/bot.html) +Googlebot-Image/1.0 Scrubby/2.2 ( ">http://www.scrubtheweb.com/) psbot/0.1 (+ ">http://www.picsearch.com/bot.html) NutchCVS/0.06-dev (Nutch; http://www.nutch.org/docs/en/bot.html; nutch-agent@lists.sourceforge.net) @@ -235,11 +284,25 @@ msnbot/1.0 (+http://search.msn.com/msnbot.htm) Gigabot/2.0 Mediapartners-Google/2.1 Schmozilla/v9.14 Platinum +Austronaut-URL-Checker/0.1 by ThScho OmniExplorer_Bot/1.07 (+http://www.omni-explorer.com) Internet Categorizer findlinks/0.926 (+http://wortschatz.uni-leipzig.de/findlinks/) DataCha0s/2.0 Amfibibot/0.07 (Amfibi Robot; http://www.amfibi.com; agent@amfibi.com) aipbot/1.0 (aipbot; http://www.aipbot.com; aipbot@aipbot.com) +CoralWebPrx/0.1.20 (See http://coralcdn.org/) +DoCoMo/1.0/N505i/c20/TB/W20H10 (compatible; RFCrawler-Mobile/1.0; +http://www.rfms.jp/crawler.html) +ichiro/3.0 (http://help.goo.ne.jp/door/crawler.html) +Jyxobot/1 +OOZBOT/0.20 ( http://www.setooz.com/oozbot.html ; agentname at setooz dot_com ) +Ocelli/1.4 (http://www.globalspec.com/Ocelli) +SeznamBot/2.0 (+http://fulltext.sblog.cz/robot/) +Sogou Video /3.0(+http://www.sogou.com/docs/help/webmasters.htm#07) +Snapbot/1.0 (Snap Shots, +http://www.snap.com) +Yandex/1.01.001 (compatible; Win16; I) +Yeti/1.0 (NHN Corp.; http://help.naver.com/robots/) +Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:Spinn3r (Spinn3r 3.1); http://spinn3r.com/robot) Gecko/20021130 +Mozilla/5.0 (compatible; Butterfly/1.0; +http://labs.topsy.com/butterfly.html) Gecko/2009032608 Firefox/3.0.8 Mozilla/4.0 compatible ZyBorg/1.0 Daily Refresh Beta-d03 (wn.zyborg@looksmart.net; Mozilla/2.0 (compatible; Ask Jeeves/Teoma) Mozilla/5.0 (Slurp/si; slurp@inktomi.com; ">http://www.inktomi.com/slurp.html) @@ -259,11 +322,15 @@ Mozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html) Mozilla/4.0 (compatible; Arachmo) Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.) Mozilla/5.0 (compatible; heritrix/1.12.0 +http://www.accelobot.com) +Mozilla/5.0 (compatible; heritrix1-10-0;+http://www.webintegration.at) Mozilla/2.0 compatible; Check&Get 1.14 (Windows NT) Mozilla/3.0 (compatible; WebCapture 2.0; Auto; Windows) Mozilla/3.0 (compatible; WebMon 1.0.11; Windows XP) Mozilla/4.0 (compatible; Powermarks/3.5; Windows 95/98/2000/NT) Mozilla/3.0 (compatible; Linkman) +Mozilla/5.0 (compatible; arste.info_bot/1.1; +http://www.arste.info) +Mozilla/5.0 (compatible; askpeter_bot/5.1; +http://www.askpeter.info) +Mozilla/5.0 (compatible; Feedtrace-bot/0.2; bot@feedtrace.com) Mozilla/5.0 (Sage) Mozilla/5.0 (compatible; http://www.livedir.net) Mozilla/4.0 (WebClipping.com) @@ -271,6 +338,22 @@ Mozilla/5.0 (compatible; OsO; http://oso.octopodus.com/abot.html) Mozilla/5.0 (compatible; Yoono; http://www.yoono.com/) Mozilla/3.0 (compatible; Indy Library) Mozilla/5.0 (compatible; Google Desktop) +Mozilla/5.0 (compatible; iCcrawler - iCjobs Stellenangebote Jobs; http://www.icjobs.de) +Mozilla/5.0 (compatible; KaloogaBot; http://www.kalooga.com/info.html?page=crawler) +Mozilla/5.0 (compatible; SecretSerachEngineLabs.com-SBSearch/0.9; http://www.secretsearchenginelabs.com/secret-web-crawler.php) +Mozilla/5.0 (compatible; ScoutJet; +http://www.scoutjet.com/) +Mozilla/5.0 (compatible; seexie.com_bot/4.1; +http://www.seexie.com) +Mozilla/5.0 (compatible; Seznam screenshot-generator 2.0; +http://fulltext.sblog.cz/screenshot/) +Mozilla/5.0 (compatible; TopBlogsInfo/2.0; +topblogsinfo@gmail.com) +Mozilla/5.0 (compatible; Yahoo! SearchMonkey 1.0; http://developer.yahoo.com/searchmonkey/useragent) +Mozilla/5.0 (compatible;archive.org_bot/1.7.0; Archive-It; +http://www.archive-it.org) +Mozilla/5.0 (compatible;picmole/1.0 +http://www.picmole.com) +Mozilla/5.0 (X11; compatible; crawler@newstin.com; HTTPClient 3.1) +Mozilla/4.0 (MobilePhone SCP-5500/US/1.0) NetFront/3.0 MMP/2.0 FAKE (compatible; Googlebot/2.1; +http://www.google.com/bot.html) +Nokia6681/1.0 (2.30.0) Series60/2.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 (compatible; baiduspider; +http://www.baidu.com/search/spider.html) +Nokia3650/1.0 SymbianOS/6.1 Series60/1.2 Profile/MIDP-1.0 Configuration/CLDC-1.0/ (compatible; YodaoBot-Mobile/1.0; http://www.youdao.com/help/webmaster/spider/; ) +NokiaN70/. FASTMobileCrawl/6.6 Profile/MIDP-2.0 Configuration/CLDC-1.1 +SAMSUNG-SGH-E250/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 UP.Browser/6.2.3.3.c.1.101 (GUI) MMP/2.0 (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html) PingALink Monitoring Services 1.0 (http://www.pingalink.com) IlTrovatore-Setaccio (+ ">http://www.iltrovatore.it) Mercator-2.0 @@ -282,19 +365,39 @@ NASA Search 1.0 search.ch V1.4.2 (spiderman@search.ch; WebFilter Robot 1.0 WWWeasel Robot v1.00 (http://wwweasel.de) +Advista Crawler 2.02 +Yahoo Pipes 1.0 +DevCore Search Engine 0.0.4 http://devcore.eu.org/search/ +Firebat 2.9.1 (http://lms.virtual-presence.org) +GiNDev/Nutch-0.9 (Germanistik im Netz; http://www.germanistik-im-netz.de/gin-www-search/gin-www-search-about.html; D dot Eichner at ub dot uni-frankfurt dot de) +Nutch/Nutch-0.8.1 (Nutch; Nutch; Nutch) +Iceweasel2.0.0.16/Nutch-1.0 (Webbrowser; http://iceweasel.com; info@iceweasel.com) +nu_tch-princeton/Nu_tch-1.0-dev (princeton crawler for cass project; http://www.cs.princeton.edu/cass/; zhewang a_t cs ddot princeton dot edu) +larbin_2.6.3 larbin2.6.3@unspecified.mail 2.0_AC-Plug - http://www.iOpus.com Openfind data gatherer, Openbot/3.0+(robot-response@openfind.com.tw;+ MSRBOT (http://research.microsoft.com/research/sv/msrbot) +MLBot (www.metadatalabs.com/mlbot) ICCrawler - ICjobs (http://www.icjobs.de/bot.htm) +ICC-Crawler/2.0 (Mozilla-compatible; ; http://kc.nict.go.jp/project1/crawl.html) Baiduspider+(+http://www.baidu.com/search/spider.htm) +BaiduImagespider+(+http://www.baidu.jp/spider/) BaiDuSpider +Sosospider+(+http://help.soso.com/webspider.htm) +Sosoimagespider+(+http://help.soso.com/soso-image-spider.htm) +Cityreview Robot (+http://www.cityreview.org/crawler/) +Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/) LinkWalker +yacybot (amd64 Linux 2.6.28-15-generic; java 1.6.0_16; Europe/de) http://yacy.net/bot.html +webcrawler (compatible; heritrix/1.14.3 ++http://www.onb.ac.at/about/webarchivierung.htm) Internet Explorer 5.5 Mozilla/4.0 (compatible; B-l-i-t-z-B-O-T) +LargeSmall Crawler (LargeSmall; http://onespot.com; info@onespot.com) B l i t z B O T @ t r i c u s . n e t (Mozilla compatible) sitecheck.internetseer.com (For more info see: ">http://sitecheck.internetseer.com) http://www.almaden.ibm.com/cs/crawler   [c01] ia_archiver +ia_archiver (+http://www.alexa.com/site/help/webmasters; crawler@alexa.com) Nutch NutchCVS Mozilla -- 2.43.0