Пример #1
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     $os_version = null;
     if (strpos($ua, '(Win98;') > -1) {
         $data = DataSet::get('Win98');
         $os_version = '98';
     } elseif (strpos($ua, 'Macintosh; U; PPC;') > -1 || strpos($ua, 'Mac_PowerPC') > -1) {
         $data = DataSet::get('MacOS');
         if (preg_match('/rv:(\\d+\\.\\d+\\.\\d+)/', $ua, $matches) === 1) {
             $os_version = $matches[1];
         }
     } elseif (strpos($ua, 'X11; FreeBSD ') > -1) {
         $data = DataSet::get('BSD');
         if (preg_match('/FreeBSD ([^;\\)]+);/', $ua, $matches) === 1) {
             $os_version = $matches[1];
         }
     } elseif (strpos($ua, 'X11; CrOS ') > -1) {
         $data = DataSet::get('ChromeOS');
         if (preg_match('/CrOS ([^\\)]+)\\)/', $ua, $matches) === 1) {
             $os_version = $matches[1];
         }
     }
     if ($data) {
         static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
         static::updateOs($result, $data[DataSet::DATASET_KEY_NAME]);
         if ($os_version) {
             static::updateOsVersion($result, $os_version);
         }
         return true;
     }
     return false;
 }
Пример #2
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'jig browser') !== false) {
         static::updateMap($result, DataSet::get('jig'));
         if (preg_match('/jig browser[^;]+; ([^\\);]+)/Du', $ua, $matches)) {
             static::updateVersion($result, $matches[1]);
         }
         return true;
     } elseif (strpos($ua, 'emobile/') !== false || strpos($ua, 'OpenBrowser') !== false || strpos($ua, 'Browser/Obigo-Browser') !== false) {
         static::updateMap($result, DataSet::get('emobile'));
         return true;
     } elseif (strpos($ua, 'SymbianOS') !== false) {
         static::updateMap($result, DataSet::get('SymbianOS'));
         return true;
     } elseif (strpos($ua, 'Hatena-Mobile-Gateway/') !== false) {
         $data = DataSet::get('MobileTranscoder');
         static::updateMap($result, $data);
         static::updateVersion($result, 'Hatena');
         return true;
     } elseif (strpos($ua, 'livedoor-Mobile-Gateway/') !== false) {
         $data = DataSet::get('MobileTranscoder');
         static::updateMap($result, $data);
         static::updateVersion($result, 'livedoor');
         return true;
     }
     return false;
 }
Пример #3
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     $version = null;
     if (strpos($ua, 'PSP (PlayStation Portable);') !== false) {
         $data = DataSet::get('PSP');
         if (preg_match('/PSP \\(PlayStation Portable\\); ([.0-9]+)\\)/', $ua, $matches) === 1) {
             $version = $matches[1];
         }
     } elseif (strpos($ua, 'PlayStation Vita') !== false) {
         $data = DataSet::get('PSVita');
         if (preg_match('/PlayStation Vita ([.0-9]+)\\)/', $ua, $matches) === 1) {
             $version = $matches[1];
         }
     } elseif (strpos($ua, 'PLAYSTATION 3 ') !== false || strpos($ua, 'PLAYSTATION 3;') !== false) {
         $data = DataSet::get('PS3');
         if (preg_match('/PLAYSTATION 3;? ([.0-9]+)\\)/', $ua, $matches) === 1) {
             $version = $matches[1];
         }
     } elseif (strpos($ua, 'PlayStation 4 ') !== false) {
         $data = DataSet::get('PS4');
         if (preg_match('/PlayStation 4 ([.0-9]+)\\)/', $ua, $matches) === 1) {
             $version = $matches[1];
         }
     }
     if (is_null($data)) {
         return false;
     }
     static::updateMap($result, $data);
     if ($version) {
         static::updateOsVersion($result, $version);
     }
     return true;
 }
Пример #4
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Safari/') === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     $epos = strpos($ua, 'Edge');
     if ($epos > -1) {
         if (preg_match('#Edge/([.0-9]+)#', $ua, $matches)) {
             $version = $matches[1];
             static::updateMap($result, DataSet::get('Edge'));
             static::updateVersion($result, $version);
             return true;
         }
     }
     $fpos = strpos($ua, 'FxiOS');
     if ($fpos > -1) {
         if (preg_match('/FxiOS\\/([.0-9]+)/', $ua, $matches)) {
             $version = $matches[1];
             static::updateMap($result, DataSet::get('Firefox'));
             static::updateVersion($result, $version);
             return true;
         }
     }
     $cpos = strpos($ua, 'Chrome');
     if ($cpos === false) {
         $cpos = strpos($ua, 'CrMo');
     }
     if ($cpos === false) {
         $cpos = strpos($ua, 'CriOS');
     }
     if ($cpos !== false) {
         $opos = strpos($ua, 'OPR');
         if ($opos !== false) {
             if (preg_match('/OPR\\/([.0-9]+)/', $ua, $matches)) {
                 $version = $matches[1];
                 static::updateMap($result, DataSet::get('Opera'));
                 static::updateVersion($result, $version);
                 return true;
             }
         }
     }
     if (strpos($ua, 'Chrome') !== false || strpos($ua, 'CrMo') !== false || strpos($ua, 'CriOS') !== false) {
         if (preg_match('/(?:Chrome|CrMo|CriOS)\\/([.0-9]+)/uD', $ua, $matches)) {
             $version = $matches[1];
         }
         static::updateMap($result, DataSet::get('Chrome'));
         static::updateVersion($result, $version);
         return true;
     }
     if (preg_match('/Version\\/([.0-9]+)/uD', $ua, $matches)) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('Safari'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #5
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Windows') === false) {
         return false;
     }
     // Xbox Series
     if (strpos($ua, 'Xbox') !== false) {
         if (strpos($ua, 'Xbox; Xbox One)') !== false) {
             $data = DataSet::get('XboxOne');
         } else {
             $data = DataSet::get('Xbox360');
         }
         static::updateMap($result, $data);
         return true;
     }
     $data = DataSet::get('Win');
     if (preg_match('/Windows ([ .a-zA-Z0-9]+)[;\\)]/', $ua, $matches) === 0) {
         static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
         static::updateOs($result, $data[DataSet::DATASET_KEY_NAME]);
         return true;
     }
     $version = $matches[1];
     if ($version === 'NT 10.0') {
         $data = DataSet::get('Win10');
     } elseif ($version === 'NT 6.3') {
         $data = DataSet::get('Win8.1');
     } elseif ($version === 'NT 6.2') {
         $data = DataSet::get('Win8');
     } elseif ($version === 'NT 6.1') {
         $data = DataSet::get('Win7');
     } elseif ($version === 'NT 6.0') {
         $data = DataSet::get('WinVista');
     } elseif ($version === 'NT 5.1') {
         $data = DataSet::get('WinXP');
     } elseif (strpos($version, 'Phone') === 0) {
         $data = DataSet::get('WinPhone');
         if (preg_match('/Phone(?: OS)? ([.0-9]+)/', $ua, $matches) === 1) {
             $version = $matches[1];
         }
     } elseif ($version === 'NT 5.0') {
         $data = DataSet::get('Win2000');
     } elseif ($version === 'NT 4.0') {
         $data = DataSet::get('WinNT4');
     } elseif ($version === '98') {
         $data = DataSet::get('Win98');
     } elseif ($version === '95') {
         $data = DataSet::get('Win95');
     } elseif ($version === 'CE') {
         $data = DataSet::get('WinCE');
     }
     static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
     static::updateOs($result, $data[DataSet::DATASET_KEY_NAME]);
     static::updateOsVersion($result, $version);
     return true;
 }
Пример #6
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     if (strpos($ua, 'InettvBrowser/') !== false) {
         $data = DataSet::get('DigitalTV');
     }
     if (is_null($data)) {
         return false;
     }
     static::updateMap($result, $data);
     return true;
 }
Пример #7
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'KDDI-') === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match(self::VERSION_PATTERN, $ua, $matches)) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('au'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #8
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Firefox/') === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match('/Firefox\\/([.0-9]+)/', $ua, $matches) === 1) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('Firefox'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #9
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     if (preg_match('/rss(reader|bar|[-_ \\/;\\(\\)]|[ +]*\\/)/Dui', $ua, $matches) === 1 || preg_match('/headline-reader/Dui', $ua, $matches) === 1) {
         $data = DataSet::get('VariousRSSReader');
     } elseif (strpos($ua, 'cococ/') !== false) {
         $data = DataSet::get('VariousRSSReader');
     }
     if (is_null($data)) {
         return false;
     }
     static::updateMap($result, $data);
     return true;
 }
Пример #10
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Sleipnir/') === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match('/Sleipnir\\/([.0-9]+)/Du', $ua, $matches)) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('Sleipnir'));
     static::updateVersion($result, $version);
     $win = DataSet::get('Win');
     static::updateCategory($result, $win[DataSet::DATASET_KEY_CATEGORY]);
     static::updateOs($result, $win[DataSet::DATASET_KEY_NAME]);
     return true;
 }
Пример #11
0
 public static function challenge($ua, &$result)
 {
     // See \Woothee\AgentCategory\Browser\SafariChrome for new Opera (w/ blink)
     if (strpos($ua, 'Opera') === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match('/Version\\/([.0-9]+)/Du', $ua, $matches)) {
         $version = $matches[1];
     } elseif (preg_match('/Opera[\\/ ]([.0-9]+)/Du', $ua, $matches)) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('Opera'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #12
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'like Mac OS X') < 0) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match('/iP(?:hone;|ad;|od) .*like Mac OS X/', $ua, $matches)) {
         if (preg_match('#Version/([.0-9]+)#', $ua, $matches)) {
             $version = $matches[1];
         }
         static::updateMap($result, DataSet::get('Webview'));
         static::updateVersion($result, $version);
         return true;
     }
     return false;
 }
Пример #13
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Nintendo DSi;') !== false) {
         $data = DataSet::get('NintendoDSi');
         static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
         static::updateOs($result, $data[DataSet::DATASET_KEY_OS]);
         return true;
     }
     if (strpos($ua, 'Nintendo Wii;') !== false) {
         $data = DataSet::get('NintendoWii');
         static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
         static::updateOs($result, $data[DataSet::DATASET_KEY_OS]);
         return true;
     }
     return false;
 }
Пример #14
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     if (strpos($ua, 'AppleSyndication/') !== false) {
         $data = DataSet::get('SafariRSSReader');
     } elseif (strpos($ua, 'compatible; Google Desktop/') !== false) {
         $data = DataSet::get('GoogleDesktop');
     } elseif (strpos($ua, 'Windows-RSS-Platform') !== false) {
         $data = DataSet::get('WindowsRSSReader');
     }
     if (is_null($data)) {
         return false;
     }
     static::updateMap($result, $data);
     return true;
 }
Пример #15
0
 public static function challenge($ua, &$result)
 {
     $pos = strpos($ua, 'WILLCOM');
     if ($pos === false) {
         $pos = strpos($ua, 'DDIPOCKET');
     }
     if ($pos === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match(self::VERSION_PATTERN, $ua, $matches)) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('willcom'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #16
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'compatible; MSIE') !== false || strpos($ua, 'Trident/') !== false || strpos($ua, 'IEMobile') !== false) {
         $version = DataSet::VALUE_UNKNOWN;
         if (preg_match('/MSIE ([.0-9]+);/', $ua, $matches) === 1) {
             $version = $matches[1];
         } elseif (preg_match('/Trident\\/([.0-9]+);/', $ua) === 1 && preg_match('/rv:([.0-9]+)/', $ua, $matches) === 1) {
             $version = $matches[1];
         } elseif (preg_match('/IEMobile\\/([.0-9]+);/', $ua, $matches) === 1) {
             $version = $matches[1];
         }
         static::updateMap($result, DataSet::get('MSIE'));
         static::updateVersion($result, $version);
         return true;
     }
     return false;
 }
Пример #17
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     if (strpos($ua, 'Nintendo 3DS;') !== false) {
         $data = DataSet::get('Nintendo3DS');
     } elseif (strpos($ua, 'Nintendo DSi;') !== false) {
         $data = DataSet::get('NintendoDSi');
     } elseif (strpos($ua, 'Nintendo Wii;') !== false) {
         $data = DataSet::get('NintendoWii');
     } elseif (strpos($ua, '(Nintendo WiiU)') !== false) {
         $data = DataSet::get('NintendoWiiU');
     }
     if (is_null($data)) {
         return false;
     }
     static::updateMap($result, $data);
     return true;
 }
Пример #18
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     $version = null;
     if (strpos($ua, 'iPod') !== false) {
         $data = DataSet::get('iPod');
         $version = static::parseIosVersion($ua);
     } elseif (strpos($ua, 'iPad') !== false) {
         $data = DataSet::get('iPad');
         $version = static::parseIosVersion($ua);
     } elseif (strpos($ua, 'iPhone') !== false) {
         $data = DataSet::get('iPhone');
         $version = static::parseIosVersion($ua);
     } elseif (strpos($ua, 'Android') !== false) {
         $data = DataSet::get('Android');
     } elseif (strpos($ua, 'CFNetwork') !== false) {
         $data = DataSet::get('iOS');
     } elseif (strpos($ua, 'BB10') !== false) {
         $data = DataSet::get('BlackBerry10');
         if (preg_match('#BB10(?:.+)Version/([.0-9]+)#', $ua, $matches)) {
             $version = $matches[1];
         }
     } elseif (strpos($ua, 'BlackBerry') !== false) {
         $data = DataSet::get('BlackBerry');
         if (preg_match('/BlackBerry(?:\\d+)\\/([.0-9]+) /', $ua, $matches) === 1) {
             $version = $matches[1];
         }
     }
     if (isset($result[DataSet::DATASET_KEY_NAME]) && $result[DataSet::DATASET_KEY_NAME] === 'Firefox') {
         if (preg_match('/^Mozilla\\/[.0-9]+ \\((?:Mobile|Tablet);(?:.*;)? rv:([.0-9]+)\\) Gecko\\/[.0-9]+ Firefox\\/[.0-9]+$/', $ua, $matches) === 1) {
             $data = DataSet::get('FirefoxOS');
             $version = $matches[1];
         }
     }
     if (is_null($data)) {
         return false;
     }
     static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
     static::updateOs($result, $data[DataSet::DATASET_KEY_NAME]);
     if ($version) {
         static::updateOsVersion($result, $version);
     }
     return true;
 }
Пример #19
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'KDDI-') !== false) {
         if (preg_match(Au::VERSION_PATTERN, $ua, $matches) === 1) {
             $term = $matches[1];
             $data = DataSet::get('au');
             static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
             static::updateOs($result, $data[DataSet::DATASET_KEY_OS]);
             static::updateVersion($result, $term);
             return true;
         }
     }
     if (strpos($ua, 'WILLCOM') !== false || strpos($ua, 'DDIPOCKET') !== false) {
         if (preg_match(Willcom::VERSION_PATTERN, $ua, $matches) === 1) {
             $term = $matches[1];
             $data = DataSet::get('willcom');
             static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
             static::updateOs($result, $data[DataSet::DATASET_KEY_OS]);
             static::updateVersion($result, $term);
             return true;
         }
     }
     if (strpos($ua, 'SymbianOS') !== false) {
         $data = DataSet::get('SymbianOS');
         static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
         static::updateOs($result, $data[DataSet::DATASET_KEY_OS]);
         return true;
     }
     if (strpos($ua, 'Google Wireless Transcoder') !== false) {
         $data = DataSet::get('MobileTranscoder');
         static::updateMap($result, $data);
         static::updateVersion($result, 'Google');
         return true;
     }
     if (strpos($ua, 'Naver Transcoder') !== false) {
         $data = DataSet::get('MobileTranscoder');
         static::updateMap($result, $data);
         static::updateVersion($result, 'Naver');
         return true;
     }
     return false;
 }
Пример #20
0
 public static function challenge($ua, &$result)
 {
     $pos = strpos($ua, 'SoftBank');
     if ($pos === false) {
         $pos = strpos($ua, 'Vodafone');
     }
     if ($pos === false) {
         $pos = strpos($ua, 'J-PHONE');
     }
     if ($pos === false) {
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match('/(?:SoftBank|Vodafone|J-PHONE)\\/[.0-9]+\\/([^ \\/;\\(\\)]+)/Du', $ua, $matches)) {
         $version = $matches[1];
     }
     static::updateMap($result, DataSet::get('SoftBank'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #21
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Linux') === false) {
         return false;
     }
     $data = DataSet::get('Linux');
     $version = null;
     if (strpos($ua, 'Android') !== false) {
         $data = DataSet::get('Android');
         if (preg_match('/Android[- ](\\d+\\.\\d+(?:\\.\\d+)?)/', $ua, $matches)) {
             $version = $matches[1];
         }
     }
     static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
     static::updateOs($result, $data[DataSet::DATASET_KEY_NAME]);
     if ($version) {
         static::updateOsVersion($result, $version);
     }
     return true;
 }
Пример #22
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Mac OS X') === false) {
         return false;
     }
     $data = DataSet::get('OSX');
     $version = null;
     if (strpos($ua, 'like Mac OS X') !== false) {
         return false;
     } else {
         if (preg_match('/Mac OS X (10[._]\\d+(?:[._]\\d+)?)(?:\\)|;)/', $ua, $matches) === 1) {
             $version = str_replace('_', '.', $matches[1]);
         }
     }
     static::updateCategory($result, $data[DataSet::DATASET_KEY_CATEGORY]);
     static::updateOs($result, $data[DataSet::DATASET_KEY_NAME]);
     if ($version) {
         static::updateOsVersion($result, $version);
     }
     return true;
 }
Пример #23
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Google') === false) {
         return false;
     }
     if (strpos($ua, 'compatible; Googlebot') !== false) {
         // Googlebot or Googlebot-Mobile
         if (strpos($ua, 'compatible; Googlebot-Mobile') !== false) {
             static::updateMap($result, DataSet::get('GoogleBotMobile'));
             return true;
         } else {
             static::updateMap($result, DataSet::get('GoogleBot'));
             return true;
         }
     }
     if (strpos($ua, 'Googlebot-Image/') !== false) {
         static::updateMap($result, DataSet::get('GoogleBot'));
         return true;
     }
     if (strpos($ua, 'Mediapartners-Google') !== false) {
         if (strpos($ua, 'compatible; Mediapartners-Google') !== false || $ua === 'Mediapartners-Google') {
             static::updateMap($result, DataSet::get('GoogleMediaPartners'));
             return true;
         }
     }
     if (strpos($ua, 'Feedfetcher-Google;') !== false) {
         static::updateMap($result, DataSet::get('GoogleFeedFetcher'));
         return true;
     }
     if (strpos($ua, 'AppEngine-Google') !== false) {
         static::updateMap($result, DataSet::get('GoogleAppEngine'));
         return true;
     }
     if (strpos($ua, 'Google Web Preview') !== false) {
         static::updateMap($result, DataSet::get('GoogleWebPreview'));
         return true;
     }
     return false;
 }
Пример #24
0
 public static function challenge($ua, &$result)
 {
     $pos = strpos($ua, 'DoCoMo');
     if ($pos === false) {
         $pos = strpos($ua, ';FOMA;');
     }
     if ($pos === false) {
         // not DoCoMo
         return false;
     }
     $version = DataSet::VALUE_UNKNOWN;
     if (preg_match('/DoCoMo\\/[.0-9]+[ \\/]([^- \\/;\\(\\)"\'\\]+)\']+)/Du', $ua, $matches) === 1) {
         $version = $matches[1];
     } else {
         if (preg_match('/\\(([^;\\)]+);FOMA;/Du', $ua, $matches)) {
             $version = $matches[1];
         }
     }
     static::updateMap($result, DataSet::get('docomo'));
     static::updateVersion($result, $version);
     return true;
 }
Пример #25
0
 public static function challenge($ua, &$result)
 {
     $data = null;
     $version = null;
     if (strpos($ua, 'Apache-HttpClient/') === 0 || strpos($ua, 'Jakarta Commons-HttpClient/') === 0 || strpos($ua, 'Java/') === 0) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'Java';
     } elseif (preg_match('/[- ]HttpClient(\\/|$)/Du', $ua, $matches) === 1) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'Java';
     } elseif (strpos($ua, 'Java(TM) 2 Runtime Environment,') !== false) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'Java';
     } elseif (strpos($ua, 'Wget/') === 0) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'wget';
     } elseif (strpos($ua, 'libwww-perl') === 0 || strpos($ua, 'WWW-Mechanize') === 0 || strpos($ua, 'LWP::Simple') === 0 || strpos($ua, 'LWP ') === 0 || strpos($ua, 'lwp-trivial') === 0) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'perl';
     } elseif (strpos($ua, 'Ruby') === 0 || strpos($ua, 'feedzirra') === 0 || strpos($ua, 'Typhoeus') === 0) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'ruby';
     } elseif (strpos($ua, 'Python-urllib/') === 0 || strpos($ua, 'Twisted ') === 0) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'python';
     } elseif (strpos($ua, 'PHP') === 0 || strpos($ua, 'WordPress/') === 0 || strpos($ua, 'CakePHP') === 0 || strpos($ua, 'PukiWiki/') === 0 || strpos($ua, 'PECL::HTTP') === 0 || preg_match('/(?:PEAR |)HTTP_Request(?: class|2)/Du', $ua, $matches) === 1) {
         $data = DataSet::get('HTTPLibrary');
         $version = 'php';
     }
     if (is_null($data)) {
         return false;
     }
     static::updateMap($result, $data);
     if ($version) {
         static::updateVersion($result, $version);
     }
     return true;
 }
Пример #26
0
 public static function challenge($ua, &$result)
 {
     if (strpos($ua, 'Yahoo') !== false || strpos($ua, 'help.yahoo.co.jp/help/jp/') !== false || strpos($ua, 'listing.yahoo.co.jp/support/faq/') !== false) {
         if (strpos($ua, 'compatible; Yahoo! Slurp') !== false) {
             static::updateMap($result, DataSet::get('YahooSlurp'));
             return true;
         } elseif (strpos($ua, 'YahooFeedSeekerJp') !== false || strpos($ua, 'YahooFeedSeekerBetaJp') !== false) {
             static::updateMap($result, DataSet::get('YahooJP'));
             return true;
         } elseif (strpos($ua, 'Y!J-BRZ/YATSHA crawler') !== false || strpos($ua, 'Y!J-BRY/YATSH crawler')) {
             static::updateMap($result, DataSet::get('YahooJP'));
             return true;
         } elseif (strpos($ua, 'crawler (http://listing.yahoo.co.jp/support/faq/') !== false || strpos($ua, 'crawler (http://help.yahoo.co.jp/help/jp/') !== false) {
             static::updateMap($result, DataSet::get('YahooJP'));
             return true;
         } elseif (strpos($ua, 'Yahoo Pipes') !== false) {
             static::updateMap($result, DataSet::get('YahooPipes'));
             return true;
         }
     } elseif (strpos($ua, 'msnbot') !== false) {
         static::updateMap($result, DataSet::get('msnbot'));
         return true;
     } elseif (strpos($ua, 'bingbot') !== false) {
         if (strpos($ua, 'compatible; bingbot') !== false) {
             static::updateMap($result, DataSet::get('bingbot'));
             return true;
         }
     } elseif (strpos($ua, 'Baidu') !== false) {
         if (strpos($ua, 'compatible; Baiduspider') !== false || strpos($ua, 'Baiduspider+') !== false || strpos($ua, 'Baiduspider-image+') !== false) {
             static::updateMap($result, DataSet::get('Baiduspider'));
             return true;
         }
     } elseif (strpos($ua, 'Yeti') !== false) {
         if (strpos($ua, 'http://help.naver.com/robots') !== false) {
             static::updateMap($result, DataSet::get('Yeti'));
             return true;
         }
     } elseif (strpos($ua, 'FeedBurner/') !== false) {
         static::updateMap($result, DataSet::get('FeedBurner'));
         return true;
     } elseif (strpos($ua, 'facebookexternalhit') !== false) {
         static::updateMap($result, DataSet::get('facebook'));
         return true;
     } elseif (strpos($ua, 'Twitterbot/') !== false) {
         static::updateMap($result, DataSet::get('twitter'));
         return true;
     } elseif (strpos($ua, 'ichiro') !== false) {
         if (strpos($ua, 'http://help.goo.ne.jp/door/crawler.html') !== false || strpos($ua, 'compatible; ichiro/mobile goo;') !== false) {
             static::updateMap($result, DataSet::get('goo'));
             return true;
         }
     } elseif (strpos($ua, 'gooblogsearch/') !== false) {
         static::updateMap($result, DataSet::get('goo'));
         return true;
     } elseif (strpos($ua, 'Apple-PubSub') !== false) {
         static::updateMap($result, DataSet::get('ApplePubSub'));
         return true;
     } elseif (strpos($ua, '(www.radian6.com/crawler)') !== false) {
         static::updateMap($result, DataSet::get('radian6'));
         return true;
     } elseif (strpos($ua, 'Genieo/') !== false) {
         static::updateMap($result, DataSet::get('Genieo'));
         return true;
     } elseif (strpos($ua, 'labs.topsy.com/butterfly/') !== false) {
         static::updateMap($result, DataSet::get('topsyButterfly'));
         return true;
     } elseif (strpos($ua, 'rogerbot/1.0 (http://www.seomoz.org/dp/rogerbot') !== false) {
         static::updateMap($result, DataSet::get('rogerbot'));
         return true;
     } elseif (strpos($ua, 'compatible; AhrefsBot/') !== false) {
         static::updateMap($result, DataSet::get('AhrefsBot'));
         return true;
     } elseif (strpos($ua, 'livedoor FeedFetcher') !== false || strpos($ua, 'Fastladder FeedFetcher') !== false) {
         static::updateMap($result, DataSet::get('livedoorFeedFetcher'));
         return true;
     } elseif (strpos($ua, 'Hatena ') !== false) {
         if (strpos($ua, 'Hatena Antenna') !== false || strpos($ua, 'Hatena Pagetitle Agent') !== false || strpos($ua, 'Hatena Diary RSS') !== false) {
             static::updateMap($result, DataSet::get('Hatena'));
             return true;
         }
     } elseif (strpos($ua, 'mixi-check') !== false || strpos($ua, 'mixi-crawler') !== false || strpos($ua, 'mixi-news-crawler') !== false) {
         static::updateMap($result, DataSet::get('mixi'));
         return true;
     } elseif (strpos($ua, 'Indy Library') !== false) {
         if (strpos($ua, 'compatible; Indy Library') !== false) {
             static::updateMap($result, DataSet::get('IndyLibrary'));
             return true;
         }
     }
     return false;
 }