diff --git a/data/applications-bots.php b/data/applications-bots.php index 322e1c506..59f9739b3 100644 --- a/data/applications-bots.php +++ b/data/applications-bots.php @@ -3,292 +3,292 @@ namespace WhichBrowser\Data; Applications::$BOTS = [ - [ 'name' => '80legs', 'id' => '008', 'regexp' => '/(?:^|\s)008\/([0-9.]*)/u' ], - [ 'name' => '360spider', 'id' => '360', 'regexp' => '/360Spider/u' ], - [ 'name' => '360spider', 'id' => '360', 'regexp' => '/360spider-image/u' ], - [ 'name' => 'A6 Indexer', 'id' => 'a6', 'regexp' => '/A6-Indexer(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Aboundex', 'id' => 'abound', 'regexp' => '/Aboundex\/([0-9.]*)/u' ], - [ 'name' => 'Ad Muncher', 'id' => 'muncher', 'regexp' => '/Ad Muncher v([0-9.]*)/u' ], - [ 'name' => 'Adaxas', 'id' => 'adaxas', 'regexp' => '/Adaxas Spider/u' ], - [ 'name' => 'AddThis.com', 'id' => 'addthis', 'regexp' => '/AddThis.com/u' ], - [ 'name' => 'ADmantX', 'id' => 'admantx', 'regexp' => '/ADmantX Platform Semantic Analyzer/u' ], - [ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot.Feeds v([0-9.]*)/u' ], - [ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot\/([0-9.]*)/u' ], - [ 'name' => 'Alexa', 'id' => 'archiver', 'regexp' => '/ia_archiver/u' ], - [ 'name' => 'AltaVista', 'id' => 'altavista', 'regexp' => '/AltaVista Intranet V([0-9.]*)/u' ], - [ 'name' => 'Analytics SEO', 'id' => 'curious', 'regexp' => '/Curious George - www.analyticsseo.com\/crawler/u' ], - [ 'name' => 'Amazon CloudFront', 'id' => 'cloudfront', 'regexp' => '/Amazon CloudFront/u' ], - [ 'name' => 'Amorank Spider', 'id' => 'amorank', 'regexp' => '/AmorankSpider\/([0-9.]*)/u' ], - [ 'name' => 'ArchiveBot', 'id' => 'archive', 'regexp' => '/ArchiveTeam ArchiveBot/u' ], - [ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/archive.org_bot(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/special_archiver(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Ask Jeeves', 'id' => 'jeeves', 'regexp' => '/Ask Jeeves\/Teoma/u' ], - [ 'name' => 'AstraSpider', 'id' => 'astra', 'regexp' => '/AstraSpider V([0-9.]*)/u' ], - [ 'name' => 'Backlink-Check', 'id' => 'backlink', 'regexp' => '/Backlink-Ceck.de/u' ], - [ 'name' => 'BacklinkCrawler', 'id' => 'backlink', 'regexp' => '/BacklinkCrawler/u' ], - [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider[\+ ]\([\+ ]/u' ], - [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider\/([0-9.]*)/u' ], - [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider/u' ], - [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/baiduspider-mobile-gate/u' ], - [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/\+http:\/\/www.baidu.com\/search\/spider.html/u' ], - [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/BaiduImagespider/u' ], - [ 'name' => 'BazQux', 'id' => 'bazqux', 'regexp' => '/BazQux\/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'bingbot', 'regexp' => '/bingbot\/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot\/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-UDiscovery\/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-media\/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MsnBot-Media \/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-NewsBlogs\/([0-9.]*)/u' ], - [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MSNBOT_Mobile/u' ], - [ 'name' => 'Bing', 'id' => 'msmobot', 'regexp' => '/MSMOBOT/u' ], - [ 'name' => 'Bing Preview', 'id' => 'bing', 'regexp' => '/BingPreview\/([0-9.]*)/u' ], - [ 'name' => 'BlogBridge', 'id' => 'blogbridge', 'regexp' => '/BlogBridge ([0-9.]*)/u' ], - [ 'name' => 'Bloglines', 'id' => 'bloglines', 'regexp' => '/Bloglines\/([0-9.]*)/u' ], - [ 'name' => 'Bloglovin', 'id' => 'bloglovin', 'regexp' => '/Bloglovin\/([0-9.]*)/u' ], - [ 'name' => 'BlogPulse', 'id' => 'blogpulse', 'regexp' => '/BlogPulse \(ISSpider-([0-9.]*)/u' ], - [ 'name' => 'Blogram', 'id' => 'blogram', 'regexp' => '/BlogramCrawler\/([0-9.]*)/u' ], - [ 'name' => 'Blogtrottr', 'id' => 'blogtrot', 'regexp' => '/Blogtrottr\/([0-9.]*)/u' ], - [ 'name' => 'Blogshares', 'id' => 'blogshares', 'regexp' => '/Blogshares/u' ], - [ 'name' => 'BoardReader', 'id' => 'boardreader', 'regexp' => '/BoardReader\/([0-9.]*)/u' ], - [ 'name' => 'Browsershots', 'id' => 'browsershots', 'regexp' => '/Browsershots/u' ], - [ 'name' => 'BUbiNG', 'id' => 'bubing', 'regexp' => '/BUbiNG/u' ], - [ 'name' => 'Butterfly', 'id' => 'butterfly', 'regexp' => '/Butterfly\/([0-9.]*)/u' ], - [ 'name' => 'CiteSeerX', 'id' => 'heritrix', 'regexp' => '/heritrix\/([0-9.]*)/u' ], - [ 'name' => 'Cliqzbot', 'id' => 'cliqz', 'regexp' => '/Cliqzbot\/([0-9.]*)/u' ], - [ 'name' => 'CloudFare Always Online', 'id' => 'cloudflare', 'regexp' => '/CloudFlare-AlwaysOnline\/([0-9.]*)/u' ], - [ 'name' => 'Comodo', 'id' => 'comodo', 'regexp' => '/Comodo Spider ([0-9.]*)/u' ], - [ 'name' => 'CommaFeed', 'id' => 'commafeed', 'regexp' => '/CommaFeed\/([0-9.]*)/u' ], - [ 'name' => 'CommonCrawl', 'id' => 'cbot', 'regexp' => '/CCBot\/([0-9.]*)/u' ], - [ 'name' => 'Data Hotel Watchdog', 'id' => 'watchdog', 'regexp' => '/Data-Hotel-Watchdog\/([0-9.]*)/u' ], - [ 'name' => 'DataparkSearch', 'id' => 'datasearch', 'regexp' => '/DataparkSearch\/([0-9.]*)/u' ], - [ 'name' => 'Daumoa', 'id' => 'daumoa', 'regexp' => '/Daumoa ([0-9.]*)/u' ], - [ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg Deeper\/v([0-9.]*)/u' ], - [ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg\/([0-9.]*)/u' ], - [ 'name' => 'Domain Re-Animator', 'id' => 'domain', 'regexp' => '/Domain Re-Animator Bot/u' ], - [ 'name' => 'Exabot Thumbnails', 'id' => 'exabot', 'regexp' => '/Exabot-Thumbnails/u' ], - [ 'name' => 'ExactSeek', 'id' => 'exactseek', 'regexp' => '/ExactSeek Crawler/u' ], - [ 'name' => 'Ezooms Crawler', 'id' => 'ezooms', 'regexp' => '/Ezooms\/([0-9.]*)/u' ], - [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookplatform\/([0-9.]*)/u' ], - [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookexternalhit\/([0-9.]*)/u' ], - [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookscraper\/([0-9.]*)/u' ], - [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/FacebookSecurity\/([0-9.]*)/u' ], - [ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FAST Crawler ([0-9.]*)/u' ], - [ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FastCrawler3/u' ], - [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler\/([0-9.]*)/u' ], - [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler ([0-9.]*)/u' ], - [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST EnterpriseCrawler ([0-9.]*)/u' ], - [ 'name' => 'FAST MetaWeb Crawler', 'id' => 'fast', 'regexp' => '/FAST MetaWeb Crawler/u' ], - [ 'name' => 'FAST mSEARCH Crawler', 'id' => 'fast', 'regexp' => '/FAST-mSEARCH Crawler ([0-9.]*)/u' ], - [ 'name' => 'FAST Web Crawler', 'id' => 'fast', 'regexp' => '/FAST-WebCrawler\/([0-9.]*)/u' ], - [ 'name' => 'Flamingo Search', 'id' => 'flamingo', 'regexp' => '/Flamingo_SearchEngine/u' ], - [ 'name' => 'Fastladder', 'id' => 'fastladder', 'regexp' => '/Fastladder FeedFetcher\/([0-9.]*)/u' ], - [ 'name' => 'Feedbin', 'id' => 'feed', 'regexp' => '/Feedbin/u' ], - [ 'name' => 'FeedWrangler', 'id' => 'wrangler', 'regexp' => '/Feed Wrangler\/([0-9.]*)/u' ], - [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyApp\/([0-9.]*)/u' ], - [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyBot\/([0-9.]*)/u' ], - [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/MetaFeedly\/([0-9.]*)/u' ], - [ 'name' => 'Feedspot', 'id' => 'feed', 'regexp' => '/Feedspot/u' ], - [ 'name' => 'FeedValidator', 'id' => 'validator', 'regexp' => '/FeedValidator\/([0-9.]*)/u' ], - [ 'name' => 'FeedZirra', 'id' => 'feed', 'regexp' => '/feedzirra/u' ], - [ 'name' => 'Fever', 'id' => 'fever', 'regexp' => '/Fever\/([0-9.]*)/u' ], - [ 'name' => 'Friendica', 'id' => 'friendica', 'regexp' => '/Friendica/u' ], - [ 'name' => 'FTRF: Friendly Robot', 'id' => 'robot', 'regexp' => '/FTRF: Friendly robot\/([0-9.]*)/u' ], - [ 'name' => 'Genieo Web Filter', 'id' => 'genieo', 'regexp' => '/Genieo\/([0-9.]*)/u' ], - [ 'name' => 'GNIP', 'id' => 'fetchor', 'regexp' => '/UnwindFetchor\/([0-9.]*)/u' ], - [ 'name' => 'Gocrawl', 'id' => 'google', 'regexp' => '/Googlebot \(gocrawl v([0-9.]*)\)/u' ], - [ 'name' => 'GomezAgent', 'id' => 'gomez', 'regexp' => '/GomezAgent ([0-9.]+)/u' ], - [ 'name' => 'Goo', 'id' => 'ichiro', 'regexp' => '/ichiro\/mobile goo/u' ], - [ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblog\/([0-9.]*)/u' ], - [ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblogsearch\/([0-9.]*)/u' ], - [ 'name' => 'Goo RSS Reader', 'id' => 'goorss', 'regexp' => '/gooRSSreader([0-9.]*)/u' ], - [ 'name' => 'Googlebot', 'id' => 'google', 'regexp' => '/Google[Bb]ot\/([0-9.]*)/u' ], - [ 'name' => 'Googlebot Mobile', 'id' => 'google', 'regexp' => '/Googlebot-Mobile\/([0-9.]*)/u' ], - [ 'name' => 'Googlebot Image', 'id' => 'google', 'regexp' => '/Googlebot-Image\/([0-9.]*)/u' ], - [ 'name' => 'Googlebot Video', 'id' => 'google', 'regexp' => '/Googlebot-Video\/([0-9.]*)/u' ], - [ 'name' => 'Google Ads Bot', 'id' => 'google', 'regexp' => '/AdsBot-Google/u' ], - [ 'name' => 'Google Adsense Snapshot', 'id' => 'google', 'regexp' => '/Adsense-Snapshot-Google/u' ], - [ 'name' => 'Google App Engine', 'id' => 'google', 'regexp' => '/AppEngine-Google/u' ], - [ 'name' => 'Google Web Preview', 'id' => 'google', 'regexp' => '/Google Web Preview/u' ], - [ 'name' => 'Google Page Speed', 'id' => 'google', 'regexp' => '/Google Page Speed Insights/u' ], - [ 'name' => 'Google FeedBurner', 'id' => 'feed', 'regexp' => '/FeedBurner\/([0-9.]*)/u' ], - [ 'name' => 'Google Feedfetcher', 'id' => 'google', 'regexp' => '/Feedfetcher-Google/iu' ], - [ 'name' => 'Google Font Analysis', 'id' => 'google', 'regexp' => '/Google-FontAnalysis\/([0-9.]*)/u' ], - [ 'name' => 'Google Sitemaps', 'id' => 'google', 'regexp' => '/Google-Sitemaps\/([0-9.]*)/u' ], - [ 'name' => 'Google Site Verification', 'id' => 'google', 'regexp' => '/Google-Site-Verification\/([0-9.]*)/u' ], - [ 'name' => 'Google Rich Snippets', 'id' => 'google', 'regexp' => '/Googlebot-richsnippets/u' ], - [ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google\/([0-9.]*)/u' ], - [ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google/u' ], - [ 'name' => 'Google News', 'id' => 'google', 'regexp' => '/Googlebot-News/u' ], - [ 'name' => 'Google Wireless Transcoder', 'id' => 'google', 'regexp' => '/Google Wireless Transcoder/u' ], - [ 'name' => 'Google Play Newsstand', 'id' => 'google', 'regexp' => '/GoogleProducer/u' ], - [ 'name' => 'Google YouTube Sample', 'id' => 'google', 'regexp' => '/Google-YouTubeSample\/([0-9.]*)/u' ], - [ 'name' => 'Grammarly', 'id' => 'grammarly', 'regexp' => '/Grammarly\/([0-9.]*)/u' ], - [ 'name' => 'Grub', 'id' => 'grub', 'regexp' => '/grub-client-([0-9.]*)/u' ], - [ 'name' => 'Hatena Antenna', 'id' => 'hatena', 'regexp' => '/Hatena Antenna\/([0-9.]*)/u' ], - [ 'name' => 'Hatena Diary', 'id' => 'hatena', 'regexp' => '/Hatena Diary RSS Module/u' ], - [ 'name' => 'Hatena Pagetitle', 'id' => 'hatena', 'regexp' => '/Hatena Pagetitle Agent\/([0-9.]*)/u' ], - [ 'name' => 'HeartRails Capture', 'id' => 'capture', 'regexp' => '/HeartRails_Capture\/([0-9.]*)/u' ], - [ 'name' => 'Heureka Feed', 'id' => 'heureka', 'regexp' => '/Heurekabot-Feed/u' ], - [ 'name' => 'htdig', 'id' => 'htdig', 'regexp' => '/htdig\/([0-9.]*)/u' ], - [ 'name' => 'HTTPMon', 'id' => 'httpmon', 'regexp' => '/HTTPMon\/([0-9.]*)/u' ], - [ 'name' => 'HubPages', 'id' => 'hubpages', 'regexp' => '/HubPages V([0-9.]*)/u' ], - [ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider\/([0-9.]*)/u' ], - [ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider2/u' ], - [ 'name' => 'Ichiro', 'id' => 'ichiro', 'regexp' => '/ichiro\/([0-9.]*)/u' ], - [ 'name' => 'Internet Archive', 'id' => 'archive', 'regexp' => '/InternetArchive\/([0-9.]*)/u' ], - [ 'name' => 'JamesBOT', 'id' => 'crawler', 'regexp' => '/James BOT - WebCrawler/u' ], - [ 'name' => 'Jayde', 'id' => 'crawler', 'regexp' => '/Jayde Crawler./u' ], - [ 'name' => 'Kouio', 'id' => 'kouio', 'regexp' => '/kouio.com/u' ], - [ 'name' => 'Larbin', 'id' => 'larbin', 'regexp' => '/[Ll]arbin[\/_]([0-9.]*)/u' ], - [ 'name' => 'Linkedin Bot', 'id' => 'linkedin', 'regexp' => '/LinkedInBot\/([0-9.]*)/u' ], - [ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdexbot-mobile\/([0-9.]*)/u' ], - [ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdex.com\/v([0-9.]*)/u' ], - [ 'name' => 'Livedoor', 'id' => 'livedoor', 'regexp' => '/livedoor/u' ], - [ 'name' => 'LTX71', 'id' => 'ltx71', 'regexp' => '/ltx71/u' ], - [ 'name' => 'Magpie RSS', 'id' => 'magpie', 'regexp' => '/MagpieRSS\/([0-9.]*)/u' ], - [ 'name' => 'Mapian News Bot', 'id' => 'mapion', 'regexp' => '/mapion-news-bot\/([0-9.]*)/u' ], + [ 'name' => '80legs', 'id' => '008', 'regexp' => '/(?:^|\s)008\/([0-9.]*)/u' ], + [ 'name' => '360spider', 'id' => '360', 'regexp' => '/360Spider/u' ], + [ 'name' => '360spider', 'id' => '360', 'regexp' => '/360spider-image/u' ], + [ 'name' => 'A6 Indexer', 'id' => 'a6', 'regexp' => '/A6-Indexer(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Aboundex', 'id' => 'abound', 'regexp' => '/Aboundex\/([0-9.]*)/u' ], + [ 'name' => 'Ad Muncher', 'id' => 'muncher', 'regexp' => '/Ad Muncher v([0-9.]*)/u' ], + [ 'name' => 'Adaxas', 'id' => 'adaxas', 'regexp' => '/Adaxas Spider/u' ], + [ 'name' => 'AddThis.com', 'id' => 'addthis', 'regexp' => '/AddThis.com/u' ], + [ 'name' => 'ADmantX', 'id' => 'admantx', 'regexp' => '/ADmantX Platform Semantic Analyzer/u' ], + [ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot.Feeds v([0-9.]*)/u' ], + [ 'name' => 'AhrefsBot', 'id' => 'ahrefsbot', 'regexp' => '/AhrefsBot\/([0-9.]*)/u' ], + [ 'name' => 'Alexa', 'id' => 'archiver', 'regexp' => '/ia_archiver/u' ], + [ 'name' => 'AltaVista', 'id' => 'altavista', 'regexp' => '/AltaVista Intranet V([0-9.]*)/u' ], + [ 'name' => 'Analytics SEO', 'id' => 'curious', 'regexp' => '/Curious George - www.analyticsseo.com\/crawler/u' ], + [ 'name' => 'Amazon CloudFront', 'id' => 'cloudfront', 'regexp' => '/Amazon CloudFront/u' ], + [ 'name' => 'Amorank Spider', 'id' => 'amorank', 'regexp' => '/AmorankSpider\/([0-9.]*)/u' ], + [ 'name' => 'ArchiveBot', 'id' => 'archive', 'regexp' => '/ArchiveTeam ArchiveBot/u' ], + [ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/archive.org_bot(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Archive.org', 'id' => 'archive', 'regexp' => '/special_archiver(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Ask Jeeves', 'id' => 'jeeves', 'regexp' => '/Ask Jeeves\/Teoma/u' ], + [ 'name' => 'AstraSpider', 'id' => 'astra', 'regexp' => '/AstraSpider V([0-9.]*)/u' ], + [ 'name' => 'Backlink-Check', 'id' => 'backlink', 'regexp' => '/Backlink-Ceck.de/u' ], + [ 'name' => 'BacklinkCrawler', 'id' => 'backlink', 'regexp' => '/BacklinkCrawler/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider[\+ ]\([\+ ]/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider\/([0-9.]*)/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/Baiduspider/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/baiduspider-mobile-gate/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/\+http:\/\/www.baidu.com\/search\/spider.html/u' ], + [ 'name' => 'Baiduspider', 'id' => 'baidu', 'regexp' => '/BaiduImagespider/u' ], + [ 'name' => 'BazQux', 'id' => 'bazqux', 'regexp' => '/BazQux\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'bingbot', 'regexp' => '/bingbot\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-UDiscovery\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-media\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MsnBot-Media \/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/msnbot-NewsBlogs\/([0-9.]*)/u' ], + [ 'name' => 'Bing', 'id' => 'msnbot', 'regexp' => '/MSNBOT_Mobile/u' ], + [ 'name' => 'Bing', 'id' => 'msmobot', 'regexp' => '/MSMOBOT/u' ], + [ 'name' => 'Bing Preview', 'id' => 'bing', 'regexp' => '/BingPreview\/([0-9.]*)/u' ], + [ 'name' => 'BlogBridge', 'id' => 'blogbridge', 'regexp' => '/BlogBridge ([0-9.]*)/u' ], + [ 'name' => 'Bloglines', 'id' => 'bloglines', 'regexp' => '/Bloglines\/([0-9.]*)/u' ], + [ 'name' => 'Bloglovin', 'id' => 'bloglovin', 'regexp' => '/Bloglovin\/([0-9.]*)/u' ], + [ 'name' => 'BlogPulse', 'id' => 'blogpulse', 'regexp' => '/BlogPulse \(ISSpider-([0-9.]*)/u' ], + [ 'name' => 'Blogram', 'id' => 'blogram', 'regexp' => '/BlogramCrawler\/([0-9.]*)/u' ], + [ 'name' => 'Blogtrottr', 'id' => 'blogtrot', 'regexp' => '/Blogtrottr\/([0-9.]*)/u' ], + [ 'name' => 'Blogshares', 'id' => 'blogshares', 'regexp' => '/Blogshares/u' ], + [ 'name' => 'BoardReader', 'id' => 'boardreader', 'regexp' => '/BoardReader\/([0-9.]*)/u' ], + [ 'name' => 'Browsershots', 'id' => 'browsershots', 'regexp' => '/Browsershots/u' ], + [ 'name' => 'BUbiNG', 'id' => 'bubing', 'regexp' => '/BUbiNG/u' ], + [ 'name' => 'Butterfly', 'id' => 'butterfly', 'regexp' => '/Butterfly\/([0-9.]*)/u' ], + [ 'name' => 'CiteSeerX', 'id' => 'heritrix', 'regexp' => '/heritrix\/([0-9.]*)/u' ], + [ 'name' => 'Cliqzbot', 'id' => 'cliqz', 'regexp' => '/Cliqzbot\/([0-9.]*)/u' ], + [ 'name' => 'CloudFare Always Online', 'id' => 'cloudflare', 'regexp' => '/CloudFlare-AlwaysOnline\/([0-9.]*)/u' ], + [ 'name' => 'Comodo', 'id' => 'comodo', 'regexp' => '/Comodo Spider ([0-9.]*)/u' ], + [ 'name' => 'CommaFeed', 'id' => 'commafeed', 'regexp' => '/CommaFeed\/([0-9.]*)/u' ], + [ 'name' => 'CommonCrawl', 'id' => 'cbot', 'regexp' => '/CCBot\/([0-9.]*)/u' ], + [ 'name' => 'Data Hotel Watchdog', 'id' => 'watchdog', 'regexp' => '/Data-Hotel-Watchdog\/([0-9.]*)/u' ], + [ 'name' => 'DataparkSearch', 'id' => 'datasearch', 'regexp' => '/DataparkSearch\/([0-9.]*)/u' ], + [ 'name' => 'Daumoa', 'id' => 'daumoa', 'regexp' => '/Daumoa ([0-9.]*)/u' ], + [ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg Deeper\/v([0-9.]*)/u' ], + [ 'name' => 'Digg', 'id' => 'digg', 'regexp' => '/Digg\/([0-9.]*)/u' ], + [ 'name' => 'Domain Re-Animator', 'id' => 'domain', 'regexp' => '/Domain Re-Animator Bot/u' ], + [ 'name' => 'Exabot Thumbnails', 'id' => 'exabot', 'regexp' => '/Exabot-Thumbnails/u' ], + [ 'name' => 'ExactSeek', 'id' => 'exactseek', 'regexp' => '/ExactSeek Crawler/u' ], + [ 'name' => 'Ezooms Crawler', 'id' => 'ezooms', 'regexp' => '/Ezooms\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookplatform\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookexternalhit\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/facebookscraper\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'facebook', 'regexp' => '/FacebookSecurity\/([0-9.]*)/u' ], + [ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FAST Crawler ([0-9.]*)/u' ], + [ 'name' => 'FAST Crawler', 'id' => 'fast', 'regexp' => '/FastCrawler3/u' ], + [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler\/([0-9.]*)/u' ], + [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST Enterprise Crawler ([0-9.]*)/u' ], + [ 'name' => 'FAST Enterprise Crawler', 'id' => 'fast', 'regexp' => '/FAST EnterpriseCrawler ([0-9.]*)/u' ], + [ 'name' => 'FAST MetaWeb Crawler', 'id' => 'fast', 'regexp' => '/FAST MetaWeb Crawler/u' ], + [ 'name' => 'FAST mSEARCH Crawler', 'id' => 'fast', 'regexp' => '/FAST-mSEARCH Crawler ([0-9.]*)/u' ], + [ 'name' => 'FAST Web Crawler', 'id' => 'fast', 'regexp' => '/FAST-WebCrawler\/([0-9.]*)/u' ], + [ 'name' => 'Flamingo Search', 'id' => 'flamingo', 'regexp' => '/Flamingo_SearchEngine/u' ], + [ 'name' => 'Fastladder', 'id' => 'fastladder', 'regexp' => '/Fastladder FeedFetcher\/([0-9.]*)/u' ], + [ 'name' => 'Feedbin', 'id' => 'feed', 'regexp' => '/Feedbin/u' ], + [ 'name' => 'FeedWrangler', 'id' => 'wrangler', 'regexp' => '/Feed Wrangler\/([0-9.]*)/u' ], + [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyApp\/([0-9.]*)/u' ], + [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/FeedlyBot\/([0-9.]*)/u' ], + [ 'name' => 'Feedly', 'id' => 'feed', 'regexp' => '/MetaFeedly\/([0-9.]*)/u' ], + [ 'name' => 'Feedspot', 'id' => 'feed', 'regexp' => '/Feedspot/u' ], + [ 'name' => 'FeedValidator', 'id' => 'validator', 'regexp' => '/FeedValidator\/([0-9.]*)/u' ], + [ 'name' => 'FeedZirra', 'id' => 'feed', 'regexp' => '/feedzirra/u' ], + [ 'name' => 'Fever', 'id' => 'fever', 'regexp' => '/Fever\/([0-9.]*)/u' ], + [ 'name' => 'Friendica', 'id' => 'friendica', 'regexp' => '/Friendica/u' ], + [ 'name' => 'FTRF: Friendly Robot', 'id' => 'robot', 'regexp' => '/FTRF: Friendly robot\/([0-9.]*)/u' ], + [ 'name' => 'Genieo Web Filter', 'id' => 'genieo', 'regexp' => '/Genieo\/([0-9.]*)/u' ], + [ 'name' => 'GNIP', 'id' => 'fetchor', 'regexp' => '/UnwindFetchor\/([0-9.]*)/u' ], + [ 'name' => 'Gocrawl', 'id' => 'google', 'regexp' => '/Googlebot \(gocrawl v([0-9.]*)\)/u' ], + [ 'name' => 'GomezAgent', 'id' => 'gomez', 'regexp' => '/GomezAgent ([0-9.]+)/u' ], + [ 'name' => 'Goo', 'id' => 'ichiro', 'regexp' => '/ichiro\/mobile goo/u' ], + [ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblog\/([0-9.]*)/u' ], + [ 'name' => 'Goo Blog Search', 'id' => 'gooblog', 'regexp' => '/gooblogsearch\/([0-9.]*)/u' ], + [ 'name' => 'Goo RSS Reader', 'id' => 'goorss', 'regexp' => '/gooRSSreader([0-9.]*)/u' ], + [ 'name' => 'Googlebot', 'id' => 'google', 'regexp' => '/Google[Bb]ot\/([0-9.]*)/u' ], + [ 'name' => 'Googlebot Mobile', 'id' => 'google', 'regexp' => '/Googlebot-Mobile\/([0-9.]*)/u' ], + [ 'name' => 'Googlebot Image', 'id' => 'google', 'regexp' => '/Googlebot-Image\/([0-9.]*)/u' ], + [ 'name' => 'Googlebot Video', 'id' => 'google', 'regexp' => '/Googlebot-Video\/([0-9.]*)/u' ], + [ 'name' => 'Google Ads Bot', 'id' => 'google', 'regexp' => '/AdsBot-Google/u' ], + [ 'name' => 'Google Adsense Snapshot', 'id' => 'google', 'regexp' => '/Adsense-Snapshot-Google/u' ], + [ 'name' => 'Google App Engine', 'id' => 'google', 'regexp' => '/AppEngine-Google/u' ], + [ 'name' => 'Google Web Preview', 'id' => 'google', 'regexp' => '/Google Web Preview/u' ], + [ 'name' => 'Google Page Speed', 'id' => 'google', 'regexp' => '/Google Page Speed Insights/u' ], + [ 'name' => 'Google FeedBurner', 'id' => 'feed', 'regexp' => '/FeedBurner\/([0-9.]*)/u' ], + [ 'name' => 'Google Feedfetcher', 'id' => 'google', 'regexp' => '/Feedfetcher-Google/iu' ], + [ 'name' => 'Google Font Analysis', 'id' => 'google', 'regexp' => '/Google-FontAnalysis\/([0-9.]*)/u' ], + [ 'name' => 'Google Sitemaps', 'id' => 'google', 'regexp' => '/Google-Sitemaps\/([0-9.]*)/u' ], + [ 'name' => 'Google Site Verification', 'id' => 'google', 'regexp' => '/Google-Site-Verification\/([0-9.]*)/u' ], + [ 'name' => 'Google Rich Snippets', 'id' => 'google', 'regexp' => '/Googlebot-richsnippets/u' ], + [ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google\/([0-9.]*)/u' ], + [ 'name' => 'Google Mediapartners', 'id' => 'google', 'regexp' => '/Mediapartners-Google/u' ], + [ 'name' => 'Google News', 'id' => 'google', 'regexp' => '/Googlebot-News/u' ], + [ 'name' => 'Google Wireless Transcoder', 'id' => 'google', 'regexp' => '/Google Wireless Transcoder/u' ], + [ 'name' => 'Google Play Newsstand', 'id' => 'google', 'regexp' => '/GoogleProducer/u' ], + [ 'name' => 'Google YouTube Sample', 'id' => 'google', 'regexp' => '/Google-YouTubeSample\/([0-9.]*)/u' ], + [ 'name' => 'Grammarly', 'id' => 'grammarly', 'regexp' => '/Grammarly\/([0-9.]*)/u' ], + [ 'name' => 'Grub', 'id' => 'grub', 'regexp' => '/grub-client-([0-9.]*)/u' ], + [ 'name' => 'Hatena Antenna', 'id' => 'hatena', 'regexp' => '/Hatena Antenna\/([0-9.]*)/u' ], + [ 'name' => 'Hatena Diary', 'id' => 'hatena', 'regexp' => '/Hatena Diary RSS Module/u' ], + [ 'name' => 'Hatena Pagetitle', 'id' => 'hatena', 'regexp' => '/Hatena Pagetitle Agent\/([0-9.]*)/u' ], + [ 'name' => 'HeartRails Capture', 'id' => 'capture', 'regexp' => '/HeartRails_Capture\/([0-9.]*)/u' ], + [ 'name' => 'Heureka Feed', 'id' => 'heureka', 'regexp' => '/Heurekabot-Feed/u' ], + [ 'name' => 'htdig', 'id' => 'htdig', 'regexp' => '/htdig\/([0-9.]*)/u' ], + [ 'name' => 'HTTPMon', 'id' => 'httpmon', 'regexp' => '/HTTPMon\/([0-9.]*)/u' ], + [ 'name' => 'HubPages', 'id' => 'hubpages', 'regexp' => '/HubPages V([0-9.]*)/u' ], + [ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider\/([0-9.]*)/u' ], + [ 'name' => 'iAsk Spider', 'id' => 'spider', 'regexp' => '/iaskspider2/u' ], + [ 'name' => 'Ichiro', 'id' => 'ichiro', 'regexp' => '/ichiro\/([0-9.]*)/u' ], + [ 'name' => 'Internet Archive', 'id' => 'archive', 'regexp' => '/InternetArchive\/([0-9.]*)/u' ], + [ 'name' => 'JamesBOT', 'id' => 'crawler', 'regexp' => '/James BOT - WebCrawler/u' ], + [ 'name' => 'Jayde', 'id' => 'crawler', 'regexp' => '/Jayde Crawler./u' ], + [ 'name' => 'Kouio', 'id' => 'kouio', 'regexp' => '/kouio.com/u' ], + [ 'name' => 'Larbin', 'id' => 'larbin', 'regexp' => '/[Ll]arbin[\/_]([0-9.]*)/u' ], + [ 'name' => 'Linkedin Bot', 'id' => 'linkedin', 'regexp' => '/LinkedInBot\/([0-9.]*)/u' ], + [ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdexbot-mobile\/([0-9.]*)/u' ], + [ 'name' => 'Linkdex Bot', 'id' => 'linkdex', 'regexp' => '/linkdex.com\/v([0-9.]*)/u' ], + [ 'name' => 'Livedoor', 'id' => 'livedoor', 'regexp' => '/livedoor/u' ], + [ 'name' => 'LTX71', 'id' => 'ltx71', 'regexp' => '/ltx71/u' ], + [ 'name' => 'Magpie RSS', 'id' => 'magpie', 'regexp' => '/MagpieRSS\/([0-9.]*)/u' ], + [ 'name' => 'Mapian News Bot', 'id' => 'mapion', 'regexp' => '/mapion-news-bot\/([0-9.]*)/u' ], [ 'name' => 'Microsoft Social Streams', 'id' => 'socialstreams', 'regexp' => '/Microsoft MSN SocialStreams Bot/u' ], - [ 'name' => 'Mixi', 'id' => 'mixi', 'regexp' => '/mixi-check\/([0-9.]*)/u' ], - [ 'name' => 'MnoGoSearch', 'id' => 'mnogo', 'regexp' => '/MnoGoSearch\/([0-9.]*)/u' ], - [ 'name' => 'Monitor.us', 'id' => 'monitor', 'regexp' => '/monitor.us/u' ], - [ 'name' => 'Naver Yeti', 'id' => 'yeti', 'regexp' => '/Yeti\/([0-9.]*)/u' ], - [ 'name' => 'Netcraft Survey Bot', 'id' => 'netcraft', 'regexp' => '/Netcraft Web Server Survey/u' ], - [ 'name' => 'Netvibes', 'id' => 'netvibes', 'regexp' => '/Netvibes/u' ], - [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Favicon Fetcher/u' ], - [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Fetcher/u' ], - [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Finder/u' ], - [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Page Fetcher/u' ], - [ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGator\/([0-9.]*)/u' ], - [ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGatorOnline\/([0-9.]*)/u' ], - [ 'name' => 'NewsGator FetchLinks', 'id' => 'newsgator', 'regexp' => '/NewsGator FetchLinks extension\/([0-9.]*)/u' ], - [ 'name' => 'OpenWebSpider', 'id' => 'spider', 'regexp' => '/OpenWebSpider v([0-9.]*)/u' ], - [ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Collector\/([0-9.]*)/u' ], - [ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Mobile/u' ], - [ 'name' => 'PagesInventory ', 'id' => 'pages', 'regexp' => '/PagesInventory/u' ], - [ 'name' => 'Picsearch bot', 'id' => 'psbot', 'regexp' => '/psbot-page/u' ], - [ 'name' => 'Pingdom', 'id' => 'pingdom', 'regexp' => '/Pingdom.com_bot_version_([0-9.]*)/u' ], - [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' => '/Pinterest\/([0-9.]+)( \(+|$)/u' ], - [ 'name' => 'PostRank', 'id' => 'postrank', 'regexp' => '/PostRank\/([0-9.]*)/u' ], - [ 'name' => 'PowerMapper', 'id' => 'crawler', 'regexp' => '/CrawlerProcess \(http:\/\/www\.PowerMapper\.com\) \/([0-9.]*)/u' ], - [ 'name' => 'Radian 6', 'id' => 'feed', 'regexp' => '/R6_FeedFetcher/u' ], - [ 'name' => 'Radian 6', 'id' => 'comment', 'regexp' => '/R6_CommentReader/u' ], - [ 'name' => 'RssBar', 'id' => 'rssbar', 'regexp' => '/RssBar\/([0-9.]*)/u' ], - [ 'name' => 'ROI Hunter', 'id' => 'hunter', 'regexp' => '/ROI Hunter/u' ], - [ 'name' => 'QuerySeekerSpider', 'id' => 'spider', 'regexp' => '/QuerySeekerSpider(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Quora Link Preview', 'id' => 'quora', 'regexp' => '/Quora Link Preview\/([0-9.]*)/u' ], - [ 'name' => 'SafeSearch Microdata', 'id' => 'safesearch', 'regexp' => '/SafeSearch microdata crawler/u' ], - [ 'name' => 'Scrapy', 'id' => 'scrapy', 'regexp' => '/Scrapy\/([0-9.]*)/u' ], - [ 'name' => 'ScreenerBot', 'id' => 'crawler', 'regexp' => '/ScreenerBot Crawler Beta ([0-9.]*)/u' ], - [ 'name' => 'Server Density', 'id' => 'monitor', 'regexp' => '/Server Density Service Monitoring/u' ], - [ 'name' => 'Seznam bot', 'id' => 'seznam', 'regexp' => '/SeznamBot|SklikBot|Seznam screenshot-generator/u' ], - [ 'name' => 'Seznam Email Proxy', 'id' => 'seznam', 'regexp' => '/SeznamEmailProxy/u' ], - [ 'name' => 'Seznam Zbozi.cz', 'id' => 'seznam', 'regexp' => '/Seznam-Zbozi-robot/u' ], - [ 'name' => 'ShopWiki', 'id' => 'shopwiki', 'regexp' => '/ShopWiki\/([0-9.]*)/u' ], - [ 'name' => 'SilverReader', 'id' => 'reader', 'regexp' => '/SilverReader\/([0-9.]*)/u' ], - [ 'name' => 'SimplePie', 'id' => 'simplepie', 'regexp' => '/SimplePie\/([0-9.]*)/u' ], - [ 'name' => 'Site24x7', 'id' => 'site24', 'regexp' => '/Site24x7/u' ], - [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/sogou spider/u' ], - [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou pic spider\/([0-9.]*)/u' ], - [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou inst spider\/([0-9.]*)/u' ], - [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou web spider\/([0-9.]*)/u' ], - [ 'name' => 'Sogou Mobile Spider', 'id' => 'sogou', 'regexp' => '/Sogou Mobile Spider([0-9.]*)/u' ], - [ 'name' => 'Sophora Linkchecker', 'id' => 'sophora', 'regexp' => '/Sophora Linkchecker/u' ], - [ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider\/([0-9.]*)/u' ], - [ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider/u' ], - [ 'name' => 'Soso Image Spider', 'id' => 'soso', 'regexp' => '/Sosoimagespider/u' ], - [ 'name' => 'SPDYCheck', 'id' => 'spdycheck', 'regexp' => '/SPDYCheck SPDY Protocol Tester/iu' ], - [ 'name' => 'Spinn3r', 'id' => 'spinn', 'regexp' => '/Spinn3r ([0-9.]*)/iu' ], - [ 'name' => 'Spiderlytics', 'id' => 'spider', 'regexp' => '/Spiderlytics\/([0-9.]*)/iu' ], - [ 'name' => 'StatusCake Error Detector', 'id' => 'detector', 'regexp' => '/StatusCake Error Detector/iu' ], - [ 'name' => 'Summify', 'id' => 'summify', 'regexp' => '/Summify\/([0-9.]*)/u' ], - [ 'name' => 'TelegramBot', 'id' => 'telegram', 'regexp' => '/TelegramBot/u' ], - [ 'name' => 'Twisted PageGetter', 'id' => 'twisted', 'regexp' => '/Twisted PageGetter/u' ], - [ 'name' => 'Twitterbot', 'id' => 'twitter', 'regexp' => '/Twitterbot\/([0-9.]*)/u' ], - [ 'name' => 'Tiny Tiny RSS', 'id' => 'tiny', 'regexp' => '/Tiny Tiny RSS\/([0-9.]*)/u' ], - [ 'name' => 'TLSProber', 'id' => 'tlsprober', 'regexp' => '/TLSProber\/([0-9.]*)/u' ], - [ 'name' => 'Typhoeus', 'id' => 'typhoeus', 'regexp' => '/Typhoeus/u' ], - [ 'name' => 'Vagabondo', 'id' => 'vagabondo', 'regexp' => '/Vagabondo\/([0-9.]*)/u' ], - [ 'name' => 'Voilabot', 'id' => 'voila', 'regexp' => '/Voila[Bb]ot/u' ], - [ 'name' => 'VocusBot', 'id' => 'vocus', 'regexp' => '/VocusBot ([0-9.]*)/u' ], - [ 'name' => 'Vodafone mCrawler', 'id' => 'mcrawler', 'regexp' => '/Vodafone mCrawler/u' ], - [ 'name' => 'W3Bot', 'id' => 'w3bot', 'regexp' => '/W3Bot ([0-9.]*)/u' ], - [ 'name' => 'W3C CSS Validator', 'id' => 'jigsaw', 'regexp' => '/Jigsaw\/([0-9.]*)/u' ], - [ 'name' => 'W3C Internationalization Checker', 'id' => 'w3c', 'regexp' => '/W3C_I18n-Checker\/([0-9.]*)/u' ], - [ 'name' => 'W3C Line Mode', 'id' => 'w3c', 'regexp' => '/W3CLineMode\/([0-9.]*)/u' ], - [ 'name' => 'W3C Link Checker', 'id' => 'w3c', 'regexp' => '/W3C-checklink\/([0-9.]*)/u' ], - [ 'name' => 'W3C Markup Validator', 'id' => 'w3c', 'regexp' => '/W3C_Validator\/([0-9.]*)/u' ], - [ 'name' => 'W3C MobileOK Checker', 'id' => 'w3c', 'regexp' => '/W3C-mobileOK\/DDC-([0-9.]*)/u' ], - [ 'name' => 'W3C Multipage Validator', 'id' => 'w3c', 'regexp' => '/W3C_Multipage_Validator\/([0-9.]*)/u' ], - [ 'name' => 'W3C Robot', 'id' => 'w3c', 'regexp' => '/W3CRobot\/([0-9.]*)/u' ], - [ 'name' => 'W3C Unified Validator', 'id' => 'w3c', 'regexp' => '/W3C_Unicorn\/([0-9.]*)/u' ], - [ 'name' => 'W3C Validator.nu', 'id' => 'validator', 'regexp' => '/Validator.nu\//u' ], - [ 'name' => 'Wayback Archive', 'id' => 'wayback', 'regexp' => '/waybackarchive.org\/([0-9.]*)/u' ], - [ 'name' => 'WebbCrawler', 'id' => 'crawler', 'regexp' => '/WebbCrawler ([0-9.]*)/u' ], - [ 'name' => 'WebIndexer', 'id' => 'webindexer', 'regexp' => '/WebIndexer\//u' ], - [ 'name' => 'WordPress', 'id' => 'wordpress', 'regexp' => '/WordPress\/([0-9.]*)/u' ], - [ 'name' => 'WordPress.com', 'id' => 'wordpress', 'regexp' => '/WordPress\.com; http/u' ], - [ 'name' => 'WordPress Jetpack', 'id' => 'wordpress', 'regexp' => '/Jetpack by WordPress\.com/u' ], - [ 'name' => 'WWW Mechanize', 'id' => 'mechanize', 'regexp' => '/WWW-Mechanize\/([0-9.]*)/u' ], - [ 'name' => 'Xerka WebBot', 'id' => 'xerka', 'regexp' => '/Xerka WebBot v([0-9.]*)/u' ], - [ 'name' => 'XML Sitemaps Generator', 'id' => 'sitemap', 'regexp' => '/XML-Sitemaps\/([0-9.]*)/u' ], - [ 'name' => 'XMLSitemapGenerator', 'id' => 'sitemap', 'regexp' => '/XmlSitemapGenerator/u' ], - [ 'name' => 'YaCy Bot', 'id' => 'yacy', 'regexp' => '/yacy(?:\/|\s|bot)/u' ], - [ 'name' => 'Yandex Anti Virus', 'id' => 'yandex', 'regexp' => '/YandexAntivirus\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Blogs', 'id' => 'yandex', 'regexp' => '/YandexBlogs\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Bot', 'id' => 'yandex', 'regexp' => '/YandexBot\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Direct', 'id' => 'yandex', 'regexp' => '/YandexDirect\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Favicons', 'id' => 'yandex', 'regexp' => '/YandexFavicons\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Image Resizer', 'id' => 'yandex', 'regexp' => '/YandexImageResizer\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Images', 'id' => 'yandex', 'regexp' => '/YandexImages\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Metrika', 'id' => 'yandex', 'regexp' => '/YandexMetrika\/([0-9.]*)/u' ], - [ 'name' => 'Yandex News', 'id' => 'yandex', 'regexp' => '/YandexNews\/([0-9.]*)/u' ], - [ 'name' => 'Yandex Newslinks', 'id' => 'yandex', 'regexp' => '/YandexNewslinks(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Yahoo! Ad Monitoring', 'id' => 'yahoo', 'regexp' => '/Yahoo Ad monitoring/u' ], - [ 'name' => 'Yahoo! Blogs', 'id' => 'yahoo', 'regexp' => '/Yahoo-Blogs\/v([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Cache System', 'id' => 'yahoo', 'regexp' => '/YahooCacheSystem/u' ], - [ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker\/([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker Testing\/([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Image', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMCrawler\/([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Link Expander', 'id' => 'yahoo', 'regexp' => '/Yahoo:LinkExpander/u' ], - [ 'name' => 'Yahoo! Link Preview', 'id' => 'yahoo', 'regexp' => '/Yahoo Link Preview/u' ], - [ 'name' => 'Yahoo! Video', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMAudVid\/([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Mindset', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Mindset/u' ], - [ 'name' => 'Yahoo! Product Search', 'id' => 'yahoo', 'regexp' => '/YahooSeeker\/ProductSearch([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp\/([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp/u' ], - [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker-Testing\/v([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/yahooseeker-jp-mobile/u' ], - [ 'name' => 'Yahoo! Site Checker', 'id' => 'y\!j', 'regexp' => '/Y\!J SiteChecker/u' ], - [ 'name' => 'Yahoo! Pipes', 'id' => 'yahoo', 'regexp' => '/Yahoo Pipes ([0-9.]*)/u' ], - [ 'name' => 'Yahoo! Video Search', 'id' => 'yahoo', 'regexp' => '/YahooVideoSearch/u' ], - [ 'name' => 'Yahoo! Japan', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Japan/u' ], - [ 'name' => 'Yahoo! Japan', 'id' => 'y\!j', 'regexp' => '/(^|\(compatible; )Y\!J-/u' ], + [ 'name' => 'Mixi', 'id' => 'mixi', 'regexp' => '/mixi-check\/([0-9.]*)/u' ], + [ 'name' => 'MnoGoSearch', 'id' => 'mnogo', 'regexp' => '/MnoGoSearch\/([0-9.]*)/u' ], + [ 'name' => 'Monitor.us', 'id' => 'monitor', 'regexp' => '/monitor.us/u' ], + [ 'name' => 'Naver Yeti', 'id' => 'yeti', 'regexp' => '/Yeti\/([0-9.]*)/u' ], + [ 'name' => 'Netcraft Survey Bot', 'id' => 'netcraft', 'regexp' => '/Netcraft Web Server Survey/u' ], + [ 'name' => 'Netvibes', 'id' => 'netvibes', 'regexp' => '/Netvibes/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Favicon Fetcher/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Fetcher/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Feed Finder/u' ], + [ 'name' => 'NewsBlur', 'id' => 'newsblur', 'regexp' => '/NewsBlur Page Fetcher/u' ], + [ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGator\/([0-9.]*)/u' ], + [ 'name' => 'NewsGator', 'id' => 'newsgator', 'regexp' => '/NewsGatorOnline\/([0-9.]*)/u' ], + [ 'name' => 'NewsGator FetchLinks', 'id' => 'newsgator', 'regexp' => '/NewsGator FetchLinks extension\/([0-9.]*)/u' ], + [ 'name' => 'OpenWebSpider', 'id' => 'spider', 'regexp' => '/OpenWebSpider v([0-9.]*)/u' ], + [ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Collector\/([0-9.]*)/u' ], + [ 'name' => 'OrangeBot', 'id' => 'orange', 'regexp' => '/OrangeBot-Mobile/u' ], + [ 'name' => 'PagesInventory ', 'id' => 'pages', 'regexp' => '/PagesInventory/u' ], + [ 'name' => 'Picsearch bot', 'id' => 'psbot', 'regexp' => '/psbot-page/u' ], + [ 'name' => 'Pingdom', 'id' => 'pingdom', 'regexp' => '/Pingdom.com_bot_version_([0-9.]*)/u' ], + [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' => '/Pinterest\/([0-9.]+)( \(+|$)/u' ], + [ 'name' => 'PostRank', 'id' => 'postrank', 'regexp' => '/PostRank\/([0-9.]*)/u' ], + [ 'name' => 'PowerMapper', 'id' => 'crawler', 'regexp' => '/CrawlerProcess \(http:\/\/www\.PowerMapper\.com\) \/([0-9.]*)/u' ], + [ 'name' => 'Radian 6', 'id' => 'feed', 'regexp' => '/R6_FeedFetcher/u' ], + [ 'name' => 'Radian 6', 'id' => 'comment', 'regexp' => '/R6_CommentReader/u' ], + [ 'name' => 'RssBar', 'id' => 'rssbar', 'regexp' => '/RssBar\/([0-9.]*)/u' ], + [ 'name' => 'ROI Hunter', 'id' => 'hunter', 'regexp' => '/ROI Hunter/u' ], + [ 'name' => 'QuerySeekerSpider', 'id' => 'spider', 'regexp' => '/QuerySeekerSpider(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Quora Link Preview', 'id' => 'quora', 'regexp' => '/Quora Link Preview\/([0-9.]*)/u' ], + [ 'name' => 'SafeSearch Microdata', 'id' => 'safesearch', 'regexp' => '/SafeSearch microdata crawler/u' ], + [ 'name' => 'Scrapy', 'id' => 'scrapy', 'regexp' => '/Scrapy\/([0-9.]*)/u' ], + [ 'name' => 'ScreenerBot', 'id' => 'crawler', 'regexp' => '/ScreenerBot Crawler Beta ([0-9.]*)/u' ], + [ 'name' => 'Server Density', 'id' => 'monitor', 'regexp' => '/Server Density Service Monitoring/u' ], + [ 'name' => 'Seznam bot', 'id' => 'seznam', 'regexp' => '/SeznamBot|SklikBot|Seznam screenshot-generator/u' ], + [ 'name' => 'Seznam Email Proxy', 'id' => 'seznam', 'regexp' => '/SeznamEmailProxy/u' ], + [ 'name' => 'Seznam Zbozi.cz', 'id' => 'seznam', 'regexp' => '/Seznam-Zbozi-robot/u' ], + [ 'name' => 'ShopWiki', 'id' => 'shopwiki', 'regexp' => '/ShopWiki\/([0-9.]*)/u' ], + [ 'name' => 'SilverReader', 'id' => 'reader', 'regexp' => '/SilverReader\/([0-9.]*)/u' ], + [ 'name' => 'SimplePie', 'id' => 'simplepie', 'regexp' => '/SimplePie\/([0-9.]*)/u' ], + [ 'name' => 'Site24x7', 'id' => 'site24', 'regexp' => '/Site24x7/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/sogou spider/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou pic spider\/([0-9.]*)/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou inst spider\/([0-9.]*)/u' ], + [ 'name' => 'Sogou Web Spider', 'id' => 'sogou', 'regexp' => '/Sogou web spider\/([0-9.]*)/u' ], + [ 'name' => 'Sogou Mobile Spider', 'id' => 'sogou', 'regexp' => '/Sogou Mobile Spider([0-9.]*)/u' ], + [ 'name' => 'Sophora Linkchecker', 'id' => 'sophora', 'regexp' => '/Sophora Linkchecker/u' ], + [ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider\/([0-9.]*)/u' ], + [ 'name' => 'Soso Web Spider', 'id' => 'soso', 'regexp' => '/Sosospider/u' ], + [ 'name' => 'Soso Image Spider', 'id' => 'soso', 'regexp' => '/Sosoimagespider/u' ], + [ 'name' => 'SPDYCheck', 'id' => 'spdycheck', 'regexp' => '/SPDYCheck SPDY Protocol Tester/iu' ], + [ 'name' => 'Spinn3r', 'id' => 'spinn', 'regexp' => '/Spinn3r ([0-9.]*)/iu' ], + [ 'name' => 'Spiderlytics', 'id' => 'spider', 'regexp' => '/Spiderlytics\/([0-9.]*)/iu' ], + [ 'name' => 'StatusCake Error Detector', 'id' => 'detector', 'regexp' => '/StatusCake Error Detector/iu' ], + [ 'name' => 'Summify', 'id' => 'summify', 'regexp' => '/Summify\/([0-9.]*)/u' ], + [ 'name' => 'TelegramBot', 'id' => 'telegram', 'regexp' => '/TelegramBot/u' ], + [ 'name' => 'Twisted PageGetter', 'id' => 'twisted', 'regexp' => '/Twisted PageGetter/u' ], + [ 'name' => 'Twitterbot', 'id' => 'twitter', 'regexp' => '/Twitterbot\/([0-9.]*)/u' ], + [ 'name' => 'Tiny Tiny RSS', 'id' => 'tiny', 'regexp' => '/Tiny Tiny RSS\/([0-9.]*)/u' ], + [ 'name' => 'TLSProber', 'id' => 'tlsprober', 'regexp' => '/TLSProber\/([0-9.]*)/u' ], + [ 'name' => 'Typhoeus', 'id' => 'typhoeus', 'regexp' => '/Typhoeus/u' ], + [ 'name' => 'Vagabondo', 'id' => 'vagabondo', 'regexp' => '/Vagabondo\/([0-9.]*)/u' ], + [ 'name' => 'Voilabot', 'id' => 'voila', 'regexp' => '/Voila[Bb]ot/u' ], + [ 'name' => 'VocusBot', 'id' => 'vocus', 'regexp' => '/VocusBot ([0-9.]*)/u' ], + [ 'name' => 'Vodafone mCrawler', 'id' => 'mcrawler', 'regexp' => '/Vodafone mCrawler/u' ], + [ 'name' => 'W3Bot', 'id' => 'w3bot', 'regexp' => '/W3Bot ([0-9.]*)/u' ], + [ 'name' => 'W3C CSS Validator', 'id' => 'jigsaw', 'regexp' => '/Jigsaw\/([0-9.]*)/u' ], + [ 'name' => 'W3C Internationalization Checker', 'id' => 'w3c', 'regexp' => '/W3C_I18n-Checker\/([0-9.]*)/u' ], + [ 'name' => 'W3C Line Mode', 'id' => 'w3c', 'regexp' => '/W3CLineMode\/([0-9.]*)/u' ], + [ 'name' => 'W3C Link Checker', 'id' => 'w3c', 'regexp' => '/W3C-checklink\/([0-9.]*)/u' ], + [ 'name' => 'W3C Markup Validator', 'id' => 'w3c', 'regexp' => '/W3C_Validator\/([0-9.]*)/u' ], + [ 'name' => 'W3C MobileOK Checker', 'id' => 'w3c', 'regexp' => '/W3C-mobileOK\/DDC-([0-9.]*)/u' ], + [ 'name' => 'W3C Multipage Validator', 'id' => 'w3c', 'regexp' => '/W3C_Multipage_Validator\/([0-9.]*)/u' ], + [ 'name' => 'W3C Robot', 'id' => 'w3c', 'regexp' => '/W3CRobot\/([0-9.]*)/u' ], + [ 'name' => 'W3C Unified Validator', 'id' => 'w3c', 'regexp' => '/W3C_Unicorn\/([0-9.]*)/u' ], + [ 'name' => 'W3C Validator.nu', 'id' => 'validator', 'regexp' => '/Validator.nu\//u' ], + [ 'name' => 'Wayback Archive', 'id' => 'wayback', 'regexp' => '/waybackarchive.org\/([0-9.]*)/u' ], + [ 'name' => 'WebbCrawler', 'id' => 'crawler', 'regexp' => '/WebbCrawler ([0-9.]*)/u' ], + [ 'name' => 'WebIndexer', 'id' => 'webindexer', 'regexp' => '/WebIndexer\//u' ], + [ 'name' => 'WordPress', 'id' => 'wordpress', 'regexp' => '/WordPress\/([0-9.]*)/u' ], + [ 'name' => 'WordPress.com', 'id' => 'wordpress', 'regexp' => '/WordPress\.com; http/u' ], + [ 'name' => 'WordPress Jetpack', 'id' => 'wordpress', 'regexp' => '/Jetpack by WordPress\.com/u' ], + [ 'name' => 'WWW Mechanize', 'id' => 'mechanize', 'regexp' => '/WWW-Mechanize\/([0-9.]*)/u' ], + [ 'name' => 'Xerka WebBot', 'id' => 'xerka', 'regexp' => '/Xerka WebBot v([0-9.]*)/u' ], + [ 'name' => 'XML Sitemaps Generator', 'id' => 'sitemap', 'regexp' => '/XML-Sitemaps\/([0-9.]*)/u' ], + [ 'name' => 'XMLSitemapGenerator', 'id' => 'sitemap', 'regexp' => '/XmlSitemapGenerator/u' ], + [ 'name' => 'YaCy Bot', 'id' => 'yacy', 'regexp' => '/yacy(?:\/|\s|bot)/u' ], + [ 'name' => 'Yandex Anti Virus', 'id' => 'yandex', 'regexp' => '/YandexAntivirus\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Blogs', 'id' => 'yandex', 'regexp' => '/YandexBlogs\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Bot', 'id' => 'yandex', 'regexp' => '/YandexBot\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Direct', 'id' => 'yandex', 'regexp' => '/YandexDirect\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Favicons', 'id' => 'yandex', 'regexp' => '/YandexFavicons\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Image Resizer', 'id' => 'yandex', 'regexp' => '/YandexImageResizer\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Images', 'id' => 'yandex', 'regexp' => '/YandexImages\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Metrika', 'id' => 'yandex', 'regexp' => '/YandexMetrika\/([0-9.]*)/u' ], + [ 'name' => 'Yandex News', 'id' => 'yandex', 'regexp' => '/YandexNews\/([0-9.]*)/u' ], + [ 'name' => 'Yandex Newslinks', 'id' => 'yandex', 'regexp' => '/YandexNewslinks(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Yahoo! Ad Monitoring', 'id' => 'yahoo', 'regexp' => '/Yahoo Ad monitoring/u' ], + [ 'name' => 'Yahoo! Blogs', 'id' => 'yahoo', 'regexp' => '/Yahoo-Blogs\/v([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Cache System', 'id' => 'yahoo', 'regexp' => '/YahooCacheSystem/u' ], + [ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Feed Seeker', 'id' => 'yahoo', 'regexp' => '/YahooFeedSeeker Testing\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Image', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMCrawler\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Link Expander', 'id' => 'yahoo', 'regexp' => '/Yahoo:LinkExpander/u' ], + [ 'name' => 'Yahoo! Link Preview', 'id' => 'yahoo', 'regexp' => '/Yahoo Link Preview/u' ], + [ 'name' => 'Yahoo! Video', 'id' => 'yahoo', 'regexp' => '/Yahoo-MMAudVid\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Mindset', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Mindset/u' ], + [ 'name' => 'Yahoo! Product Search', 'id' => 'yahoo', 'regexp' => '/YahooSeeker\/ProductSearch([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Slurp', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Slurp/u' ], + [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/YahooSeeker-Testing\/v([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Seeker', 'id' => 'yahoo', 'regexp' => '/yahooseeker-jp-mobile/u' ], + [ 'name' => 'Yahoo! Site Checker', 'id' => 'y\!j', 'regexp' => '/Y\!J SiteChecker/u' ], + [ 'name' => 'Yahoo! Pipes', 'id' => 'yahoo', 'regexp' => '/Yahoo Pipes ([0-9.]*)/u' ], + [ 'name' => 'Yahoo! Video Search', 'id' => 'yahoo', 'regexp' => '/YahooVideoSearch/u' ], + [ 'name' => 'Yahoo! Japan', 'id' => 'yahoo', 'regexp' => '/Yahoo\! Japan/u' ], + [ 'name' => 'Yahoo! Japan', 'id' => 'y\!j', 'regexp' => '/(^|\(compatible; )Y\!J-/u' ], - [ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\/([0-9.]*)/u' ], - [ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\.so\/([0-9.]*)/u' ], + [ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\/([0-9.]*)/u' ], + [ 'name' => 'Inktomi Slurp', 'id' => 'slurp', 'regexp' => '/Slurp\.so\/([0-9.]*)/u' ], /* Generic bots */ - [ 'name' => 'Apache Httpd', 'id' => 'httpclient', 'regexp' => '/Apache-HttpClient(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Apache Jakarta', 'id' => 'httpclient', 'regexp' => '/Jakarta Commons-HttpClient(?:\/([0-9.]*))?/u' ], - [ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/\/Nutch-([0-9.]*)/u' ], - [ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/Nutch(?:CVS|Org)\/([0-9.]*)/u' ], - [ 'name' => 'Apache Synapse', 'id' => 'synapse', 'regexp' => '/compatible; Synapse/u' ], - [ 'name' => 'Borland Delphi', 'id' => 'indy', 'regexp' => '/Indy Library/u' ], - [ 'name' => 'Wget', 'id' => 'wget', 'regexp' => '/Wget\/([0-9.]*)/u' ], - [ 'name' => 'Curl', 'id' => 'curl', 'regexp' => '/^curl\/([0-9.]*)/u' ], + [ 'name' => 'Apache Httpd', 'id' => 'httpclient', 'regexp' => '/Apache-HttpClient(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Apache Jakarta', 'id' => 'httpclient', 'regexp' => '/Jakarta Commons-HttpClient(?:\/([0-9.]*))?/u' ], + [ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/\/Nutch-([0-9.]*)/u' ], + [ 'name' => 'Apache Nutch', 'id' => 'nutch', 'regexp' => '/Nutch(?:CVS|Org)\/([0-9.]*)/u' ], + [ 'name' => 'Apache Synapse', 'id' => 'synapse', 'regexp' => '/compatible; Synapse/u' ], + [ 'name' => 'Borland Delphi', 'id' => 'indy', 'regexp' => '/Indy Library/u' ], + [ 'name' => 'Wget', 'id' => 'wget', 'regexp' => '/Wget\/([0-9.]*)/u' ], + [ 'name' => 'Curl', 'id' => 'curl', 'regexp' => '/^curl\/([0-9.]*)/u' ], - [ 'name' => 'Go', 'id' => 'package', 'regexp' => '/Go [0-9\.]+ package http/u' ], - [ 'name' => 'Java', 'id' => 'java', 'regexp' => '/^Java\/([0-9.]*)/u' ], - [ 'name' => 'Perl', 'id' => 'simple', 'regexp' => '/LWP::Simple\//u' ], - [ 'name' => 'Perl', 'id' => 'libwww', 'regexp' => '/libwww-perl\//u' ], - [ 'name' => 'Perl', 'id' => 'lwp', 'regexp' => '/lwp-trivial\//u' ], - [ 'name' => 'Python', 'id' => 'urllib', 'regexp' => '/Python-urllib\/([0-9.]*)/u' ], - [ 'name' => 'Python', 'id' => 'requests', 'regexp' => '/python-requests\/([0-9.]*)/u' ], - [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/ PHP\/([0-9.]*)/u' ], - [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/^PHP/u' ], - [ 'name' => 'PHP', 'id' => 'pear', 'regexp' => '/PEAR HTTP_Request class/u' ], - [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/CakePHP/u' ], - [ 'name' => 'PHP', 'id' => 'zend', 'regexp' => '/Zend_Http_Client/u' ], - [ 'name' => 'Ruby', 'id' => 'ruby', 'regexp' => '/^Ruby/u' ], + [ 'name' => 'Go', 'id' => 'package', 'regexp' => '/Go [0-9\.]+ package http/u' ], + [ 'name' => 'Java', 'id' => 'java', 'regexp' => '/^Java\/([0-9.]*)/u' ], + [ 'name' => 'Perl', 'id' => 'simple', 'regexp' => '/LWP::Simple\//u' ], + [ 'name' => 'Perl', 'id' => 'libwww', 'regexp' => '/libwww-perl\//u' ], + [ 'name' => 'Perl', 'id' => 'lwp', 'regexp' => '/lwp-trivial\//u' ], + [ 'name' => 'Python', 'id' => 'urllib', 'regexp' => '/Python-urllib\/([0-9.]*)/u' ], + [ 'name' => 'Python', 'id' => 'requests', 'regexp' => '/python-requests\/([0-9.]*)/u' ], + [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/ PHP\/([0-9.]*)/u' ], + [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/^PHP/u' ], + [ 'name' => 'PHP', 'id' => 'pear', 'regexp' => '/PEAR HTTP_Request class/u' ], + [ 'name' => 'PHP', 'id' => 'php', 'regexp' => '/CakePHP/u' ], + [ 'name' => 'PHP', 'id' => 'zend', 'regexp' => '/Zend_Http_Client/u' ], + [ 'name' => 'Ruby', 'id' => 'ruby', 'regexp' => '/^Ruby/u' ], ]; diff --git a/data/applications-browsers.php b/data/applications-browsers.php index 80f42743a..fa1638660 100644 --- a/data/applications-browsers.php +++ b/data/applications-browsers.php @@ -9,247 +9,367 @@ Constants\BrowserType::BROWSER => [ /* Desktop browsers */ - [ 'name' => '115 Browser', 'id' => '115', 'regexp' =>'/115Browser\/([0-9.]*)/u' ], - [ 'name' => '115 Chrome', 'id' => '115', 'regexp' =>'/115Chrome\/([0-9.]*)/u' ], - [ 'name' => '126 Browser', 'id' => '126', 'regexp' =>'/126BROWSER/u' ], - [ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' =>'/2345Explorer\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' =>'/2345Explorer v([0-9.]*)/u', 'details' => 3 ], - [ 'name' => '2345 Chrome', 'id' => '2345', 'regexp' =>'/2345chrome v([0-9.]*)/u', 'details' => 3 ], - [ 'name' => '360 Extreme Explorer', 'id' => 'qihu', 'regexp' =>'/QIHU 360EE/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => '360 Safe Explorer', 'id' => 'qihu', 'regexp' =>'/QIHU 360SE/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => '7Star', 'id' => '7star', 'regexp' =>'/7Star\/([0-9.]*)/u' ], // see: http://www.qixing123.com - [ 'name' => 'ABrowse', 'id' => 'abrowse', 'regexp' =>'/A[Bb]rowse ([0-9.]*)/u' ], // browser for the Syllable OS - [ 'name' => 'Abrowser', 'id' => 'abrowse', 'regexp' =>'/Abrowser\/([0-9.]*)/u' ], // unbranded version of Firefox - [ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' =>'/Acorn Browse ([0-9.]+)/u' ], - [ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' =>'/Acorn Phoenix ([0-9.]+)/u' ], - [ 'name' => 'Acoo Browser', 'id' => 'acoo', 'regexp' =>'/Acoo Browser/u' ], - [ 'name' => 'AOL Desktop', 'id' => 'aol', 'regexp' =>'/AOL ([0-9.]*); AOLBuild/i' ], - [ 'name' => 'AOL Browser', 'id' => 'america', 'regexp' =>'/America Online Browser (?:[0-9.]*); rev([0-9.]*);/i' ], - [ 'name' => 'Arachne', 'id' => 'arachne', 'regexp' =>'/xChaos_Arachne\/[0-9]\.([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: www.glennmcc.org - [ 'name' => 'Arora', 'id' => 'arora', 'regexp' =>'/[Aa]rora\/([0-9.]*)/u' ], // see: www.arora-browser.org - [ 'name' => 'AWeb', 'id' => 'aweb', 'regexp' =>'/Amiga-AWeb(?:\/([0-9.]*))?/u' ], - [ 'name' => 'AvantGo', 'id' => 'avant', 'regexp' =>'/AvantGo ([0-9.]+)/u' ], - [ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' =>'/Avant Browser/u' ], - [ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' =>'/Avant TriCore/u' ], - [ 'name' => 'Avast SafeZone', 'id' => 'asw', 'regexp' =>'/ASW\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Aviator', 'id' => 'aviator', 'regexp' =>'/Aviator\/([0-9.]*)/u', 'details' => 1 ], // see: https://github.com/WhiteHatSecurity/Aviator - [ 'name' => 'Baidu Browser', 'id' => 'flyflow', 'regexp' =>'/FlyFlow\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' =>'/bdbrowser\/([0-9.]*)/i' ], - [ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' =>'/bdbrowser_i18n\/([0-9.]*)/i' ], - [ 'name' => 'Baidu Spark', 'id' => 'bdspark', 'regexp' =>'/BDSpark\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Beamrise', 'id' => 'beamrise', 'regexp' =>'/Beamrise\/([0-9.]*)/u' ], // see: http://beamrise.com - [ 'name' => 'Black Wren', 'id' => 'blackwren', 'regexp' =>'/BlackWren\/([0-9.]*)/u', 'details' => 2 ], // see: https://github.com/conmarap/jetbrowser - [ 'name' => 'Brave', 'id' => 'brave', 'regexp' =>'/brave\/([0-9.]*)/u' ], - [ 'name' => 'Byffox', 'id' => 'byffox', 'regexp' =>'/Byffox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Camino', 'id' => 'camino', 'regexp' =>'/Camino\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Canure', 'id' => 'canure', 'regexp' =>'/Canure\/([0-9.]*)/u', 'details' => 3 ], // see: http://canure.weebly.com/index.html - [ 'name' => 'Charon', 'id' => 'charon', 'regexp' =>'/Charon/' ], // see: http://www.vitanuova.com/inferno/man/1/charon.html - [ 'name' => 'ChromePlus', 'id' => 'chromeplus', 'regexp' =>'/ChromePlus(?:\/([0-9.]*))?$/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'CometBird', 'id' => 'cometbird', 'regexp' =>'/CometBird\/([0-9.]*)/u' ], // see: http://www.cometbird.com - [ 'name' => 'Comodo Dragon', 'id' => 'comodo', 'regexp' =>'/Comodo_Dragon\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Comodo Dragon', 'id' => 'dragon', 'regexp' =>'/Dragon\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Comodo IceDragon', 'id' => 'dragon', 'regexp' =>'/IceDragon\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Conkeror', 'id' => 'conkeror', 'regexp' =>'/[Cc]onkeror\/([0-9.]*)/u' ], - [ 'name' => 'CoolNovo', 'id' => 'coolnovo', 'regexp' =>'/(?:CoolNovo|CoolNovoChromePlus)\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Cunaguaro', 'id' => 'cunaguaro', 'regexp' =>'/Cunaguaro\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Cyberfox', 'id' => 'cyberfox', 'regexp' =>'/Cyberfox\/([0-9.]*)/u', 'details' => 2 ], // see: https://cyberfox.8pecxstudios.com - [ 'name' => 'Daedalus', 'id' => 'daedalus', 'regexp' =>'/Daedalus ([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Dillo', 'id' => 'dillo', 'regexp' =>'/Dillo\/([0-9.]*)/u' ], // see: http://www.dillo.org - [ 'name' => 'Doga Rhodonit', 'id' => 'rhodonit', 'regexp' =>'/DogaRhodonit/u' ], - [ 'name' => 'EudoraWeb', 'id' => 'eudoraweb', 'regexp' =>'/EudoraWeb ([0-9.]*)/u' ], - [ 'name' => 'Flock', 'id' => 'flock', 'regexp' =>'/Flock\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Galeon', 'id' => 'galeon', 'regexp' =>'/Galeon\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'GNOME Web', 'id' => 'epiphany', 'regexp' =>'/Epiphany\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'IBrowse', 'id' => 'ibrowse', 'regexp' =>'/IBrowse[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'iCab', 'id' => 'icab', 'regexp' =>'/iCab(?: J)?[\/ ](?:Pre)?([0-9.]*)/u' ], - [ 'name' => 'Iceape', 'id' => 'iceape', 'regexp' =>'/Iceape\/([0-9.]*)/u' ], - [ 'name' => 'IceCat', 'id' => 'icecat', 'regexp' =>'/IceCat[ \/]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.gnu.org/software/gnuzilla/ - [ 'name' => 'Iceweasel', 'id' => 'iceweasel', 'regexp' =>'/Iceweasel\/([0-9.]*)/iu', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Iridium', 'id' => 'iridium', 'regexp' =>'/Iridium\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php - [ 'name' => 'Iron', 'id' => 'iron', 'regexp' =>'/Iron\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php - [ 'name' => 'Kazehakase', 'id' => 'kazehakase', 'regexp' =>'/Kazehakase\/([0-9.]*)/u' ], // see: http://kazehakase.osdn.jp - [ 'name' => 'KChrome', 'id' => 'kchrome', 'regexp' =>'/KChrome\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.kchrome.com - [ 'name' => 'K-Meleon', 'id' => 'meleon', 'regexp' =>'/K-Meleon\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://kmeleonbrowser.org - [ 'name' => 'LieBao', 'id' => 'lbbrowser', 'regexp' =>'/LBBROWSER/u' ], // see: http://www.liebao.cn - [ 'name' => 'Lobo', 'id' => 'lobo', 'regexp' =>'/Lobo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://sourceforge.net/projects/xamj/files/Lobo%20Browser/ - [ 'name' => 'Lunascape', 'id' => 'lunascape', 'regexp' =>'/ Lunascape[\/| ]([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv - [ 'name' => 'Naenara', 'id' => 'naenara', 'regexp' =>'/NaenaraBrowser\/([0-9.]*)/u', 'details' => 2 ], // Firefox based browser used with Red Star OS - [ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' =>'/MxBrowser\/([0-9.]*)/u' ], - [ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' =>'/MxBrowser-iPhone\/([0-9.]*)/u' ], - [ 'name' => 'MixShark', 'id' => 'mixshark', 'regexp' =>'/MixShark\/([0-9.]*)/u' ], // see: http://terbaddo.free.fr/mixshark.php - [ 'name' => 'mlbrowser', 'id' => 'mlbrowser', 'regexp' =>'/mlbrowser/u' ], // see: https://github.com/Topguy/mlbrowser - [ 'name' => 'NetPositive', 'id' => 'netpositive', 'regexp' =>'/NetPositive\/([0-9.]*)/u' ], - [ 'name' => 'Origyn', 'id' => 'origyn', 'regexp' =>'/Origyn Web Browser/u' ], - [ 'name' => 'Odyssey', 'id' => 'owb', 'regexp' =>'/OWB\/([0-9.]*)/u' ], - [ 'name' => 'Orca', 'id' => 'orca', 'regexp' =>'/Orca\/([0-9.]*)/u' ], - [ 'name' => 'Oregano', 'id' => 'oregano', 'regexp' =>'/Oregano ([0-9.]*)/u' ], // see: http://www.xat.nl/en/riscos/sw/oregano/ - [ 'name' => 'Otter', 'id' => 'otter', 'regexp' =>'/Otter(?: Browser)?\/([0-9.]*)/u' ], // see: https://otter-browser.org - [ 'name' => 'Pale Moon', 'id' => 'palemoon', 'regexp' =>'/Pale[mM]oon\/([0-9.]*)/u' ], // see: https://www.palemoon.org - [ 'name' => 'Qihoo 360', 'id' => 'qihu', 'regexp' =>'/QIHU THEWORLD/u' ], - [ 'name' => 'QtWeb', 'id' => 'qtweb', 'regexp' =>'/QtWeb Internet Browser\/([0-9.]*)/u' ], - [ 'name' => 'QupZilla', 'id' => 'qupzilla', 'regexp' =>'/QupZilla\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'rekonq', 'id' => 'rekonq', 'regexp' =>'/rekonq(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Ryouko', 'id' => 'ryouko', 'regexp' =>'/Ryouko\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/foxhead128/ryouko - [ 'name' => 'SaaYaa Explorer', 'id' => 'saayaa', 'regexp' =>'/SaaYaa/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Sleipnir', 'id' => 'sleipnir', 'regexp' =>'/Sleipnir\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Sogou Explorer', 'id' => 'metasr', 'regexp' =>'/SE 2.X MetaSr/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Stainless', 'id' => 'stainless', 'regexp' =>'/Stainless\/([0-9.]*)/u' ], // see: http://www.stainlessapp.com - [ 'name' => 'SunChrome', 'id' => 'sunchrome', 'regexp' =>'/SunChrome\/([0-9.]*)/u' ], - [ 'name' => 'Superbird', 'id' => 'superbird', 'regexp' =>'/Super[Bb]ird\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' =>'/Swing(?:\(And\))?\/([0-9.]*)/u', 'details' => 3 ], // see: http://swing-browser.com - [ 'name' => 'Tencent Traveler', 'id' => 'tencent', 'regexp' =>'/TencentTraveler ([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'TenFourFox', 'id' => 'tenfourfox', 'regexp' =>'/TenFourFox\//u' ], - [ 'name' => 'The World', 'id' => 'theworld', 'regexp' =>'/TheWorld(?: ([0-9.]*))?/u' ], - [ 'name' => 'Tungsten Browser', 'id' => 'tungsten', 'regexp' =>'/TungstenBrowser\/([0-9.]*)/u' ], - [ 'name' => 'Vivaldi', 'id' => 'vivaldi', 'regexp' =>'/Vivaldi\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Voyager', 'id' => 'voyager', 'regexp' =>'/AmigaVoyager\/([0-9.]*)/u' ], - [ 'name' => 'Waterfox', 'id' => 'waterfox', 'regexp' =>'/Waterfox\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Yandex Browser', 'id' => 'yabrowser', 'regexp' =>'/YaBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => '115 Browser', 'id' => '115', 'regexp' => '/115Browser\/([0-9.]*)/u' ], + [ 'name' => '115 Chrome', 'id' => '115', 'regexp' => '/115Chrome\/([0-9.]*)/u' ], + [ 'name' => '126 Browser', 'id' => '126', 'regexp' => '/126BROWSER/u' ], + [ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' => '/2345Explorer\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '2345 Explorer', 'id' => '2345', 'regexp' => '/2345Explorer v([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '2345 Chrome', 'id' => '2345', 'regexp' => '/2345chrome v([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '37abc Browser', 'id' => '37abc', 'regexp' => '/ 37abc\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => '360 Extreme Explorer', 'id' => 'qihu', 'regexp' => '/QIHU 360EE/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => '360 Safe Explorer', 'id' => 'qihu', 'regexp' => '/QIHU 360SE/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => '1st Browser', 'id' => '1stbrowser', 'regexp' => '/1stBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => '7Star', 'id' => '7star', 'regexp' => '/7Star\/([0-9.]*)/u' ], // see: http://www.qixing123.com + [ 'name' => 'ABrowse', 'id' => 'abrowse', 'regexp' => '/A[Bb]rowse ([0-9.]*)/u' ], // browser for the Syllable OS + [ 'name' => 'Abrowser', 'id' => 'abrowse', 'regexp' => '/Abrowser\/([0-9.]*)/u' ], // unbranded version of Firefox + [ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' => '/Acorn Browse ([0-9.]+)/u' ], + [ 'name' => 'Acorn Browse', 'id' => 'acorn', 'regexp' => '/Acorn Phoenix ([0-9.]+)/u' ], + [ 'name' => 'Acoo Browser', 'id' => 'acoo', 'regexp' => '/Acoo Browser/u' ], + [ 'name' => 'Adventurer', 'id' => 'adventurer', 'regexp' => '/[Aa]dventurer\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Alienforce', 'id' => 'alienforce', 'regexp' => '/Alienforce([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://sourceforge.net/projects/alienforce/ + [ 'name' => 'Alienforce', 'id' => 'alienforce', 'regexp' => '/Alienforce\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Amigo Browser', 'id' => 'amigo', 'regexp' => '/ Amigo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://amigo.mail.ru/ + [ 'name' => 'AOL Desktop', 'id' => 'aol', 'regexp' => '/AOL ([0-9.]*); AOLBuild/i' ], + [ 'name' => 'AOL Desktop', 'id' => 'aol', 'regexp' => '/ AOLBUILD\/([0-9.]*)/i', 'type' => Constants\DeviceType::DESKTOP ], // see: https://discover.aol.com/products-and-services/aol-desktop-for-windows + [ 'name' => 'AOL Browser', 'id' => 'america', 'regexp' => '/America Online Browser (?:[0-9.]*); rev([0-9.]*);/i' ], + [ 'name' => 'AOL Shield', 'id' => 'aolshield', 'regexp' => '/ AOLShield\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://discover.aol.com/products-and-services/aol-shield-browser + [ 'name' => 'APUS Browser', 'id' => 'apus', 'regexp' => '/APUSBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.apusapps.com/en/browser/ + [ 'name' => 'Arachne', 'id' => 'arachne', 'regexp' => '/xChaos_Arachne\/[0-9]\.([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: www.glennmcc.org + [ 'name' => 'Arctic Fox', 'id' => 'arcfox', 'regexp' => '/ArcticFox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/wicknix/Arctic-Fox + [ 'name' => 'Arora', 'id' => 'arora', 'regexp' => '/[Aa]rora\/([0-9.]*)/u' ], // see: www.arora-browser.org + [ 'name' => 'AWeb', 'id' => 'aweb', 'regexp' => '/Amiga-AWeb(?:\/([0-9.]*))?/u' ], + [ 'name' => 'AvantGo', 'id' => 'avant', 'regexp' => '/AvantGo ([0-9.]+)/u' ], + [ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' => '/Avant Browser/u' ], + [ 'name' => 'Avant Browser', 'id' => 'avant', 'regexp' => '/Avant TriCore/u' ], + [ 'name' => 'Avast SafeZone', 'id' => 'asw', 'regexp' => '/ASW\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Avast Secure Browser', 'id' => 'aventsec', 'regexp' => '/ Secure\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.avast.com/secure-browser#pc + [ 'name' => 'Aviator', 'id' => 'aviator', 'regexp' => '/Aviator\/([0-9.]*)/u', 'details' => 1 ], // see: https://github.com/WhiteHatSecurity/Aviator + [ 'name' => 'Avira Scout', 'id' => 'avira', 'regexp' => '/AviraScout\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.avira.com/en/avira-scout + [ 'name' => 'Baidu Browser', 'id' => 'flyflow', 'regexp' => '/FlyFlow\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' => '/bdbrowser\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'bdbrowser', 'regexp' => '/bdbrowser_i18n\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Spark', 'id' => 'bdspark', 'regexp' => '/BDSpark\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Baidu Spark', 'id' => 'bdspark', 'regexp' => '/ Spark\/([0-9]*)/u', 'details' => 2 ], + [ 'name' => 'Basilisk', 'id' => 'basilisk', 'regexp' => '/ Basilisk\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://basilisk-browser.org/ + [ 'name' => 'Beamrise', 'id' => 'beamrise', 'regexp' => '/Beamrise\/([0-9.]*)/u' ], // see: http://beamrise.com + [ 'name' => 'Black Wren', 'id' => 'blackwren', 'regexp' => '/BlackWren\/([0-9.]*)/u', 'details' => 2 ], // see: https://github.com/conmarap/jetbrowser + [ 'name' => 'Black Hawk', 'id' => 'blackhawk', 'regexp' => '/ BlackHawk\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.netgate.sk/blackhawk/help/welcome-to-blackhawk-web-browser.html + [ 'name' => 'Bolt Browser', 'id' => 'bolt', 'regexp' => '/ Bolt\/([0-9.]*)/i', 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.boltbrowser.com/ + [ 'name' => 'Brave', 'id' => 'brave', 'regexp' => '/brave\/([0-9.]*)/u' ], + [ 'name' => 'Brisk Bard', 'id' => 'brisk', 'regexp' => '/BriskBard\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.briskbard.com/index.php?lang=en + [ 'name' => 'BrowseX', 'id' => 'browsex', 'regexp' => '/BrowseX \(([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://dev.pdqi.com/fossil/browsex/doc/tip/index.html + [ 'name' => 'Browzar', 'id' => 'browzar', 'regexp' => '/Browzar/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://browzar.com/ + [ 'name' => 'Byffox', 'id' => 'byffox', 'regexp' => '/Byffox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Camino', 'id' => 'camino', 'regexp' => '/Camino\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Canure', 'id' => 'canure', 'regexp' => '/Canure\/([0-9.]*)/u', 'details' => 3 ], // see: http://canure.weebly.com/index.html + [ 'name' => 'CCleaner Browser', 'id' => 'ccleaner', 'regexp' => '/CCleaner\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.ccleaner.com/ccleaner/browser + [ 'name' => 'Cent Browser', 'id' => 'cent', 'regexp' => '/ Cent\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.centbrowser.com/ + [ 'name' => 'Charon', 'id' => 'charon', 'regexp' => '/Charon/' ], // see: http://www.vitanuova.com/inferno/man/1/charon.html + [ 'name' => 'Chedot', 'id' => 'chedot', 'regexp' => '/ Chedot\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://landing.chedot.com/ + [ 'name' => 'Cheshire', 'id' => 'cheshire', 'regexp' => '/ Cheshire\/([0-9.A-Z]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Chimera', 'id' => 'chimera', 'regexp' => '/ Chimera\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Chim Lac', 'id' => 'chimlac', 'regexp' => '/chimlac_browser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://chimlac.com.vn/ + [ 'name' => 'ChromePlus', 'id' => 'chromeplus', 'regexp' => '/ChromePlus(?:\/([0-9.]*))?$/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Classilla Browser', 'id' => 'classilla', 'regexp' => '/Classilla\/([0-9.A-Z]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.floodgap.com/software/classilla/ + [ 'name' => 'CometBird', 'id' => 'cometbird', 'regexp' => '/CometBird\/([0-9.]*)/u' ], // see: http://www.cometbird.com + [ 'name' => 'Comodo Dragon', 'id' => 'comodo', 'regexp' => '/Comodo_Dragon\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Comodo Dragon', 'id' => 'dragon', 'regexp' => '/Dragon\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Comodo IceDragon', 'id' => 'dragon', 'regexp' => '/IceDragon\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Conkeror', 'id' => 'conkeror', 'regexp' => '/[Cc]onkeror\/([0-9.]*)/u' ], + [ 'name' => 'Coc Coc', 'id' => 'coocoo', 'regexp' => '/coc_coc_browser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://coccoc.com/en/ + [ 'name' => 'Colibri', 'id' => 'colibri', 'regexp' => '/Colibri\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://colibri.opqr.co/ + [ 'name' => 'CoolNovo', 'id' => 'coolnovo', 'regexp' => '/(?:CoolNovo|CoolNovoChromePlus)\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Crazy Browser', 'id' => 'crazy', 'regexp' => '/Crazy Browser ([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Cunaguaro', 'id' => 'cunaguaro', 'regexp' => '/Cunaguaro\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Cyberfox', 'id' => 'cyberfox', 'regexp' => '/Cyberfox\/([0-9.]*)/u', 'details' => 2 ], // see: https://cyberfox.8pecxstudios.com + [ 'name' => 'Daedalus', 'id' => 'daedalus', 'regexp' => '/Daedalus ([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Deg-degan', 'id' => 'degan', 'regexp' => '/Degdegan\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Deepnet Explorer', 'id' => 'deepexpl', 'regexp' => '/Deepnet Explorer ([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Dillo', 'id' => 'dillo', 'regexp' => '/Dillo\/([0-9.]*)/u' ], // see: http://www.dillo.org + [ 'name' => 'Doga Rhodonit', 'id' => 'rhodonit', 'regexp' => '/DogaRhodonit/u' ], + [ 'name' => 'Element Browser', 'id' => 'element', 'regexp' => '/Element Browser ([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Elements Browser', 'id' => 'elements', 'regexp' => '/Elements Browser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'EudoraWeb', 'id' => 'eudoraweb', 'regexp' => '/EudoraWeb ([0-9.]*)/u' ], + [ 'name' => 'Falkon', 'id' => 'falkon', 'regexp' => '/ Falkon\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.falkon.org/ + [ 'name' => 'FlameSky', 'id' => 'flamesky', 'regexp' => '/FlameSky\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/flameskyofficial/flamesky + [ 'name' => 'Flock', 'id' => 'flock', 'regexp' => '/Flock\/([0-9.]*)/u', 'details' => 3, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Framafox', 'id' => 'framafox', 'regexp' => '/Framafox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://framakey.org/telecharger/applications-portables-libres#internet + [ 'name' => 'Freeu Browser', 'id' => 'freeu', 'regexp' => '/ Free[Uu]\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://play.google.com/store/apps/details?id=com.freeuvpn.android&hl=en + [ 'name' => 'Galeon', 'id' => 'galeon', 'regexp' => '/Galeon\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'GNOME Web', 'id' => 'epiphany', 'regexp' => '/Epiphany\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Headless Chrome', 'id' => 'headless', 'regexp' => '/HeadlessChrome\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md + [ 'name' => 'Hola Browser', 'id' => 'hola', 'regexp' => '/ Hola\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://play.google.com/store/apps/details?id=org.hola&hl=en + [ 'name' => 'Hv3 Browser', 'id' => 'hv3', 'regexp' => '/ Hv3\/([0-9.a-z]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://tkhtml.tcl.tk/hv3.html + [ 'name' => 'IBrowse', 'id' => 'ibrowse', 'regexp' => '/IBrowse[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'iCab', 'id' => 'icab', 'regexp' => '/iCab(?: J)?[\/ ](?:Pre)?([0-9.]*)/u' ], + [ 'name' => 'ICE Browser', 'id' => 'icebrow', 'regexp' => '/ICEbrowser\/v([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.icesoft.org/java/home.jsf + [ 'name' => 'ICE Browser', 'id' => 'icebrow', 'regexp' => '/ICE Browser\/v([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Iceape', 'id' => 'iceape', 'regexp' => '/Iceape\/([0-9.]*)/u' ], + [ 'name' => 'IceCat', 'id' => 'icecat', 'regexp' => '/IceCat[ \/]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.gnu.org/software/gnuzilla/ + [ 'name' => 'Icedove', 'id' => 'icedove', 'regexp' => '/ Icedove\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://wiki.debian.org/Icedove + [ 'name' => 'Iceweasel', 'id' => 'iceweasel', 'regexp' => '/Iceweasel\/([0-9.]*)/iu', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Iridium', 'id' => 'iridium', 'regexp' => '/Iridium\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php + [ 'name' => 'Iron', 'id' => 'iron', 'regexp' => '/Iron\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.srware.net/en/software_srware_iron.php + [ 'name' => 'Juzi Browser', 'id' => 'juzi', 'regexp' => '/JuziBrowser/iu', 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.123juzi.com/ + [ 'name' => 'Kapiko', 'id' => 'kapiko', 'regexp' => '/ Kapiko\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://sites.google.com/site/kapikoproject/ + [ 'name' => 'Kazehakase', 'id' => 'kazehakase', 'regexp' => '/Kazehakase\/([0-9.]*)/u' ], // see: http://kazehakase.osdn.jp + [ 'name' => 'KChrome', 'id' => 'kchrome', 'regexp' => '/KChrome\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.kchrome.com + [ 'name' => 'Kinza', 'id' => 'kinza', 'regexp' => '/ Kinza\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.kinza.jp/en/ + [ 'name' => 'Kirix Strata', 'id' => 'kirix', 'regexp' => '/ Strata\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.kirix.com/ + [ 'name' => 'K-Meleon', 'id' => 'meleon', 'regexp' => '/K-Meleon\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://kmeleonbrowser.org + [ 'name' => 'K-Ninja', 'id' => 'kninja', 'regexp' => '/K-Ninja\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'KKMAN Browser', 'id' => 'kkman', 'regexp' => '/ KKman([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.kkbox.com/kkman/ + [ 'name' => 'Klondike', 'id' => 'klondike', 'regexp' => '/Klondike\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Kylo', 'id' => 'kylo', 'regexp' => '/ Kylo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://kylo.tv/ + [ 'name' => 'LieBao', 'id' => 'lbbrowser', 'regexp' => '/LBBROWSER/u' ], // see: http://www.liebao.cn + [ 'name' => 'LieYing', 'id' => 'lieyang', 'regexp' => '/LieYing\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: hhttp://ly.myyq.com.cn/ + [ 'name' => 'Light Browser', 'id' => 'light', 'regexp' => '/ Light\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://en.wikipedia.org/wiki/Light_(web_browser) + [ 'name' => 'Lobo', 'id' => 'lobo', 'regexp' => '/Lobo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://sourceforge.net/projects/xamj/files/Lobo%20Browser/ + [ 'name' => 'Lolifox', 'id' => 'lolifox', 'regexp' => '/lolifox\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://ja.wikipedia.org/wiki/Lolifox + [ 'name' => 'Lovense', 'id' => 'lovense', 'regexp' => '/Lovense\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.lovense.com/cam-model/guides/pc-phone + [ 'name' => 'Luakit', 'id' => 'luakit', 'regexp' => '/WebKitGTK\+\/([0-9.]*) luakit/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://luakit.github.io/ + [ 'name' => 'Lunascape', 'id' => 'lunascape', 'regexp' => '/ Lunascape[\/| ]([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv + [ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' => '/MxBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Maxthon', 'id' => 'mxbrowser', 'regexp' => '/MxBrowser-iPhone\/([0-9.]*)/u' ], + [ 'name' => 'Min Browser', 'id' => 'min', 'regexp' => '/ min\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://minbrowser.github.io/min/ + [ 'name' => 'Mini Browser', 'id' => 'mini', 'regexp' => '/MiniBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://dmkho.tripod.com/mb/index.html + [ 'name' => 'MixShark', 'id' => 'mixshark', 'regexp' => '/MixShark\/([0-9.]*)/u' ], // see: http://terbaddo.free.fr/mixshark.php + [ 'name' => 'mlbrowser', 'id' => 'mlbrowser', 'regexp' => '/mlbrowser/u' ], // see: https://github.com/Topguy/mlbrowser + [ 'name' => 'MultiZilla', 'id' => 'multizilla', 'regexp' => '/MultiZilla\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://sourceforge.net/projects/multizilla/ + [ 'name' => 'Mypal Browser', 'id' => 'mypal', 'regexp' => '/ Mypal\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/Feodor2/Mypal + [ 'name' => 'Naenara', 'id' => 'naenara', 'regexp' => '/NaenaraBrowser\/([0-9.]*)/u', 'details' => 2 ], // Firefox based browser used with Red Star OS + [ 'name' => 'NetPositive', 'id' => 'netpositive', 'regexp' => '/NetPositive\/([0-9.]*)/u' ], + [ 'name' => 'NetCast Browser', 'id' => 'netcast', 'regexp' => '/ SmartTV\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://webostv.developer.lge.com/discover/netcast/overview/ + [ 'name' => 'NTENT Browser', 'id' => 'ntent', 'regexp' => '/NTENTBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://en.wikipedia.org/wiki/NTENT + [ 'name' => 'Nichrome', 'id' => 'nichrome', 'regexp' => '/Nichrome\/self\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Origyn', 'id' => 'origyn', 'regexp' => '/Origyn Web Browser/u' ], + [ 'name' => 'Odyssey', 'id' => 'owb', 'regexp' => '/OWB\/([0-9.]*)/u' ], + [ 'name' => 'Orca', 'id' => 'orca', 'regexp' => '/Orca\/([0-9.]*)/u' ], + [ 'name' => 'Oregano', 'id' => 'oregano', 'regexp' => '/Oregano ([0-9.]*)/u' ], // see: http://www.xat.nl/en/riscos/sw/oregano/ + [ 'name' => 'Otter', 'id' => 'otter', 'regexp' => '/Otter(?: Browser)?\/([0-9.]*)/u' ], // see: https://otter-browser.org + [ 'name' => 'Pale Moon', 'id' => 'palemoon', 'regexp' => '/Pale[mM]oon\/([0-9.]*)/u' ], // see: https://www.palemoon.org + [ 'name' => 'Pirate Browser', 'id' => 'pirate', 'regexp' => '/PB([0-9.a-z]*) Mozilla/u' ], // see: https://en.wikipedia.org/wiki/PirateBrowser + [ 'name' => 'Privacy Browser', 'id' => 'privacy', 'regexp' => '/PrivacyBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.stoutner.com/privacy-browser/ + [ 'name' => 'Qihoo 360', 'id' => 'qihu', 'regexp' => '/QIHU THEWORLD/u' ], + [ 'name' => 'Qiyu Browser', 'id' => 'qiyu', 'regexp' => '/Qiyu\/([0-9.]*)/i', 'type' => Constants\DeviceType::DESKTOP ], // see: https://apps.apple.com/cn/app/qi-yu-liu-lan-qi/id959447103 + [ 'name' => 'QtWeb', 'id' => 'qtweb', 'regexp' => '/QtWeb Internet Browser\/([0-9.]*)/u' ], + [ 'name' => 'Quick Look', 'id' => 'quicklook', 'regexp' => '/QuickLook\/([0-9.]*)/u' ], // see: https://en.wikipedia.org/wiki/Quick_Look + [ 'name' => 'QupZilla', 'id' => 'qupzilla', 'regexp' => '/QupZilla\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Quick Look', 'id' => 'quicklook', 'regexp' => '/QuickLook\/([0-9.]*)/u' ], // see: https://en.wikipedia.org/wiki/Quick_Look + [ 'name' => 'Qute Browser', 'id' => 'qute', 'regexp' => '/qutebrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/qutebrowser/qutebrowser + [ 'name' => 'rekonq', 'id' => 'rekonq', 'regexp' => '/rekonq(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Ryouko', 'id' => 'ryouko', 'regexp' => '/Ryouko\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/foxhead128/ryouko + [ 'name' => 'SaaYaa Explorer', 'id' => 'saayaa', 'regexp' => '/SaaYaa/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'SalamWeb', 'id' => 'salam', 'regexp' => '/SalamWeb\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://salamweb.com/ + [ 'name' => 'SalamWeb', 'id' => 'salam', 'regexp' => '/Salam Browser/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Seznam Browser', 'id' => 'seznam', 'regexp' => '/SznProhlizec\/([0-9.]*)/u' ], // see: https://play.google.com/store/apps/details?id=cz.seznam.sbrowser&hl=en + [ 'name' => 'Shiira', 'id' => 'shiira', 'regexp' => '/Shiira/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Sleipnir', 'id' => 'sleipnir', 'regexp' => '/Sleipnir\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'SlimerJS', 'id' => 'slimerjs', 'regexp' => '/ SlimerJS\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://slimerjs.org/ + [ 'name' => 'SlimJet Browser', 'id' => 'slimjet', 'regexp' => '/ Slimjet\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.slimjet.com/ + [ 'name' => 'Sielo Browser', 'id' => 'sielo', 'regexp' => '/ Sielo\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://github.com/SieloBrowser/sielo-legacy + [ 'name' => 'SiteKiosk', 'id' => 'sitekiosk', 'regexp' => '/SiteKiosk ([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.provisio.com/web/us/products/windows-kiosk-software-sitekiosk + [ 'name' => 'Sogou Explorer', 'id' => 'metasr', 'regexp' => '/SE 2.X MetaSr/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Sputnik', 'id' => 'sputnik', 'regexp' => '/SputnikBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://browser.sputnik.ru/ + [ 'name' => 'Sputnik', 'id' => 'sputnik', 'regexp' => '/Sputnik\/([0-9.]*)/iu', 'details' => 3 ], + [ 'name' => 'SRWare Iron', 'id' => 'irondesktop', 'regexp' => '/Chrome\/([0-9.]*) Iron/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.srware.net/iron/ + [ 'name' => 'SRWare Iron', 'id' => 'irondesktop', 'regexp' => '/ Iron\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.srware.net/iron/ + [ 'name' => 'Stainless', 'id' => 'stainless', 'regexp' => '/Stainless\/([0-9.]*)/u' ], // see: http://www.stainlessapp.com + [ 'name' => 'Station Browser', 'id' => 'station', 'regexp' => '/ Station\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://getstation.com/ + [ 'name' => 'SunChrome', 'id' => 'sunchrome', 'regexp' => '/SunChrome\/([0-9.]*)/u' ], + [ 'name' => 'Sunrise Browser', 'id' => 'sunrise', 'regexp' => '/ Sunrise\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.sunrisebrowser.com/ + [ 'name' => 'Sunrise Browser', 'id' => 'sunrise', 'regexp' => '/SunriseBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://www.sunrisebrowser.com/ + [ 'name' => 'Superbird', 'id' => 'superbird', 'regexp' => '/Super[Bb]ird\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' => '/Swing(?:\(And\))?\/([0-9.]*)/u', 'details' => 3 ], // see: http://swing-browser.com + [ 'name' => 'Tencent Traveler', 'id' => 'tencent', 'regexp' => '/TencentTraveler ([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TenFourFox', 'id' => 'tenfourfox', 'regexp' => '/TenFourFox\//u' ], + [ 'name' => 'The World', 'id' => 'theworld', 'regexp' => '/TheWorld(?: ([0-9.]*))?/u' ], + [ 'name' => 'Tungsten Browser', 'id' => 'tungsten', 'regexp' => '/TungstenBrowser\/([0-9.]*)/u' ], + [ 'name' => 'UR Browser', 'id' => 'ur', 'regexp' => '/ UR Browser\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.ur-browser.com/ + [ 'name' => 'UR Browser', 'id' => 'ur', 'regexp' => '/ UR\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.ur-browser.com/ + [ 'name' => 'Vivaldi', 'id' => 'vivaldi', 'regexp' => '/Vivaldi\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'VMware Browser', 'id' => 'vmware', 'regexp' => '/Air[Ww]atch Browser v([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Voyager', 'id' => 'voyager', 'regexp' => '/AmigaVoyager\/([0-9.]*)/u' ], + [ 'name' => 'Waterfox', 'id' => 'waterfox', 'regexp' => '/Waterfox\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Web Explorer Browser', 'id' => 'webexplorer', 'regexp' => '/WebExplorer\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://webexplorerbrasil.com/ + [ 'name' => 'Web Explorer Browser', 'id' => 'webexplorer', 'regexp' => '/Web Explorer\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Whale Browser', 'id' => 'whale', 'regexp' => '/ Whale\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://whale.naver.com/ + [ 'name' => 'WinWAP Browser', 'id' => 'winwap', 'regexp' => '/WinWAP\/([0-9]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: https://www.winwap.com/mobile_applications/winwap_browser.php + [ 'name' => 'WinWAP Browser', 'id' => 'winwap', 'regexp' => '/WinWAP-SPBE\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Yandex Browser', 'id' => 'yabrowser', 'regexp' => '/YaBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Zvu Browser', 'id' => 'zvu', 'regexp' => '/ Zvu\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], // see: http://zvu.com/ /* Mobile browsers */ - [ 'name' => '1Browser', 'id' => '1password', 'regexp' =>'/1Password\/([0-9.]*)/u' ], - [ 'name' => '2345 Browser', 'id' => '2345', 'regexp' =>'/Mb2345Browser\/([0-9.]*)/u' ], - [ 'name' => '3G Explorer', 'id' => '3g explorer', 'regexp' =>'/3G Explorer\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => '4G Explorer', 'id' => '4g explorer', 'regexp' =>'/4G Explorer\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Atomic', 'id' => 'atomiclite', 'regexp' =>'/AtomicLite\/([0-9.]*)/u' ], // see: http://atomicwebbrowser.com - [ 'name' => 'AU', 'id' => 'au', 'regexp' =>'/(?:^| )AU(?:.Browser)?\/([0-9.]+)/u' ], - [ 'name' => 'Awakening', 'id' => 'awakening', 'regexp' =>'/Awakening Browser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' =>'/M?BaiduBrowser\/([0-9.]*)/i' ], - [ 'name' => 'Baidu Browser', 'id' => 'bdmobile', 'regexp' =>'/BdMobile\/([0-9.]*)/i' ], - [ 'name' => 'Baidu Browser', 'id' => 'bidu', 'regexp' =>'/BIDUBrowser[ \/]([0-9.]*)/u' ], - [ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' =>'/BaiduHD\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Baidu Browser', 'id' => 'baiduboxapp', 'regexp' =>'/baiduboxapp\/([0-9.]*)/i' ], - [ 'name' => 'Baidu Browser', 'id' => 'browser', 'regexp' =>'/ browser\/([0-9.]*) \(; P1/i' ], - [ 'name' => 'Blazer', 'id' => 'blazer', 'regexp' =>'/Blazer\/([0-9.]*)/u' ], - [ 'name' => 'CM Browser', 'id' => 'acheetahi', 'regexp' =>'/ACHEETAHI\//u' ], - [ 'name' => 'Cornowser', 'id' => 'cornowser', 'regexp' =>'/Cornowser\/([0-9.]*)/u' ], - [ 'name' => 'Cool Market', 'id' => 'coolmarket', 'regexp' =>'/CoolMarket\/([0-9.]*)/u' ], - [ 'name' => 'CuteBrowser', 'id' => 'cute', 'regexp' =>'/CuteBrowser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Digia @Web', 'id' => 'digia', 'regexp' =>'/Digia @Web\/([0-9.]*)/u' ], - [ 'name' => 'Doris', 'id' => 'doris', 'regexp' =>'/Doris\/([0-9.]*)/u' ], - [ 'name' => 'Dorothy', 'id' => 'doroty', 'regexp' =>'/Dorothy$/u' ], - [ 'name' => 'EMOBILE Browser', 'id' => 'www browser', 'regexp' =>'/WWW Browser\/ver([0-9.]*)/u' ], - [ 'name' => 'EUI Browser', 'id' => 'eui', 'regexp' =>'/EUI Browser\/[^0-9\s]*([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Go.Web', 'id' => 'go\.web', 'regexp' =>'/Go\.Web\/([0-9.]*)/u' ], // used on early Blackberry, by GoAmerica - [ 'name' => 'Helium', 'id' => 'helium', 'regexp' =>'/HeliumMobileBrowser\/([0-9.]*)/u' ], - [ 'name' => 'Huohou Browser', 'id' => 'huohoubrowser', 'regexp' =>'/HuohouBrowser\/([0-9.]*)/u' ], - [ 'name' => 'iCab', 'id' => 'icab', 'regexp' =>'/iCabMobile\/([0-9.]*)/u' ], - [ 'name' => 'iLunascape', 'id' => 'lunascape', 'regexp' =>'/iLunascape\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv - [ 'name' => 'InternetSurfboard', 'id' => 'surfboard', 'regexp' =>'/InternetSurfboard\/([0-9.]*)/u' ], - [ 'name' => 'iSurf', 'id' => 'isurf', 'regexp' =>'/iSurf version \/v([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Jig Browser', 'id' => 'jig browser', 'regexp' =>'/jig browser(?: web| core|9i?)?;? ?([0-9.]+)?/u', 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Jumanji', 'id' => 'jumanji', 'regexp' =>'/jumanji/u' ], // see: jumanji browser ubuntu - [ 'name' => 'Kiosk', 'id' => 'kiosk', 'regexp' =>'/Kiosk\/([0-9.]*)/u' ], // see: http://www.kioskbrowser.net - [ 'name' => 'LeBrowser', 'id' => 'lebrowser', 'regexp' =>'/LeBrowser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'LieBaoFast', 'id' => 'liebao', 'regexp' =>'/LieBaoFast\/([0-9.]*)/u' ], // see: http://www.liebao.cn - [ 'name' => 'MaCross Mobile', 'id' => 'macross', 'regexp' =>'/MaCross\/([0-9.]*)/u' ], - [ 'name' => 'Mammoth', 'id' => 'mammoth', 'regexp' =>'/Mammoth\/([0-9.]*)/u' ], // see: https://itunes.apple.com/cn/app/meng-ma-liu-lan-qi/id403760998?mt=8 - [ 'name' => 'mCent Browser', 'id' => 'mcent', 'regexp' =>'/mCent\/([0-9.]*)/u' ], - [ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' =>'/MIB\/([0-9.]*)/u' ], - [ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' =>'/MIB([0-9.]+)\//u' ], - [ 'name' => 'Motorola Internet Browser', 'id' => 'cmcs', 'regexp' =>'/Browser\/CMCS([0-9.]*)/u' ], - [ 'name' => 'Motorola WebKit', 'id' => 'motorola', 'regexp' =>'/MotorolaWebKit(?:\/([0-9.]*))?/u', 'details' => 3 ], - [ 'name' => 'NetFront Life Browser', 'id' => 'netfrontlife', 'regexp' =>'/NetFrontLifeBrowser\/([0-9.]*)/u' ], - [ 'name' => 'OneBrowser', 'id' => 'onebrowser', 'regexp' =>'/OneBrowser\/([0-9.]*)/u' ], - [ 'name' => 'PocketLink', 'id' => 'plink', 'regexp' =>'/PLink ([0-9.]+)/iu', 'details' => 2 ], - [ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' =>'/Polaris[\/ ]v?([0-9.]*)/iu', 'details' => 2 ], - [ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' =>'/POLARIS([0-9.]+)/u', 'details' => 2 ], - [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Open[Ww]ave\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Openwave Mobile Browser ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' =>'/Browser\/OpenWave([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Openwave', 'id' => 'up', 'regexp' =>'/UP\. ?Browser(?:\/([a-z0-9.]*))?/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Openwave', 'id' => 'km', 'regexp' =>'/KM\.Browser\/([0-9.]+)/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Openwave', 'id' => 'up', 'regexp' =>'/UP\/([0-9.]+)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Oppo Browser', 'id' => 'oppo', 'regexp' =>'/OppoBrowser\/([0-9.]+)/iu' ], - [ 'name' => 'Quark Browser', 'id' => 'quark', 'regexp' =>'/Quark\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'SEMC Browser', 'id' => 'semc', 'regexp' =>'/SEMC-Browser\/([0-9.]*)/u' ], - [ 'name' => 'STNC HitchHiker' , 'id' => 'stnc', 'regexp' =>'/STNC-WTL\/[0-9.]*/u' ], - [ 'name' => 'Sogou Mobile', 'id' => 'sogou', 'regexp' =>'/SogouMobileBrowser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' =>'/Swing\(And\)\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Symphony', 'id' => 'symphony', 'regexp' =>'/Symphony ([0-9.]+)$/u' ], - [ 'name' => 'TinY', 'id' => 'ucpro', 'regexp' =>'/ucpro\/([0-9.]+)/iu' ], - [ 'name' => 'Vivo Browser', 'id' => 'vivo', 'regexp' =>'/VivoBrowser\/([0-9.]+)/iu' ], - [ 'name' => 'WebLite', 'id' => 'weblite', 'regexp' =>'/WebLite\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => '1Browser', 'id' => '1password', 'regexp' => '/1Password\/([0-9.]*)/u' ], + [ 'name' => '2345 Browser', 'id' => '2345', 'regexp' => '/Mb2345Browser\/([0-9.]*)/u' ], + [ 'name' => '3G Explorer', 'id' => '3g explorer', 'regexp' => '/3G Explorer\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => '4G Explorer', 'id' => '4g explorer', 'regexp' => '/4G Explorer\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Aloha Browser', 'id' => 'aloha', 'regexp' => '/AlohaBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://alohabrowser.com/ + [ 'name' => 'Atomic', 'id' => 'atomiclite', 'regexp' => '/AtomicLite\/([0-9.]*)/u' ], // see: http://atomicwebbrowser.com + [ 'name' => 'AU', 'id' => 'au', 'regexp' => '/(?:^| )AU(?:.Browser)?\/([0-9.]+)/u' ], + [ 'name' => 'Awakening', 'id' => 'awakening', 'regexp' => '/Awakening Browser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' => '/M?BaiduBrowser\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'bdmobile', 'regexp' => '/BdMobile\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'bidu', 'regexp' => '/BIDUBrowser[ \/]([0-9.]*)/u' ], + [ 'name' => 'Baidu Browser', 'id' => 'baidu', 'regexp' => '/BaiduHD\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Baidu Browser', 'id' => 'baiduboxapp', 'regexp' => '/baiduboxapp\/([0-9.]*)/i' ], + [ 'name' => 'Baidu Browser', 'id' => 'browser', 'regexp' => '/ browser\/([0-9.]*) \(; P1/i' ], + [ 'name' => 'Blazer', 'id' => 'blazer', 'regexp' => '/Blazer\/([0-9.]*)/u' ], + [ 'name' => 'CM Browser', 'id' => 'acheetahi', 'regexp' => '/ACHEETAHI\//u' ], + [ 'name' => 'Cornowser', 'id' => 'cornowser', 'regexp' => '/Cornowser\/([0-9.]*)/u' ], + [ 'name' => 'Cool Market', 'id' => 'coolmarket', 'regexp' => '/CoolMarket\/([0-9.]*)/u' ], + [ 'name' => 'Corom Browser', 'id' => 'corom', 'regexp' => '/ CoRom\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://apkpure.com/corom-browser-for-android/com.coccoc.corom + [ 'name' => 'CuteBrowser', 'id' => 'cute', 'regexp' => '/CuteBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Digia @Web', 'id' => 'digia', 'regexp' => '/Digia @Web\/([0-9.]*)/u' ], + [ 'name' => 'Diigo Browser', 'id' => 'diigo', 'regexp' => '/DiigoBrowser/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://apps.apple.com/us/app/diigo-annotator-for-safari/id933773981 + [ 'name' => 'Doris', 'id' => 'doris', 'regexp' => '/Doris\/([0-9.]*)/u' ], + [ 'name' => 'Dorothy', 'id' => 'doroty', 'regexp' => '/Dorothy$/u' ], + [ 'name' => 'Ecosia Browser', 'id' => 'ecosia', 'regexp' => '/Ecosia\sandroid\@([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://play.google.com/store/apps/details?id=com.ecosia.android + [ 'name' => 'Ecosia Browser', 'id' => 'ecosia', 'regexp' => '/Ecosia\sios\@([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://apps.apple.com/us/app/ecosia/id670881887 + [ 'name' => 'EMOBILE Browser', 'id' => 'www browser', 'regexp' => '/WWW Browser\/ver([0-9.]*)/u' ], + [ 'name' => 'Epic Browser', 'id' => 'epic', 'regexp' => '/ Epic\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://en.wikipedia.org/wiki/Epic_(web_browser) + [ 'name' => 'EUI Browser', 'id' => 'eui', 'regexp' => '/EUI Browser\/[^0-9\s]*([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Fluid Browser', 'id' => 'fluid', 'regexp' => '/ Fluid\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://apps.apple.com/us/app/fluid-browser/id1077036385?mt=12 + [ 'name' => 'Fluid Browser', 'id' => 'fluid', 'regexp' => '/FluidApp Version\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://fluidbrowser.com/ + [ 'name' => 'Go.Web', 'id' => 'go\.web', 'regexp' => '/Go\.Web\/([0-9.]*)/u' ], // used on early Blackberry, by GoAmerica + [ 'name' => 'Helium', 'id' => 'helium', 'regexp' => '/HeliumMobileBrowser\/([0-9.]*)/u' ], + [ 'name' => 'HeyTap Browser', 'id' => 'heytap', 'regexp' => '/HeyTapBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Huohou Browser', 'id' => 'huohoubrowser', 'regexp' => '/HuohouBrowser\/([0-9.]*)/u' ], + [ 'name' => 'iCab', 'id' => 'icab', 'regexp' => '/iCabMobile\/([0-9.]*)/u' ], + [ 'name' => 'iLunascape', 'id' => 'lunascape', 'regexp' => '/iLunascape\/([0-9.]*)/u', 'details' => 3 ], // see: http://www.lunascape.tv + [ 'name' => 'InternetSurfboard', 'id' => 'surfboard', 'regexp' => '/InternetSurfboard\/([0-9.]*)/u' ], + [ 'name' => 'iSurf', 'id' => 'isurf', 'regexp' => '/iSurf version \/v([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Jig Browser', 'id' => 'jig browser', 'regexp' => '/jig browser(?: web| core|9i?)?;? ?([0-9.]+)?/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Jumanji', 'id' => 'jumanji', 'regexp' => '/jumanji/u' ], // see: jumanji browser ubuntu + [ 'name' => 'K.Browser', 'id' => 'kbrowser', 'regexp' => '/TNSBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://play.google.com/store/apps/details?id=com.tnsua.browser + [ 'name' => 'Kiosk', 'id' => 'kiosk', 'regexp' => '/Kiosk\/([0-9.]*)/u' ], // see: http://www.kioskbrowser.net + [ 'name' => 'Kiwi Browser', 'id' => 'kiwi', 'regexp' => '/Kiwi Chrome\/([0-9.A-Z]*)/u' ], // see: https://kiwibrowser.com + [ 'name' => 'LeBrowser', 'id' => 'lebrowser', 'regexp' => '/LeBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'LieBaoFast', 'id' => 'liebao', 'regexp' => '/LieBaoFast\/([0-9.]*)/u' ], // see: http://www.liebao.cn + [ 'name' => 'MaCross Mobile', 'id' => 'macross', 'regexp' => '/MaCross\/([0-9.]*)/u' ], + [ 'name' => 'Mammoth', 'id' => 'mammoth', 'regexp' => '/Mammoth\/([0-9.]*)/u' ], // see: https://itunes.apple.com/cn/app/meng-ma-liu-lan-qi/id403760998?mt=8 + [ 'name' => 'mCent Browser', 'id' => 'mcent', 'regexp' => '/mCent\/([0-9.]*)/u' ], + [ 'name' => 'Mint Browser', 'id' => 'mint', 'regexp' => '/XiaoMi\/Mint Browser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: http://www.mintbrowser.com/ + [ 'name' => 'Mobicip', 'id' => 'mobicip', 'regexp' => '/ Mobicip\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://www.mobicip.com/ + [ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' => '/MIB\/([0-9.]*)/u' ], + [ 'name' => 'Motorola Internet Browser', 'id' => 'mib', 'regexp' => '/MIB([0-9.]+)\//u' ], + [ 'name' => 'Motorola Internet Browser', 'id' => 'cmcs', 'regexp' => '/Browser\/CMCS([0-9.]*)/u' ], + [ 'name' => 'Motorola WebKit', 'id' => 'motorola', 'regexp' => '/MotorolaWebKit(?:\/([0-9.]*))?/u', 'details' => 3 ], + [ 'name' => 'NetFront Life Browser', 'id' => 'netfrontlife', 'regexp' => '/NetFrontLifeBrowser\/([0-9.]*)/u' ], + [ 'name' => 'OneBrowser', 'id' => 'onebrowser', 'regexp' => '/OneBrowser\/([0-9.]*)/u' ], + [ 'name' => 'OnePlus Browser', 'id' => 'oneplus', 'regexp' => '/OnePlusBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://www.oneplus.com/ + [ 'name' => 'PocketLink', 'id' => 'plink', 'regexp' => '/PLink ([0-9.]+)/iu', 'details' => 2 ], + [ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' => '/Polaris[\/ ]v?([0-9.]*)/iu', 'details' => 2 ], + [ 'name' => 'Polaris', 'id' => 'polaris', 'regexp' => '/POLARIS([0-9.]+)/u', 'details' => 2 ], + [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' => '/Open[Ww]ave\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' => '/Openwave Mobile Browser ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'openwave', 'regexp' => '/Browser\/OpenWave([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'up', 'regexp' => '/UP\. ?Browser(?:\/([a-z0-9.]*))?/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'km', 'regexp' => '/KM\.Browser\/([0-9.]+)/iu', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Openwave', 'id' => 'up', 'regexp' => '/UP\/([0-9.]+)/u', 'details' => 2, 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Oppo Browser', 'id' => 'oppo', 'regexp' => '/OppoBrowser\/([0-9.]+)/iu' ], + [ 'name' => 'Quark Browser', 'id' => 'quark', 'regexp' => '/Quark\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'SEMC Browser', 'id' => 'semc', 'regexp' => '/SEMC-Browser\/([0-9.]*)/u' ], + [ 'name' => 'STNC HitchHiker' , 'id' => 'stnc', 'regexp' => '/STNC-WTL\/[0-9.]*/u' ], + [ 'name' => 'START Internet Browser', 'id' => 'startbrowser', 'regexp' => '/ Start\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://play.google.com/store/apps/details?id=fyi.start.web.browser + [ 'name' => 'Sogou Mobile', 'id' => 'sogou', 'regexp' => '/SogouMobileBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'SRWare Iron', 'id' => 'ironmobile', 'regexp' => '/Chrome\/([0-9.]*) Mobile Iron/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://www.srware.net/iron/ + [ 'name' => 'Swing Browser', 'id' => 'swing', 'regexp' => '/Swing\(And\)\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Surf', 'id' => 'surf', 'regexp' => '/SurfBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://en.wikipedia.org/wiki/Surf_(web_browser) + [ 'name' => 'Surf', 'id' => 'surf', 'regexp' => '/Surf\/([0-9.]*)/u' ], + [ 'name' => 'Symphony', 'id' => 'symphony', 'regexp' => '/Symphony ([0-9.]+)$/u' ], + [ 'name' => 'Tenta Browser', 'id' => 'tenta', 'regexp' => '/ Tenta\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://play.google.com/store/apps/details?id=com.tenta.android&hl=en + [ 'name' => 'TinY', 'id' => 'ucpro', 'regexp' => '/ucpro\/([0-9.]+)/iu' ], + [ 'name' => 'Vivo Browser', 'id' => 'vivo', 'regexp' => '/VivoBrowser\/([0-9.]+)/iu' ], + [ 'name' => 'WebLite', 'id' => 'weblite', 'regexp' => '/WebLite\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'WK Browser', 'id' => 'wk', 'regexp' => '/wkbrowser ([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://github.com/keanulee/WKBrowser + [ 'name' => 'Yaani Browser', 'id' => 'yaani', 'regexp' => '/YaaniBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], // see: https://www.yaani.com.tr/ /* Television browsers */ - [ 'name' => 'AltiBrowser', 'id' => 'alti', 'regexp' =>'/AltiBrowser\/([0-9.]*)/i' ], - [ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' =>'/Aplix_SANYO_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn - [ 'name' => 'AwoX', 'id' => 'awox', 'regexp' =>'/AwoX(?:\/([0-9.]*))? Browser/i' ], - [ 'name' => 'Isis', 'id' => 'browserserver', 'regexp' =>'/BrowserServer/u' ], - [ 'name' => 'Isis', 'id' => 'isis', 'regexp' =>'/ISIS\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Spyglass', 'id' => 'spyglass', 'regexp' =>'/Spyglass ([0-9.]+); OpenTV/u' ], - [ 'name' => 'Oregan Browser', 'id' => 'oregan', 'regexp' =>'/OreganMediaBrowser(?:\/([0-9.]*))?/u', 'details' => 2 ], - [ 'name' => 'Viera Browser', 'id' => 'viera', 'regexp' =>'/Viera\/([0-9.]*)/u' ], - [ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' =>'/Zetakey Webkit\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], - [ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' =>'/Zetakey\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], + [ 'name' => 'AltiBrowser', 'id' => 'alti', 'regexp' => '/AltiBrowser\/([0-9.]*)/i' ], + [ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' => '/Aplix_SANYO_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn + [ 'name' => 'AwoX', 'id' => 'awox', 'regexp' => '/AwoX(?:\/([0-9.]*))? Browser/i' ], + [ 'name' => 'Freebox Browser', 'id' => 'freebox', 'regexp' => '/ Navigateur web\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], // see: https://www.free.fr/freebox + [ 'name' => 'Freebox Browser', 'id' => 'freebox', 'regexp' => '/ Mail Free\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], // see: https://www.free.fr/freebox + [ 'name' => 'Isis', 'id' => 'browserserver', 'regexp' => '/BrowserServer/u' ], + [ 'name' => 'Isis', 'id' => 'isis', 'regexp' => '/ISIS\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Oregan Browser', 'id' => 'oregan', 'regexp' => '/OreganMediaBrowser(?:\/([0-9.]*))?/u', 'details' => 2 ], + [ 'name' => 'Spyglass', 'id' => 'spyglass', 'regexp' => '/Spyglass ([0-9.]+); OpenTV/u' ], + [ 'name' => 'Viera Browser', 'id' => 'viera', 'regexp' => '/Viera\/([0-9.]*)/u' ], + [ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' => '/Zetakey Webkit\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], + [ 'name' => 'Zetakey', 'id' => 'zetakey', 'regexp' => '/Zetakey\/([0-9.]*)/u', 'type' => Constants\DeviceType::TELEVISION ], /* Gaming browsers */ - [ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' =>'/Aplix_SEGASATURN_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn - [ 'name' => 'Bunjalloo', 'id' => 'bunjalloo', 'regexp' =>'/Bunjalloo\/([0-9.]*)/u' ], // browser for the Nintento DS - [ 'name' => 'Nintendo Web Framework', 'id' => 'nwf', 'regexp' =>'/NWF\/([0-9.]*)/u', 'details' => 2 ], // browser for the Sega Dreamcast - [ 'name' => 'Nuanti Meta', 'id' => 'nuanti', 'regexp' =>'/Nuanti(?:Meta)?\/([0-9.]*)/u' ], // browser for the Playstation + [ 'name' => 'Aplix', 'id' => 'aplix', 'regexp' => '/Aplix_SEGASATURN_browser\/([0-9](?:.[0-9.]+)?)/u' ], // browser for the Sega Saturn + [ 'name' => 'Bunjalloo', 'id' => 'bunjalloo', 'regexp' => '/Bunjalloo\/([0-9.]*)/u' ], // browser for the Nintento DS + [ 'name' => 'Nintendo Web Framework', 'id' => 'nwf', 'regexp' => '/NWF\/([0-9.]*)/u', 'details' => 2 ], // browser for the Sega Dreamcast + [ 'name' => 'Nuanti Meta', 'id' => 'nuanti', 'regexp' => '/Nuanti(?:Meta)?\/([0-9.]*)/u' ], // browser for the Playstation /* Other browsers */ - [ 'name' => 'Wear Internet Browser','id' => 'wib', 'regexp' =>'/WIB\/([0-9.]*)/u' ], + [ 'name' => 'Wear Internet Browser','id' => 'wib', 'regexp' => '/WIB\/([0-9.]*)/u' ], /* PDF renderers */ - [ 'name' => 'Prince', 'id' => 'prince', 'regexp' =>'/Prince\/([0-9.]*)/u' ], + [ 'name' => 'Prince', 'id' => 'prince', 'regexp' => '/Prince\/([0-9.]*)/u' ], + /* Car browers */ + [ 'name' => 'Tesla Browser', 'id' => 'tesla', 'regexp' => '/QtCarBrowser/u', 'type' => Constants\DeviceType::CAR ], // see: https://teslamotorsclub.com/tmc/forums/model-s-user-interface.113/ + [ 'name' => 'Tesla Browser', 'id' => 'tesla', 'regexp' => '/TeslaBrowser\/([0-9.]*)/u', 'type' => Constants\DeviceType::CAR ], // see: https://www.tesla.com/ + [ 'name' => 'Tesla Browser', 'id' => 'tesla', 'regexp' => '/ Tesla\/([0-9.]*)/u', 'type' => Constants\DeviceType::CAR ], // see: https://www.tesla.com/ + [ 'name' => 'Tesla Browser', 'id' => 'tesla', 'regexp' => '/ Tesla/u', 'type' => Constants\DeviceType::CAR ], // see: https://www.tesla.com/ + /* Unsorted */ - [ 'name' => 'Demobrowser', 'id' => 'demobrowser', 'regexp' =>'/demobrowser\/([0-9.]*)/u' ], - [ 'name' => 'Dooble', 'id' => 'dooble', 'regexp' =>'/Dooble(?:\/([0-9.]*))?/u' ], // see: http://dooble.sourceforge.net - [ 'name' => 'DWB', 'id' => 'dwb', 'regexp' =>'/dwb(?:-hg)?(?:\/([0-9.]*))?/u' ], - [ 'name' => 'EVM Browser', 'id' => 'evm', 'regexp' =>'/EVMBrowser\/([0-9.]*)/u' ], - [ 'name' => 'FireWeb', 'id' => 'fireweb', 'regexp' =>'/FireWeb\/([0-9.]*)/u' ], - [ 'name' => 'Hive Explorer', 'id' => 'hive', 'regexp' =>'/HiveE/u' ], - [ 'name' => 'Intermec Browser', 'id' => 'intermec', 'regexp' =>'/Intermec\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Phantom', 'id' => 'phantom', 'regexp' =>'/Phantom\/V([0-9.]*)/u' ], - [ 'name' => 'QtCreator', 'id' => 'qt', 'regexp' =>'/QtCreator\/([0-9.]*)/u' ], - [ 'name' => 'QtQmlViewer', 'id' => 'qt', 'regexp' =>'/QtQmlViewer/u' ], - [ 'name' => 'QtMiniBrowser', 'id' => 'qt', 'regexp' =>'/QtMiniBrowser\/([0-9.]*)/u' ], - [ 'name' => 'QtTestBrowser', 'id' => 'qt', 'regexp' =>'/QtTestBrowser\/([0-9.]*)/u' ], - [ 'name' => 'Roccat', 'id' => 'roccat', 'regexp' =>'/Roccat\/([0-9]\.[0-9.]*)/u' ], - [ 'name' => 'Raven for Mac', 'id' => 'raven', 'regexp' =>'/Raven for Mac\/([0-9.]*)/u' ], - [ 'name' => 'RockMelt', 'id' => 'rockmelt', 'regexp' =>'/RockMelt\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Scope', 'id' => 'scope', 'regexp' =>'/Scope\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.programmer.co.jp/scope.shtml - [ 'name' => 'SlimBoat', 'id' => 'slim', 'regexp' =>'/SlimBoat\/([0-9.]*)/u' ], - [ 'name' => 'SlimBrowser', 'id' => 'slim', 'regexp' =>'/SlimBrowser(?:\/([0-9.]*))?/u' ], - [ 'name' => 'SMBrowser', 'id' => 'smbrowser', 'regexp' =>'/SMBrowser/u' ], - [ 'name' => 'Snowshoe', 'id' => 'snowshoe', 'regexp' =>'/Snowshoe\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Sputnik', 'id' => 'sputnik', 'regexp' =>'/Sputnik\/([0-9.]*)/iu', 'details' => 3 ], - [ 'name' => 'Surf', 'id' => 'surf', 'regexp' =>'/Surf\/([0-9.]*)/u' ], - [ 'name' => 'TaoBrowser', 'id' => 'tao', 'regexp' =>'/TaoBrowser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'TaomeeBrowser', 'id' => 'tao', 'regexp' =>'/TaomeeBrowser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'TazWeb', 'id' => 'taz', 'regexp' =>'/TazWeb/u' ], - [ 'name' => 'Uzbl', 'id' => 'uzbl', 'regexp' =>'/^Uzbl/u' ], - [ 'name' => 'Villanova', 'id' => 'villanova', 'regexp' =>'/Villanova\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Vimb', 'id' => 'vimb', 'regexp' =>'/vimb\/([0-9.]*)/u' ], - [ 'name' => 'WADA Browser', 'id' => 'wada', 'regexp' =>'/WadaBrowser\/([0-9.]*)/u' ], - [ 'name' => 'Wavelink Velocity', 'id' => 'wavelink', 'regexp' =>'/Wavelink Velocity Browser\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'WebRender', 'id' => 'webrender', 'regexp' =>'/WebRender/u' ], - [ 'name' => 'Webster', 'id' => 'webster', 'regexp' =>'/Webster ([0-9.]*)/u' ], - [ 'name' => 'Wyzo', 'id' => 'wyzo', 'regexp' =>'/Wyzo\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Yelang', 'id' => 'yelang', 'regexp' =>'/Yelang\/([0-9.]*)/u', 'details' => 3 ], // see: wellgo.org - [ 'name' => 'YRC Weblink', 'id' => 'yrcweb', 'regexp' =>'/YRCWeblink\/([0-9.]*)/u' ], - [ 'name' => '冲浪浏览器', 'id' => 'surf', 'regexp' =>'/CMSurfClient-Android/u' ], + [ 'name' => 'Demobrowser', 'id' => 'demobrowser', 'regexp' => '/demobrowser\/([0-9.]*)/u' ], + [ 'name' => 'Dooble', 'id' => 'dooble', 'regexp' => '/Dooble(?:\/([0-9.]*))?/u' ], // see: http://dooble.sourceforge.net + [ 'name' => 'DWB', 'id' => 'dwb', 'regexp' => '/dwb(?:-hg)?(?:\/([0-9.]*))?/u' ], + [ 'name' => 'EVM Browser', 'id' => 'evm', 'regexp' => '/EVMBrowser\/([0-9.]*)/u' ], + [ 'name' => 'FireWeb', 'id' => 'fireweb', 'regexp' => '/FireWeb\/([0-9.]*)/u' ], + [ 'name' => 'Hive Explorer', 'id' => 'hive', 'regexp' => '/HiveE/u' ], + [ 'name' => 'Intermec Browser', 'id' => 'intermec', 'regexp' => '/Intermec\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Phantom', 'id' => 'phantom', 'regexp' => '/Phantom\/V([0-9.]*)/u' ], + [ 'name' => 'QtCreator', 'id' => 'qt', 'regexp' => '/QtCreator\/([0-9.]*)/u' ], + [ 'name' => 'QtQmlViewer', 'id' => 'qt', 'regexp' => '/QtQmlViewer/u' ], + [ 'name' => 'QtMiniBrowser', 'id' => 'qt', 'regexp' => '/QtMiniBrowser\/([0-9.]*)/u' ], + [ 'name' => 'QtTestBrowser', 'id' => 'qt', 'regexp' => '/QtTestBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Roccat', 'id' => 'roccat', 'regexp' => '/Roccat\/([0-9]\.[0-9.]*)/u' ], + [ 'name' => 'Raven for Mac', 'id' => 'raven', 'regexp' => '/Raven for Mac\/([0-9.]*)/u' ], + [ 'name' => 'RockMelt', 'id' => 'rockmelt', 'regexp' => '/RockMelt\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Scope', 'id' => 'scope', 'regexp' => '/Scope\/([0-9.]*)/u', 'details' => 2 ], // see: http://www.programmer.co.jp/scope.shtml + [ 'name' => 'SlimBoat', 'id' => 'slim', 'regexp' => '/SlimBoat\/([0-9.]*)/u' ], + [ 'name' => 'SlimBrowser', 'id' => 'slim', 'regexp' => '/SlimBrowser(?:\/([0-9.]*))?/u' ], + [ 'name' => 'SMBrowser', 'id' => 'smbrowser', 'regexp' => '/SMBrowser/u' ], + [ 'name' => 'Snowshoe', 'id' => 'snowshoe', 'regexp' => '/Snowshoe\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TaoBrowser', 'id' => 'tao', 'regexp' => '/TaoBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TaomeeBrowser', 'id' => 'tao', 'regexp' => '/TaomeeBrowser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'TazWeb', 'id' => 'taz', 'regexp' => '/TazWeb/u' ], + [ 'name' => 'Uzbl', 'id' => 'uzbl', 'regexp' => '/^Uzbl/u' ], + [ 'name' => 'Villanova', 'id' => 'villanova', 'regexp' => '/Villanova\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Vimb', 'id' => 'vimb', 'regexp' => '/vimb\/([0-9.]*)/u' ], + [ 'name' => 'WADA Browser', 'id' => 'wada', 'regexp' => '/WadaBrowser\/([0-9.]*)/u' ], + [ 'name' => 'Wavelink Velocity', 'id' => 'wavelink', 'regexp' => '/Wavelink Velocity Browser\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'WebRender', 'id' => 'webrender', 'regexp' => '/WebRender/u' ], + [ 'name' => 'Webster', 'id' => 'webster', 'regexp' => '/Webster ([0-9.]*)/u' ], + [ 'name' => 'Wyzo', 'id' => 'wyzo', 'regexp' => '/Wyzo\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Yelang', 'id' => 'yelang', 'regexp' => '/Yelang\/([0-9.]*)/u', 'details' => 3 ], // see: wellgo.org + [ 'name' => 'YRC Weblink', 'id' => 'yrcweb', 'regexp' => '/YRCWeblink\/([0-9.]*)/u' ], + [ 'name' => '冲浪浏览器', 'id' => 'surfchina', 'regexp' => '/CMSurfClient-Android/u' ], ], Constants\BrowserType::BROWSER_TEXT => [ - [ 'name' => 'CERN LineMode', 'id' => 'linemode', 'regexp' =>'/CERN-LineMode\/([0-9.]*)/u' ], - [ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' =>'/Lynx\/([0-9.]*)/u' ], - [ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' =>'/Lynx \(textmode\)/u' ], - [ 'name' => 'ELinks', 'id' => 'links', 'regexp' =>'/E[Ll]inks(?:\/| \()([0-9.]*[0-9])/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Links', 'id' => 'links', 'regexp' =>'/Links \(([0-9.]*)/u' ], - [ 'name' => 'w3m', 'id' => 'w3m', 'regexp' =>'/w3m\/([0-9.]*)/u' ], + [ 'name' => 'CERN LineMode', 'id' => 'linemode', 'regexp' => '/CERN-LineMode\/([0-9.]*)/u' ], + [ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' => '/Lynx\/([0-9.]*)/u' ], + [ 'name' => 'Lynx', 'id' => 'lynx', 'regexp' => '/Lynx \(textmode\)/u' ], + [ 'name' => 'ELinks', 'id' => 'links', 'regexp' => '/E[Ll]inks(?:\/| \()([0-9.]*[0-9])/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Links', 'id' => 'links', 'regexp' => '/Links \(([0-9.]*)/u' ], + [ 'name' => 'w3m', 'id' => 'w3m', 'regexp' => '/w3m\/([0-9.]*)/u' ], ], Constants\BrowserType::UNKNOWN => [ - [ 'name' => 'PhantomJS', 'id' => 'phantom', 'regexp' =>'/PhantomJS\/([0-9.]*)/u' ], - [ 'name' => 'Nimbus', 'id' => 'nimbus', 'regexp' =>'/Nimbus\/([0-9.]*)/u' ], - [ 'name' => 'McAfee Web Gateway', 'id' => 'Webwasher', 'regexp' =>'/Webwasher\/([0-9.]*)/u' ], - [ 'name' => 'Open Sankoré', 'id' => 'sankore', 'regexp' =>'/Open-Sankore\/([0-9.]*)/u', 'type' => Constants\DeviceType::WHITEBOARD ], - [ 'name' => 'Adapi', 'id' => 'adapi', 'regexp' =>'/ ADAPI\/([0-9.]*)/u', 'hidden' => true, 'type' => Constants\DeviceType::SIGNAGE ], - [ 'name' => 'BrightSign', 'id' => 'brightsign', 'regexp' =>'/BrightSign\/([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ], - [ 'name' => 'Coship MMCP', 'id' => 'coship', 'regexp' =>'/Coship_MMCP_([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ], + [ 'name' => 'PhantomJS', 'id' => 'phantom', 'regexp' => '/PhantomJS\/([0-9.]*)/u' ], + [ 'name' => 'Nimbus', 'id' => 'nimbus', 'regexp' => '/Nimbus\/([0-9.]*)/u' ], + [ 'name' => 'McAfee Web Gateway', 'id' => 'Webwasher', 'regexp' => '/Webwasher\/([0-9.]*)/u' ], + [ 'name' => 'Open Sankoré', 'id' => 'sankore', 'regexp' => '/Open-Sankore\/([0-9.]*)/u', 'type' => Constants\DeviceType::WHITEBOARD ], + [ 'name' => 'Adapi', 'id' => 'adapi', 'regexp' => '/ ADAPI\/([0-9.]*)/u', 'hidden' => true, 'type' => Constants\DeviceType::SIGNAGE ], + [ 'name' => 'BrightSign', 'id' => 'brightsign', 'regexp' => '/BrightSign\/([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ], + [ 'name' => 'Coship MMCP', 'id' => 'coship', 'regexp' => '/Coship_MMCP_([0-9.]*)/u', 'type' => Constants\DeviceType::SIGNAGE ], ] ]; diff --git a/data/applications-others.php b/data/applications-others.php index a739a636d..1d02bed25 100644 --- a/data/applications-others.php +++ b/data/applications-others.php @@ -7,140 +7,145 @@ Applications::$OTHERS = [ Constants\BrowserType::APP_MEDIAPLAYER => [ - [ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' =>'/iTunes\/(?:xaa.)?([0-9.]*)/u' ], - [ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' =>'/iTunes-AppleTV\//u' ], - [ 'name' => 'QuickTime', 'id' => 'qt', 'regexp' =>'/\(qtver=([0-9.]*);/u' ], - [ 'name' => 'Bluefish', 'id' => 'bluefish', 'regexp' =>'/bluefish ([0-9.]*)/u' ], - [ 'name' => 'Nightingale', 'id' => 'nightingale', 'regexp' =>'/Nightingale\/([0-9.]*)/u' ], - [ 'name' => 'Songbird', 'id' => 'songbird', 'regexp' =>'/Songbird\/([0-9.]*)/u' ], - [ 'name' => 'Stagefright', 'id' => 'stagefright', 'regexp' =>'/stagefright\/([0-9.]*)/u' ], - [ 'name' => 'SubStream', 'id' => 'substream', 'regexp' =>'/SubStream\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'VLC', 'id' => 'vlc', 'regexp' =>'/VLC media player - version ([0-9.]*)/u' ], - [ 'name' => 'VLC', 'id' => 'vlc', 'regexp' =>'/VLC\/([0-9.]*)/u' ], - [ 'name' => 'Windows Media Player', 'id' => 'windows-media', 'regexp' =>'/Windows-Media-Player\/([0-9.]*)/u', 'details' => 1 ], - [ 'name' => 'CorePlayer', 'id' => 'coreplayer', 'regexp' =>'/CorePlayer\/([0-9.]*)/u' ], - [ 'name' => 'FlyCast', 'id' => 'flycast', 'regexp' =>'/FlyCast\/([0-9.]*)/u' ], + [ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' => '/iTunes\/(?:xaa.)?([0-9.]*)/u' ], + [ 'name' => 'iTunes', 'id' => 'itunes', 'regexp' => '/iTunes-AppleTV\//u' ], + [ 'name' => 'QuickTime', 'id' => 'qt', 'regexp' => '/\(qtver=([0-9.]*);/u' ], + [ 'name' => 'Bluefish', 'id' => 'bluefish', 'regexp' => '/bluefish ([0-9.]*)/u' ], + [ 'name' => 'Nightingale', 'id' => 'nightingale', 'regexp' => '/Nightingale\/([0-9.]*)/u' ], + [ 'name' => 'Songbird', 'id' => 'songbird', 'regexp' => '/Songbird\/([0-9.]*)/u' ], + [ 'name' => 'Stagefright', 'id' => 'stagefright', 'regexp' => '/stagefright\/([0-9.]*)/u' ], + [ 'name' => 'SubStream', 'id' => 'substream', 'regexp' => '/SubStream\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'VLC', 'id' => 'vlc', 'regexp' => '/VLC media player - version ([0-9.]*)/u' ], + [ 'name' => 'VLC', 'id' => 'vlc', 'regexp' => '/VLC\/([0-9.]*)/u' ], + [ 'name' => 'Windows Media Player', 'id' => 'windows-media', 'regexp' => '/Windows-Media-Player\/([0-9.]*)/u', 'details' => 1 ], + [ 'name' => 'CorePlayer', 'id' => 'coreplayer', 'regexp' => '/CorePlayer\/([0-9.]*)/u' ], + [ 'name' => 'FlyCast', 'id' => 'flycast', 'regexp' => '/FlyCast\/([0-9.]*)/u' ], [ 'name' => 'Boxee', 'id' => 'boxee', 'regexp' => '/Boxee(?:\/([0-9.]*))?/u', 'type' => Constants\DeviceType::TELEVISION ], [ 'name' => 'Kodi', 'id' => 'kodi', 'regexp' => '/^Kodi\/([0-9.]+)/u', 'details' => 2 ], [ 'name' => 'XBMC', 'id' => 'xbmc', 'regexp' => '/^XBMC\/(?:PRE-)?([0-9.]+)/u', 'details' => 2 ], ], Constants\BrowserType::APP_EMAIL => [ - [ 'name' => 'Lightning', 'id' => 'lightning', 'regexp' =>'/Lightning\/([0-9.]*)/u' ], - [ 'name' => 'Thunderbird', 'id' => 'thunderbird', 'regexp' =>'/Thunderbird[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' =>'/Microsoft Outlook IMO, Build ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' =>'/Microsoft Outlook ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Microsoft Outlook Express', 'id' => 'outlook', 'regexp' =>'/Outlook-Express\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Lotus Notes', 'id' => 'lotus', 'regexp' =>'/Lotus-Notes\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Postbox', 'id' => 'postbox', 'regexp' =>'/Postbox[\/ ]([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'The Bat!', 'id' => 'bat', 'regexp' =>'/The Bat! ([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Yahoo Mail', 'id' => 'yahoo', 'regexp' =>'/YahooMobile\/1.0 \(mail; ([0-9.]+)\)/u', 'details' => 3 ], + [ 'name' => 'Lightning', 'id' => 'lightning', 'regexp' => '/Lightning\/([0-9.]*)/u' ], + [ 'name' => 'Thunderbird', 'id' => 'thunderbird', 'regexp' => '/Thunderbird[\/ ]([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' => '/Microsoft Outlook IMO, Build ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Microsoft Outlook', 'id' => 'outlook', 'regexp' => '/Microsoft Outlook ([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Microsoft Outlook Express', 'id' => 'outlook', 'regexp' => '/Outlook-Express\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Lotus Notes', 'id' => 'lotus', 'regexp' => '/Lotus-Notes\/([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Postbox', 'id' => 'postbox', 'regexp' => '/Postbox[\/ ]([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'The Bat!', 'id' => 'bat', 'regexp' => '/The Bat! ([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Yahoo Mail', 'id' => 'yahoo', 'regexp' => '/YahooMobile\/1.0 \(mail; ([0-9.]+)\)/u', 'details' => 3 ], ], Constants\BrowserType::APP_NEWS => [ - [ 'name' => 'Daum', 'id' => 'daum', 'regexp' =>'/DaumApps\/([0-9.]*)/u' ], - [ 'name' => 'Daum', 'id' => 'daum', 'regexp' =>'/daumcafe\/([0-9.]*)/u' ], - [ 'name' => 'Flipboard', 'id' => 'flipboard', 'regexp' =>'/Flipboard\/([0-9.]+)/u' ], + [ 'name' => 'Daum', 'id' => 'daum', 'regexp' => '/DaumApps\/([0-9.]*)/u' ], + [ 'name' => 'Daum', 'id' => 'daum', 'regexp' => '/daumcafe\/([0-9.]*)/u' ], + [ 'name' => 'Flipboard', 'id' => 'flipboard', 'regexp' => '/Flipboard\/([0-9.]+)/u' ], ], Constants\BrowserType::APP_FEEDREADER => [ - [ 'name' => 'Akregator', 'id' => 'akregator', 'regexp' =>'/Akregator\/([0-9.]*)/u' ], - [ 'name' => 'Blogos', 'id' => 'blogos', 'regexp' =>'/Blogos\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Cococ', 'id' => 'cococ', 'regexp' =>'/cococ\/([0-9.]*)/u' ], - [ 'name' => 'FeedDemon', 'id' => 'feed', 'regexp' =>'/FeedDemon\/([0-9.]*)/u' ], - [ 'name' => 'Feeddler', 'id' => 'feed', 'regexp' =>'/FeeddlerRSS[ \/]([0-9.]*)/u' ], - [ 'name' => 'Feeddler Pro', 'id' => 'feed', 'regexp' =>'/FeeddlerPro\/([0-9.]*)/u' ], - [ 'name' => 'Liferea', 'id' => 'liferea', 'regexp' =>'/Liferea\/([0-9.]*)/u' ], - [ 'name' => 'NewsBlur', 'id' => 'news', 'regexp' =>'/NewsBlur\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], - [ 'name' => 'Newsbeuter', 'id' => 'news', 'regexp' =>'/newsbeuter\/([0-9.]*)/u' ], - [ 'name' => 'JetBrains Omea Reader','id' => 'jetbrains', 'regexp' =>'/JetBrains Omea Reader ([0-9.]*)/u' ], - [ 'name' => 'RSS Bandit', 'id' => 'rss', 'regexp' =>'/RssBandit\/([0-9.]*)/u' ], - [ 'name' => 'RSS Junkie', 'id' => 'rss', 'regexp' =>'/RSS Junkie Daemon/u' ], - [ 'name' => 'RSS Owl', 'id' => 'rss', 'regexp' =>'/RSSOwl\/([0-9.]*)/u' ], - [ 'name' => 'Reeder', 'id' => 'reeder', 'regexp' =>'/Reeder\/([0-9.]*)/u' ], - [ 'name' => 'ReedKit', 'id' => 'reedkit', 'regexp' =>'/ReedKit\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'Rome', 'id' => 'rome', 'regexp' =>'/Rome Client/u' ], - [ 'name' => 'jsRSS++', 'id' => 'rss', 'regexp' =>'/jsRSS++\/([0-9.]*)/u' ], - [ 'name' => 'Windows RSS Platorm', 'id' => 'rss', 'regexp' =>'/Windows-RSS-Platform\/([0-9.]*)/u' ], + [ 'name' => 'Akregator', 'id' => 'akregator', 'regexp' => '/Akregator\/([0-9.]*)/u' ], + [ 'name' => 'Blogos', 'id' => 'blogos', 'regexp' => '/Blogos\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Cococ', 'id' => 'cococ', 'regexp' => '/cococ\/([0-9.]*)/u' ], + [ 'name' => 'FeedDemon', 'id' => 'feed', 'regexp' => '/FeedDemon\/([0-9.]*)/u' ], + [ 'name' => 'Feeddler', 'id' => 'feed', 'regexp' => '/FeeddlerRSS[ \/]([0-9.]*)/u' ], + [ 'name' => 'Feeddler Pro', 'id' => 'feed', 'regexp' => '/FeeddlerPro\/([0-9.]*)/u' ], + [ 'name' => 'Liferea', 'id' => 'liferea', 'regexp' => '/Liferea\/([0-9.]*)/u' ], + [ 'name' => 'NewsBlur', 'id' => 'news', 'regexp' => '/NewsBlur\/([0-9.]*)/u', 'type' => Constants\DeviceType::MOBILE ], + [ 'name' => 'Newsbeuter', 'id' => 'news', 'regexp' => '/newsbeuter\/([0-9.]*)/u' ], + [ 'name' => 'JetBrains Omea Reader','id' => 'jetbrains', 'regexp' => '/JetBrains Omea Reader ([0-9.]*)/u' ], + [ 'name' => 'RSS Bandit', 'id' => 'rss', 'regexp' => '/RssBandit\/([0-9.]*)/u' ], + [ 'name' => 'RSS Junkie', 'id' => 'rss', 'regexp' => '/RSS Junkie Daemon/u' ], + [ 'name' => 'RSS Owl', 'id' => 'rss', 'regexp' => '/RSSOwl\/([0-9.]*)/u' ], + [ 'name' => 'Reeder', 'id' => 'reeder', 'regexp' => '/Reeder\/([0-9.]*)/u' ], + [ 'name' => 'ReedKit', 'id' => 'reedkit', 'regexp' => '/ReedKit\/([0-9.]*)/u', 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'Rome', 'id' => 'rome', 'regexp' => '/Rome Client/u' ], + [ 'name' => 'jsRSS++', 'id' => 'rss', 'regexp' => '/jsRSS++\/([0-9.]*)/u' ], + [ 'name' => 'Windows RSS Platorm', 'id' => 'rss', 'regexp' => '/Windows-RSS-Platform\/([0-9.]*)/u' ], ], Constants\BrowserType::APP_PODCAST => [ - [ 'name' => 'Ziepod', 'id' => 'ziepod', 'regexp' =>'/Ziepod\+? ([0-9.]*)/u' ], + [ 'name' => 'Ziepod', 'id' => 'ziepod', 'regexp' => '/Ziepod\+? ([0-9.]*)/u' ], ], Constants\BrowserType::APP_CHAT => [ - [ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' =>'/FBAN\/MessengerForiOS/u' ], - [ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' =>'/FB_IAB\/MESSENGER/u' ], - [ 'name' => 'Kik', 'id' => 'kik', 'regexp' =>'/Kik\/([0-9.]*?)(\.0)?\.[0-9]{3,4}/u' ], - [ 'name' => 'WeChat', 'id' => 'messenger', 'regexp' =>'/MicroMessenger\/([0-9.]*)/u' ], - [ 'name' => 'Wire', 'id' => 'wire', 'regexp' =>'/Wire\/([0-9.]*)/u' ], - [ 'name' => 'Yahoo Messenger', 'id' => 'yahoo', 'regexp' =>'/YahooMobile\/1.0 \(im; ([0-9.]+)\)/u', 'details' => 3 ], - [ 'name' => 'Yammer', 'id' => 'yammer', 'regexp' =>'/Yammer\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' => '/FBAN\/MessengerForiOS/u' ], + [ 'name' => 'Facebook Messenger', 'id' => 'messenger', 'regexp' => '/FB_IAB\/MESSENGER/u' ], + [ 'name' => 'Kik', 'id' => 'kik', 'regexp' => '/Kik\/([0-9.]*?)(\.0)?\.[0-9]{3,4}/u' ], + [ 'name' => 'Rocket Chat', 'id' => 'rocketchat', 'regexp' => '/Rocket\.Chat\+\/([0-9.]*)/u' ], + [ 'name' => 'Slack', 'id' => 'slack', 'regexp' => '/ Slack_SSB\/([0-9.]*)/u' ], + [ 'name' => 'WeChat', 'id' => 'messenger', 'regexp' => '/MicroMessenger\/([0-9.]*)/u' ], + [ 'name' => 'Wire', 'id' => 'wire', 'regexp' => '/Wire\/([0-9.]*)/u' ], + [ 'name' => 'Yahoo Messenger', 'id' => 'yahoo', 'regexp' => '/YahooMobile\/1.0 \(im; ([0-9.]+)\)/u', 'details' => 3 ], + [ 'name' => 'Yammer', 'id' => 'yammer', 'regexp' => '/Yammer\/([0-9.]*)/u', 'details' => 2 ], ], Constants\BrowserType::APP_SOCIAL => [ - [ 'name' => 'Facebook', 'id' => 'fbios', 'regexp' =>'/FBAN\/FBIOS/u' ], - [ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' =>'/FBAN\/FB4A/u' ], - [ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' =>'/FB_IAB\/FB4A/u' ], - [ 'name' => 'Google+', 'id' => 'googleplus', 'regexp' =>'/com.google.GooglePlus/u' ], - [ 'name' => 'Instagram', 'id' => 'instagram', 'regexp' =>'/Instagram ([0-9.]+)/u' ], - [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' =>'/\[Pinterest\/(Android|iOS)\]/u' ], - [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' =>'/Pinterest\/[0-9.]+/u' ], - [ 'name' => 'Sina Weibo', 'id' => 'weibo', 'regexp' =>'/weibo__([0-9.]*)/u' ], - [ 'name' => 'Tumblr', 'id' => 'tumblr', 'regexp' =>'/Tumblr\/([0-9.]*)/u' ], - [ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' =>'/TwitterAndroid/u' ], - [ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' =>'/Twitter for iPhone/u' ], - [ 'name' => 'WordPress', 'id' => 'wp-android', 'regexp' =>'/wp-android\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'fbios', 'regexp' => '/FBAN\/FBIOS/u' ], + [ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' => '/FBAN\/FB4A/u' ], + [ 'name' => 'Facebook', 'id' => 'fb4a', 'regexp' => '/FB_IAB\/FB4A/u' ], + [ 'name' => 'Facebook', 'id' => 'fbsv', 'regexp' => '/FBSV\/([0-9.]*)/u' ], + [ 'name' => 'Facebook', 'id' => 'fbav', 'regexp' => '/FBAV\/([0-9.]*)/u' ], + [ 'name' => 'Google+', 'id' => 'googleplus', 'regexp' => '/com.google.GooglePlus/u' ], + [ 'name' => 'Instagram', 'id' => 'instagram', 'regexp' => '/Instagram ([0-9.]+)/u' ], + [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' => '/\[Pinterest\/(Android|iOS)\]/u' ], + [ 'name' => 'Pinterest', 'id' => 'pinterest', 'regexp' => '/Pinterest\/[0-9.]+/u' ], + [ 'name' => 'Sina Weibo', 'id' => 'weibo', 'regexp' => '/weibo__([0-9.]*)/u' ], + [ 'name' => 'Tumblr', 'id' => 'tumblr', 'regexp' => '/Tumblr\/([0-9.]*)/u' ], + [ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' => '/TwitterAndroid/u' ], + [ 'name' => 'Twitter', 'id' => 'twitter', 'regexp' => '/Twitter for iPhone/u' ], + [ 'name' => 'WordPress', 'id' => 'wp-android', 'regexp' => '/wp-android\/([0-9.]*)/u' ], ], Constants\BrowserType::APP_OFFICE => [ - [ 'name' => 'LibreOffice', 'id' => 'office', 'regexp' =>'/LibreOffice/u' ], - [ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' =>'/MSOffice ([0-9.]*)/u' ], - [ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' =>'/Microsoft Office Mobile ?\/([0-9.]*)/u' ], - [ 'name' => 'Microsoft Excel', 'id' => 'office', 'regexp' =>'/Microsoft Office Excel ([0-9.]*)/u' ], - [ 'name' => 'Microsoft OneNote', 'id' => 'office', 'regexp' =>'/Microsoft Office OneNote ([0-9.]*)/u' ], - [ 'name' => 'Microsoft PowerPoint', 'id' => 'office', 'regexp' =>'/Microsoft Office PowerPoint ([0-9.]*)/u' ], - [ 'name' => 'Microsoft Word', 'id' => 'office', 'regexp' =>'/Microsoft Office Word ([0-9.]*)/u' ], - [ 'name' => 'OpenOffice', 'id' => 'office', 'regexp' =>'/OpenOffice\/([0-9.]*)/u' ], + [ 'name' => 'LibreOffice', 'id' => 'office', 'regexp' => '/LibreOffice/u' ], + [ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' => '/MSOffice ([0-9.]*)/u' ], + [ 'name' => 'Microsoft Office', 'id' => 'office', 'regexp' => '/Microsoft Office Mobile ?\/([0-9.]*)/u' ], + [ 'name' => 'Microsoft Excel', 'id' => 'office', 'regexp' => '/Microsoft Office Excel ([0-9.]*)/u' ], + [ 'name' => 'Microsoft OneNote', 'id' => 'office', 'regexp' => '/Microsoft Office OneNote ([0-9.]*)/u' ], + [ 'name' => 'Microsoft PowerPoint', 'id' => 'office', 'regexp' => '/Microsoft Office PowerPoint ([0-9.]*)/u' ], + [ 'name' => 'Microsoft Word', 'id' => 'office', 'regexp' => '/Microsoft Office Word ([0-9.]*)/u' ], + [ 'name' => 'OpenOffice', 'id' => 'office', 'regexp' => '/OpenOffice\/([0-9.]*)/u' ], ], Constants\BrowserType::APP_SEARCH => [ - [ 'name' => 'Bing Search', 'id' => 'bingweb', 'regexp' =>'/BingWeb\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Baidu Hao123', 'id' => 'hao123', 'regexp' =>'/hao123\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Google Search', 'id' => 'gsa', 'regexp' =>'/GSA\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'NAVER', 'id' => 'naver', 'regexp' =>'/NAVER\(inapp; search; [0-9]+; ([0-9.]*)\)/u' ], - [ 'name' => 'Sogou Search', 'id' => 'sogousearch', 'regexp' =>'/SogouSearch Android(?:[0-9.]*) version([0-9.]*)/u' ], - [ 'name' => 'Yandex Search', 'id' => 'yandex', 'regexp' =>'/YandexSearch\/([0-9.]*)/u' ], + [ 'name' => 'Bing Search', 'id' => 'bingweb', 'regexp' => '/BingWeb\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Baidu Hao123', 'id' => 'hao123', 'regexp' => '/hao123\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Google Search', 'id' => 'gsa', 'regexp' => '/GSA\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'NAVER', 'id' => 'naver', 'regexp' => '/NAVER\(inapp; search; [0-9]+; ([0-9.]*)\)/u' ], + [ 'name' => 'Sogou Search', 'id' => 'sogousearch', 'regexp' => '/SogouSearch Android(?:[0-9.]*) version([0-9.]*)/u' ], + [ 'name' => 'Yandex Search', 'id' => 'yandex', 'regexp' => '/YandexSearch\/([0-9.]*)/u' ], ], Constants\BrowserType::APP_EDITOR => [ - [ 'name' => 'Atom', 'id' => 'atom', 'regexp' =>'/Atom\/([0-9.]*)/u' ], - [ 'name' => 'Adobe GoLive', 'id' => 'golive', 'regexp' =>'/GoLive ([0-9.]*)/u' ], - [ 'name' => 'Brackets', 'id' => 'brackets', 'regexp' =>'/Brackets\/([0-9.]*)/u' ], - [ 'name' => 'iWeb', 'id' => 'iweb', 'regexp' =>'/(?:^| )iWeb\/([0-9])/u' ], - [ 'name' => 'Microsoft FrontPage', 'id' => 'frontpage', 'regexp' =>'/MS ?FrontPage[ \/]([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], - [ 'name' => 'W3C Amaya', 'id' => 'amaya', 'regexp' =>'/amaya\/([0-9.]*)/u' ], - [ 'name' => 'IBM WebSphere Homepage Builder', 'id' => 'websphere', 'regexp' =>'/IBM WebSphere Homepage Builder V([0-9.]*)/u' ], + [ 'name' => 'Atom', 'id' => 'atom', 'regexp' => '/Atom\/([0-9.]*)/u' ], + [ 'name' => 'Adobe GoLive', 'id' => 'golive', 'regexp' => '/GoLive ([0-9.]*)/u' ], + [ 'name' => 'Brackets', 'id' => 'brackets', 'regexp' => '/Brackets\/([0-9.]*)/u' ], + [ 'name' => 'iWeb', 'id' => 'iweb', 'regexp' => '/(?:^| )iWeb\/([0-9])/u' ], + [ 'name' => 'Microsoft FrontPage', 'id' => 'frontpage', 'regexp' => '/MS ?FrontPage[ \/]([0-9.]*)/u', 'details' => 2, 'type' => Constants\DeviceType::DESKTOP ], + [ 'name' => 'W3C Amaya', 'id' => 'amaya', 'regexp' => '/amaya\/([0-9.]*)/u' ], + [ 'name' => 'IBM WebSphere Homepage Builder', 'id' => 'websphere', 'regexp' => '/IBM WebSphere Homepage Builder V([0-9.]*)/u' ], ], Constants\BrowserType::APP_DOWNLOAD => [ - [ 'name' => 'Download Manager', 'id' => 'download', 'regexp' =>'/AndroidDownloadManager\//u' ], - [ 'name' => 'Tanso Download Manager', 'id' => 'tansodl', 'regexp' =>'/TansoDL/u' ], + [ 'name' => 'Download Manager', 'id' => 'download', 'regexp' => '/AndroidDownloadManager\//u' ], + [ 'name' => 'Tanso Download Manager', 'id' => 'tansodl', 'regexp' => '/TansoDL/u' ], ], Constants\BrowserType::APP_GAME => [ - [ 'name' => 'EA Origin', 'id' => 'origin', 'regexp' =>'/Origin\/([0-9.]*)/u' ], - [ 'name' => 'SecondLife', 'id' => 'secondlife', 'regexp' =>'/SecondLife\/([0-9.]*)/u' ], - [ 'name' => 'Valve Steam', 'id' => 'valve', 'regexp' =>'/Valve Steam/u' ], - [ 'name' => 'Raptr', 'id' => 'raptr', 'regexp' =>'/Raptr/u' ], + [ 'name' => 'EA Origin', 'id' => 'origin', 'regexp' => '/Origin\/([0-9.]*)/u' ], + [ 'name' => 'SecondLife', 'id' => 'secondlife', 'regexp' => '/SecondLife\/([0-9.]*)/u' ], + [ 'name' => 'Valve Steam', 'id' => 'valve', 'regexp' => '/Valve Steam/u' ], + [ 'name' => 'Valve Steam', 'id' => 'valve', 'regexp' => '/GameOverlay\/([0-9.]*)/u' ], + [ 'name' => 'Raptr', 'id' => 'raptr', 'regexp' => '/Raptr/u' ], ], Constants\BrowserType::APP => [ - [ 'name' => 'AliPay', 'id' => 'alipay', 'regexp' =>'/AlipayClient\/([0-9.]*)/u', 'details' => 3 ], - [ 'name' => 'Cooliris', 'id' => 'cooliris', 'regexp' =>'/Cooliris\/([0-9.]*)/u' ], - [ 'name' => 'Google Earth', 'id' => 'google', 'regexp' =>'/Google Earth\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Google Desktop', 'id' => 'google', 'regexp' =>'/Google Desktop\/([0-9.]*)/u', 'details' => 2 ], - [ 'name' => 'Leechcraft', 'id' => 'leechcraft', 'regexp' =>'/Leechcraft(?:\/([0-9.]*))?/u', 'details' => 2 ], - [ 'name' => 'Lotus Expeditor', 'id' => 'expeditor', 'regexp' =>'/Gecko Expeditor ([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'AliPay', 'id' => 'alipay', 'regexp' => '/AlipayClient\/([0-9.]*)/u', 'details' => 3 ], + [ 'name' => 'Cooliris', 'id' => 'cooliris', 'regexp' => '/Cooliris\/([0-9.]*)/u' ], + [ 'name' => 'Google Earth', 'id' => 'google', 'regexp' => '/Google Earth\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Google Desktop', 'id' => 'google', 'regexp' => '/Google Desktop\/([0-9.]*)/u', 'details' => 2 ], + [ 'name' => 'Leechcraft', 'id' => 'leechcraft', 'regexp' => '/Leechcraft(?:\/([0-9.]*))?/u', 'details' => 2 ], + [ 'name' => 'Lotus Expeditor', 'id' => 'expeditor', 'regexp' => '/Gecko Expeditor ([0-9.]*)/u', 'details' => 3 ], ] ]; diff --git a/data/regexes/applications-bots.php b/data/regexes/applications-bots.php index 740a281b8..8eca3aea9 100644 --- a/data/regexes/applications-bots.php +++ b/data/regexes/applications-bots.php @@ -2,4 +2,4 @@ namespace WhichBrowser\Data; -Applications::$BOTS_REGEX = '/(008|360|a6|abound|muncher|adaxas|addthis|admantx|ahrefsbot|archiver|altavista|curious|cloudfront|amorank|archive|jeeves|astra|backlink|baidu|bazqux|bingbot|msnbot|msmobot|bing|blogbridge|bloglines|bloglovin|blogpulse|blogram|blogtrot|blogshares|boardreader|browsershots|bubing|butterfly|heritrix|cliqz|cloudflare|comodo|commafeed|cbot|watchdog|datasearch|daumoa|digg|domain|exabot|exactseek|ezooms|facebook|fast|flamingo|fastladder|feed|wrangler|validator|fever|friendica|robot|genieo|fetchor|google|gomez|ichiro|gooblog|goorss|grammarly|grub|hatena|capture|heureka|htdig|httpmon|hubpages|spider|crawler|kouio|larbin|linkedin|linkdex|livedoor|ltx71|magpie|mapion|socialstreams|mixi|mnogo|monitor|yeti|netcraft|netvibes|newsblur|newsgator|orange|pages|psbot|pingdom|pinterest|postrank|python|comment|rssbar|hunter|quora|safesearch|scrapy|seznam|shopwiki|reader|simplepie|site24|sogou|sophora|soso|spdycheck|spinn|detector|summify|telegram|twisted|twitter|tiny|tlsprober|typhoeus|vagabondo|voila|vocus|mcrawler|w3bot|jigsaw|w3c|wayback|webindexer|wordpress|mechanize|xerka|sitemap|yacy|yandex|yahoo|y\!j|slurp|httpclient|nutch|synapse|indy|wget|curl|package|java|simple|libwww|lwp|urllib|php|pear|zend|ruby)/i'; +Applications::$BOTS_REGEX = '/(008|360|a6|abound|muncher|adaxas|addthis|admantx|ahrefsbot|archiver|altavista|curious|cloudfront|amorank|archive|jeeves|astra|backlink|baidu|bazqux|bingbot|msnbot|msmobot|bing|blogbridge|bloglines|bloglovin|blogpulse|blogram|blogtrot|blogshares|boardreader|browsershots|bubing|butterfly|heritrix|cliqz|cloudflare|comodo|commafeed|cbot|watchdog|datasearch|daumoa|digg|domain|exabot|exactseek|ezooms|facebook|fast|flamingo|fastladder|feed|wrangler|validator|fever|friendica|robot|genieo|fetchor|google|gomez|ichiro|gooblog|goorss|grammarly|grub|hatena|capture|heureka|htdig|httpmon|hubpages|spider|crawler|kouio|larbin|linkedin|linkdex|livedoor|ltx71|magpie|mapion|socialstreams|mixi|mnogo|monitor|yeti|netcraft|netvibes|newsblur|newsgator|orange|pages|psbot|pingdom|pinterest|postrank|python|comment|rssbar|hunter|quora|safesearch|scrapy|seznam|shopwiki|reader|simplepie|site24|sogou|sophora|soso|spdycheck|spinn|detector|summify|telegram|twisted|twitter|tiny|tlsprober|typhoeus|vagabondo|voila|vocus|mcrawler|w3bot|jigsaw|w3c|wayback|webindexer|wordpress|mechanize|xerka|sitemap|yacy|yandex|yahoo|y\!j|slurp|httpclient|nutch|synapse|indy|wget|curl|package|java|simple|libwww|lwp|urllib|php|pear|zend|ruby)/u'; diff --git a/data/regexes/applications-browsers.php b/data/regexes/applications-browsers.php index a23752a7a..e29eacf1f 100644 --- a/data/regexes/applications-browsers.php +++ b/data/regexes/applications-browsers.php @@ -2,4 +2,4 @@ namespace WhichBrowser\Data; -Applications::$BROWSERS_REGEX = '/(115|126|2345|qihu|7star|abrowse|acorn|acoo|aol|america|arachne|arora|aweb|avant|asw|aviator|flyflow|bdbrowser|bdspark|beamrise|blackwren|brave|byffox|camino|canure|charon|chromeplus|cometbird|comodo|dragon|conkeror|coolnovo|cunaguaro|cyberfox|daedalus|dillo|rhodonit|eudoraweb|flock|galeon|epiphany|ibrowse|icab|iceape|icecat|iceweasel|iridium|iron|kazehakase|kchrome|meleon|lbbrowser|lobo|lunascape|naenara|mxbrowser|mixshark|mlbrowser|netpositive|origyn|owb|orca|oregano|otter|palemoon|qtweb|qupzilla|rekonq|ryouko|saayaa|sleipnir|metasr|stainless|sunchrome|superbird|swing|tencent|tenfourfox|theworld|tungsten|vivaldi|voyager|waterfox|yabrowser|1password|3g explorer|4g explorer|atomiclite|au|awakening|baidu|bdmobile|bidu|baiduboxapp|browser|blazer|acheetahi|cornowser|coolmarket|cute|digia|doris|doroty|www browser|eui|go\.web|helium|huohoubrowser|surfboard|isurf|jig browser|jumanji|kiosk|lebrowser|liebao|macross|mammoth|mcent|mib|cmcs|motorola|netfrontlife|onebrowser|plink|polaris|openwave|up|km|oppo|quark|semc|stnc|sogou|symphony|ucpro|vivo|weblite|alti|aplix|awox|browserserver|isis|spyglass|oregan|viera|zetakey|bunjalloo|nwf|nuanti|wib|prince|demobrowser|dooble|dwb|evm|fireweb|hive|intermec|phantom|qt|roccat|raven|rockmelt|scope|slim|smbrowser|snowshoe|sputnik|surf|tao|taz|uzbl|villanova|vimb|wada|wavelink|webrender|webster|wyzo|yelang|yrcweb|linemode|lynx|links|w3m|nimbus|Webwasher|sankore|adapi|brightsign|coship)/i'; +Applications::$BROWSERS_REGEX = '/(115|126|2345|37abc|qihu|qiyu|1stbrowser|7star|abrowse|acorn|acoo|adventurer|alienforce|amigo|aol|america|aolshield|apus|arachne|arcfox|arora|aweb|avant|asw|aventsec|aviator|avira|flyflow|bdbrowser|bdspark|basilisk|beamrise|blackwren|blackhawk|bolt|brave|brisk|browsex|browzar|byffox|camino|canure|ccleaner|cent|charon|chedot|cheshire|chimera|chimlac|chromeplus|classilla|cometbird|comodo|dragon|conkeror|coocoo|colibri|coolnovo|crazy|cunaguaro|cyberfox|daedalus|degan|deepexpl|dillo|rhodonit|element|elements|eudoraweb|falkon|flamesky|flock|framafox|freeu|galeon|epiphany|headless|hola|hv3|ibrowse|icab|icebrow|iceape|icecat|icedove|iceweasel|iridium|iron|juzi|kapiko|kazehakase|kchrome|kinza|kirix|meleon|kninja|kkman|klondike|kylo|lbbrowser|lieyang|light|lobo|lolifox|lovense|luakit|lunascape|naenara|mxbrowser|min|mini|mixshark|mlbrowser|multizilla|mypal|nichrome|netpositive|netcast|ntent|origyn|owb|orca|oregano|otter|palemoon|pirate|privacy|qtweb|quicklook|qute|qupzilla|rekonq|ryouko|saayaa|salam|seznam|shiira|sleipnir|slimerjs|slimjet|sielo|sitekiosk|metasr|sputnik|irondesktop|stainless|station|sunchrome|sunrise|superbird|swing|surf|tencent|tenfourfox|theworld|tungsten|ur|vivaldi|vmware|voyager|waterfox|webexplorer|whale|winwap|yabrowser|zvu|1password|3g explorer|4g explorer|aloha|atomiclite|au|awakening|baidu|bdmobile|bidu|baiduboxapp|browser|blazer|acheetahi|cornowser|coolmarket|cute|corom|digia|diigo|doris|doroty|ecosia|epic|www browser|eui|fluid|go\.web|helium|heytap|huohoubrowser|surfboard|isurf|jig browser|jumanji|kbrowser|kiosk|kiwi|lebrowser|liebao|macross|mammoth|mcent|mint|mobicip|mib|cmcs|motorola|netfrontlife|onebrowser|oneplus|plink|polaris|openwave|up|km|oppo|quark|semc|stnc|startbrowser|sogou|ironmobile|symphony|tenta|ucpro|vivo|weblite|wk|yaani|alti|aplix|awox|freebox|browserserver|isis|spyglass|oregan|viera|zetakey|bunjalloo|nwf|nuanti|wib|prince|tesla|demobrowser|dooble|dwb|evm|fireweb|hive|intermec|phantom|qt|roccat|raven|rockmelt|scope|slim|smbrowser|snowshoe|surfchina|tao|taz|uzbl|villanova|vimb|wada|wavelink|webrender|webster|wyzo|yelang|yrcweb|linemode|lynx|links|w3m|nimbus|Webwasher|sankore|adapi|brightsign|coship)/u'; diff --git a/data/regexes/applications-others.php b/data/regexes/applications-others.php index 382b3ab4c..3a9382061 100644 --- a/data/regexes/applications-others.php +++ b/data/regexes/applications-others.php @@ -2,4 +2,4 @@ namespace WhichBrowser\Data; -Applications::$OTHERS_REGEX = '/(itunes|qt|bluefish|nightingale|songbird|stagefright|substream|vlc|windows-media|coreplayer|flycast|boxee|kodi|xbmc|lightning|thunderbird|outlook|lotus|postbox|bat|yahoo|daum|flipboard|akregator|blogos|cococ|feed|liferea|news|jetbrains|rss|reeder|reedkit|rome|ziepod|messenger|kik|wire|yammer|fbios|fb4a|googleplus|instagram|pinterest|weibo|tumblr|twitter|wp-android|office|bingweb|hao123|gsa|naver|sogousearch|yandex|atom|golive|brackets|iweb|frontpage|amaya|websphere|download|tansodl|origin|secondlife|valve|raptr|alipay|cooliris|google|leechcraft|expeditor)/i'; +Applications::$OTHERS_REGEX = '/(itunes|qt|bluefish|nightingale|songbird|stagefright|substream|vlc|windows-media|coreplayer|flycast|boxee|kodi|xbmc|lightning|thunderbird|outlook|lotus|postbox|bat|yahoo|daum|flipboard|akregator|blogos|cococ|feed|liferea|news|jetbrains|rss|reeder|reedkit|rome|ziepod|messenger|kik|rocketchat|slack|wire|yammer|fbios|fb4a|fbsv|fbav|googleplus|instagram|pinterest|weibo|tumblr|twitter|wp-android|office|bingweb|hao123|gsa|naver|sogousearch|yandex|atom|golive|brackets|iweb|frontpage|amaya|websphere|download|tansodl|origin|secondlife|valve|raptr|alipay|cooliris|google|leechcraft|expeditor)/u'; diff --git a/src/Analyser/Header/Useragent/Browser.php b/src/Analyser/Header/Useragent/Browser.php index f85d23b7a..e84f05ced 100644 --- a/src/Analyser/Header/Useragent/Browser.php +++ b/src/Analyser/Header/Useragent/Browser.php @@ -67,8 +67,6 @@ private function &refineBrowser($ua) } - - /* Safari */ private function detectSafari($ua) @@ -673,7 +671,7 @@ private function detectOpera($ua) private function detectFirefox($ua) { - if (!preg_match('/(Firefox|GranParadiso|Namoroka|Shiretoko|Minefield|BonEcho|Fennec|Phoenix|Firebird|Minimo|FxiOS|Focus)/ui', $ua)) { + if (!preg_match('/(Firefox|Lorentz|GranParadiso|Namoroka|Shiretoko|Minefield|BonEcho|Fennec|Phoenix|Firebird|Minimo|FxiOS|Focus)/ui', $ua)) { return; } @@ -738,7 +736,7 @@ private function detectFirefox($ua) } - if (preg_match('/(GranParadiso|Namoroka|Shiretoko|Minefield|BonEcho)/u', $ua, $match)) { + if (preg_match('/(Lorentz|GranParadiso|Namoroka|Shiretoko|Minefield|BonEcho)/u', $ua, $match)) { $this->data->browser->stock = false; $this->data->browser->name = 'Firefox'; $this->data->browser->channel = str_replace('GranParadiso', 'Gran Paradiso', $match[1]); @@ -1597,6 +1595,10 @@ private function detectWebOSBrowser($ua) $this->data->browser->name = 'webOS Browser'; $this->data->browser->type = Constants\BrowserType::BROWSER; + if (preg_match('/wOSBrowser\/([0-9.]*)/u', $ua, $match)) { + $this->data->browser->version = new Version([ 'value' => $match[1] ]); + } + if ($this->data->os->name != 'webOS') { $this->data->os->name = 'webOS'; } diff --git a/tests/data/car/tesla.yaml b/tests/data/car/tesla.yaml index c34c79da6..8224c62b9 100644 --- a/tests/data/car/tesla.yaml +++ b/tests/data/car/tesla.yaml @@ -6,3 +6,11 @@ headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) QtCarBrowser Safari/533.3' result: { engine: { name: Webkit, version: '533.3' }, device: { type: car, manufacturer: Tesla, model: 'Model S' } } readable: 'a Tesla Model S' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux; C) AppleWebKit/533.3 (KHTML, like Gecko) QtCarBrowser Safari/533.3' + result: { browser: { name: 'Tesla Browser', type: browser }, engine: { name: Webkit, version: '533.3' }, device: { type: car, manufacturer: Tesla, model: 'Model S' } } + readable: 'Tesla Browser on a Tesla Model S' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2110.0 TeslaBrowser/1.0.0.4863 Safari/537.36' + result: { browser: { name: 'Tesla Browser', family: { name: Chrome, version: 38.0.2110.0 }, version: 1.0.0.4863, type: browser }, engine: { name: Webkit }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: car, manufacturer: Tesla, model: 'Model S' } } + readable: 'Tesla Browser on a Tesla Model S' diff --git a/tests/data/desktop/browser-other.yaml b/tests/data/desktop/browser-other.yaml index 16a324267..7f7f0a010 100644 --- a/tests/data/desktop/browser-other.yaml +++ b/tests/data/desktop/browser-other.yaml @@ -158,3 +158,315 @@ headers: 'User-Agent: Mozilla/5.0 (compatible; iCab 3.0.3; Macintosh; U; PPC Mac OS)' readable: 'iCab 3.0.3 on Mac OS' result: { browser: { name: iCab, version: 3.0.3, type: browser }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36 Kinza/6.1.6' + readable: 'Kinza 6.1.6 on Windows 10' + result: { browser: { name: Kinza, family: { name: Chrome, version: 80.0.3987.149 }, version: 6.1.6, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 1stBrowser/45.0.2454.171 Safari/537.36' + result: { browser: { name: 1stBrowser, family: { name: Chrome, version: 49.0.2623.75 }, version: 45.0.2454.171, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: '1stBrowser 45.0.2454.171 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML like Gecko) 37abc/1.6.5.14 Chrome/44.0.2403.130 Safari/537.36' + result: { browser: { name: '37abc Browser', family: { name: Chrome, version: 44.0.2403.130 }, version: 1.6.5.14, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: '37abc Browser 1.6.5.14 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.5.2526.111 Amigo/47.5.2526.111 MRCHROME SOC Safari/537.36' + result: { browser: { name: 'Amigo Browser', family: { name: Chrome, version: 47.5.2526.111 }, version: 47.5.2526.111, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Amigo Browser 47.5.2526.111 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36 AOLShield/79.0.3945.5' + result: { browser: { name: 'AOL Shield', family: { name: Chrome, version: 79.0.3945.130 }, version: 79.0.3945.5, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'AOL Shield 79.0.3945.5 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pt) Chrome/37.0.2049.0 (KHTML, like Gecko) Version/4.0 APUSBrowser/1.1.111 Safari/' + result: { browser: { name: 'APUS Browser', family: { name: Chrome, version: 37.0.2049.0 }, version: 1.1.111, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'APUS Browser 1.1.111 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36 AviraScout/17.6.3071.2851' + readable: 'Avira Scout 17.6.3071.2851 on Windows 10' + result: { browser: { name: 'Avira Scout', family: { name: Chrome, version: 59.0.3071.115 }, version: 17.6.3071.2851, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.9) Gecko/20100101 Goanna/4.5 Firefox/68.9 Basilisk/20200311' + readable: 'Basilisk 20200311 on Windows 10' + result: { browser: { name: Basilisk, family: { name: Firefox, version: '68.9' }, version: 20200311, type: browser }, engine: { name: Gecko, version: '68.9' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Browzar)' + result: { browser: { name: 'Browzar', type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Browzar on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/47.0.2526.106 Safari/537.36 Cent/1.6.10.21' + readable: 'Cent Browser 1.6.10.21 on Windows 10' + result: { browser: { name: 'Cent Browser', family: { name: Chrome, version: 47.0.2526.106 }, version: 1.6.10.21, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Chedot/9.1.1 Safari/537.36' + readable: 'Chedot 9.1.1 on Windows 10' + result: { browser: { name: Chedot, family: { name: Chrome, version: 76.0.3809.87 }, version: 9.1.1, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.4; en) AppleWebKit/418.9 (KHTML, like Gecko, Safari) Safari/419.3 Cheshire/1.0.ALPHA' + result: { browser: { name: Cheshire, version: '1.0.ALPHA', type: browser }, engine: { name: Webkit, version: '418.9' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Cheshire on Mac OS X 10.4' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X PPC Mac OS X 10.4; en-US; rv:1.0.1) Gecko/20030111 Chimera/0.6' + result: { browser: { name: Chimera, version: 0.6, type: browser }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Chimera 0.6 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) coc_coc_browser/56.3.126 Chrome/50.3.2661.126 Safari/537.36' + readable: 'Coc Coc 56.3.126 on Windows 10' + result: { browser: { name: 'Coc Coc', family: { name: Chrome, version: 50.3.2661.126 }, version: 56.3.126, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; Crazy Browser 2.0.1)' + result: { browser: { name: 'Crazy Browser', version: 2.0.1, type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Crazy Browser 2.0.1 on Windows XP' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Deepnet Explorer 1.5.0; .NET CLR 1.0.3705)' + result: { browser: { name: 'Deepnet Explorer', version: 1.5.0, type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Deepnet Explorer 1.5.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/533+ (KHTML, like Gecko) Element Browser 5.0' + result: { browser: { name: 'Element Browser', version: 5.0, type: browser }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Element Browser 5.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.14.3282.140 Elements Browser/1.1.14 Safari/537.36' + readable: 'Elements Browser 1.1.14 on Windows 10' + result: { browser: { name: 'Elements Browser', family: { name: Chrome, version: 64.14.3282.140 }, version: 1.1.14, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/80.0.3987.162 Safari/537.36' + readable: 'Headless Chrome 80.0.3987.162 on Windows 10' + result: { browser: { name: 'Headless Chrome', family: { name: Chrome, version: 80.0.3987.162 }, version: 80.0.3987.162, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.6.0' + result: { browser: { name: Icedove, version: 45.6.0, type: browser }, os: { name: Linux }, device: { type: desktop } } + readable: 'Icedove 45.6.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.4150.1 Iron Safari/537.36' + readable: 'SRWare Iron 80.0.4150.1 on Windows 10' + result: { browser: { name: 'SRWare Iron', family: { name: Chrome, version: 80.0.4150.1 }, version: 80.0.4150.1, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.103 Safari/537.36 JuziBrowser' + readable: 'Juzi Browser on Windows 10' + result: { browser: { name: 'Juzi Browser', family: { name: Chrome, version: 48.0.2564.103 }, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2pre) Gecko/20070215 K-Ninja/2.1.1' + readable: 'K-Ninja 2.1.1 on Windows XP' + result: { browser: { name: 'K-Ninja', version: 2.1.1, type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C' + result: { browser: { name: 'KKMAN Browser', version: 3.2, type: browser }, engine: { name: Trident, version: '4.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'KKMAN Browser 3.2 on Windows 7' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; KKMAN3.2; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C' + result: { browser: { name: 'Klondike', version: 1.50, type: browser } } + readable: 'Klondike 1.50' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0 Light/44.0' + readable: 'Light Browser 44.0 on Windows 10' + result: { browser: { name: 'Light Browser', family: { name: Firefox, version: 44.0 }, version: 44.0, type: browser }, engine: { name: Gecko, version: '44.0' }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.8pre) Gecko/20071012 lolifox/0.3.6 Firefox/2.0.0.7 compatible' + readable: 'Lolifox 0.3.6 on Windows XP' + result: { browser: { name: Lolifox, family: { name: Firefox, version: 2.0.0.7 }, version: 0.3.6, type: browser }, engine: { name: Gecko, version: '2.0.0.7' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux i686) AppleWebKit/535.22+ (KHTML, like Gecko) WebKitGTK+/1.8.0 luakit' + readable: 'Luakit 1.8.0 on Linux' + result: { browser: { name: Luakit, version: 1.8.0, type: browser }, engine: { name: Webkit, value: 535.22 }, os: { name: Linux }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows XP) Gecko MultiZilla/1.6.1.0a' + readable: 'MultiZilla 1.6.1.0 on Windows XP' + result: { browser: { name: 'MultiZilla', version: 1.6.1.0, type: browser }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5 Nichrome/self/19' + result: { browser: { name: 'Nichrome', family: { name: Chrome, version: 19.0.1084.46 }, version: 19, type: browser }, engine: { name: Webkit }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Nichrome 19 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 X11 (Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.9 NTENTBrowser/4.2.0.184 Safari/537.36' + result: { browser: { name: 'NTENT Browser', family: { name: Chrome, version: 54.0.2840.9 }, version: 4.2.0.184, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'NTENT Browser 4.2.0.184 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/522.11.1 (KHTML, like Gecko) Shiira Safari/125' + result: { browser: { name: Shiira, type: browser }, engine: { name: Webkit }, os: { name: 'OS X' }, device: { manufacturer: Apple, model: Macintosh, type: desktop } } + readable: 'Shiira on Mac OS X' +- + headers: 'User-Agent: PrivacyBrowser/1.0' + result: { browser: { name: 'Privacy Browser' }, version: 1.0, type: browser } + readable: 'Privacy Browser 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/51.0.2704.63 Safari/537.36 Qiyu/1.2.3.3' + readable: 'Qiyu Browser 1.2.3.3 on Windows 10' + result: { browser: { name: 'Qiyu Browser', family: { name: Chrome, version: 51.0.2704.63 }, version: 1.2.3.3, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/601.6.17 (KHTML, like Gecko) QuickLook/5.0' + result: { browser: { name: 'Quick Look', version: 5.0, type: browser }, engine: { name: Webkit }, os: { name: 'OS X', version: 10.11.5 }, device: { manufacturer: Apple, model: Macintosh, type: desktop } } + readable: 'Quick Look 5.0 on Mac OS X 10.11.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.75 Safari/537.36 SznProhlizec/6.1.0' + readable: 'Seznam Browser 6.1.0 on Windows 10' + result: { browser: { name: 'Seznam Browser', family: { name: Chrome, version: 77.0.3865.75 }, version: 6.1.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 SlimerJS/0.9.5' + readable: 'SlimerJS 6.1.0 on Ubuntu' + result: { browser: { name: SlimerJS, version: 0.9.5, type: browser }, engine: { name: Gecko, version: '36.0' }, os: { name: Ubuntu }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36 Slimjet/19.0.2.0' + readable: 'Webkit based browser 19.0.2.0 on Windows 10' + result: { browser: { name: 'SlimJet Browser', family: { name: Chrome, version: 66.0.3359.117 }, version: 19.0.2.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 SputnikBrowser/4.1.2810.0 (GOST) Safari/537.36' + readable: 'Sputnik 4.1.2810.0 on Windows 10' + result: { browser: { name: 'Sputnik', family: { name: Chrome, version: 64.0.3282.140 }, version: 4.1.2810.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_4_11; en) AppleWebKit/525.18 (KHTML, like Gecko) Sunrise/1.7.4 like Safari/4525.22' + result: { browser: { name: 'Sunrise Browser', version: 1.7.4, type: browser }, engine: { name: Webkit, version: '4525.22' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.4.11' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Sunrise Browser 1.7.4 on Mac OS X 10.4.11' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC; en-US; mimic; rv:9.3.0) Gecko/20120117 Firefox/3.6.25 Classilla/CFM' + result: { browser: { name: 'Classilla Browser', version: 'CFM', type: browser }, engine: { name: Gecko, version: 9.3.0 }, os: { name: 'Mac OS' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Classilla Browser CFM on Mac OS' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Safari/537.36 Chrome/58.0.3029.96 UR/55.1.2883.70' + readable: 'UR Browser 55.1.2883.70 on Windows 10' + result: { browser: { name: 'UR Browser', family: { name: Chrome, version: 58.0.3029.96 }, version: 55.1.2883.70, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: PB1.0b Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0' + result: { browser: { name: 'Pirate Browser', version: 1.0b, type: browser }, engine: { name: Gecko, version: 37.0 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Pirate Browser 1.0b on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.4.1 Safari/605.1.15 (Airwatch Browser v7.9)' + result: { browser: { name: 'VMware Browser', version: 7.9, type: browser }, engine: { name: Webkit, version: '605.1.15' }, os: { name: 'OS X', nickname: 'El Capitan', version: '10.11.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'VMware Browser 7.9 on Mac OS X 10.11.5' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6 WebExplorer/13.1' + result: { browser: { name: 'Web Explorer Browser', family: { name: Chrome, version: 20.0.1090.0 }, version: 13.1, type: browser }, engine: { name: Webkit, version: '536.6' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Web Explorer Browser 13.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Whale/2.7.97.12 Safari/537.36' + readable: 'Whale Browser 2.7.97.12 on Windows 10' + result: { browser: { name: 'Whale Browser', family: { name: Chrome, version: 80.0.3987.132 }, version: 2.7.97.12, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: WinWAP/4.1 (Win32) WinWAP-X/4.1.0.192' + readable: 'WinWAP Browser 4 on Windows' + result: { browser: { name: 'WinWAP Browser', version: 4, type: browser }, os: { name: Windows }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20130204 Zvu/18.0.1' + result: { browser: { name: 'Zvu Browser', version: 18.0.1, type: browser }, engine: { name: Gecko, version: '18.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Zvu Browser 18.0.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Falkon/3.0.0 Chrome/56.0.2924.122 Safari/537.36' + result: { browser: { name: 'Falkon', family: { name: Chrome, version: 56.0.2924.122 }, version: 3.0.0, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Falkon 3.0.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (windows nt 10.0; wow64) applewebkit/537.36 (khtml, like gecko) chrome/63.0.3239.132 adventurer/4.0.0.0 safari/537.36' + readable: 'Adventurer 4.0.0.0 on Windows 10' + result: { browser: { name: 'Adventurer', family: { name: Chrome, version: 63.0.3239.132 }, version: 4.0.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20111108 Firefox/8.0 Alienforce/8.0' + result: { browser: { name: 'Alienforce', version: 8.0, type: browser }, engine: { name: Gecko, version: '8.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Alienforce 8.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:52.9) Gecko/20100101 Goanna/3.4 Firefox/52.9 ArcticFox/27.9.15' + result: { browser: { name: 'Arctic Fox', version: 27.9.15, type: browser }, engine: { name: Goanna, version: 3.4 }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Arctic Fox 27.9.15 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:25.3) Gecko/20150425 BlackHawk/25.3.1' + result: { browser: { name: 'Black Hawk', version: 25.3.1, type: browser }, engine: { name: Gecko, version: 25.3 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Black Hawk 25.3.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; BOLT/2.514) AppleWebKit/534.6 (KHTML, like Gecko) Version/5.0 Safari/534.6.3' + result: { browser: { name: 'Bolt Browser', version: 2.514, type: browser }, engine: { name: Webkit, version: 534.6.3 }, os: { name: Windows, version: { value: '5.1', alias: 'XP' } }, device: { type: desktop } } + readable: 'Bolt Browser 2.514 on Windows XP' +- + headers: 'User-Agent: BriskBard/1.0 (Windows 10) BriskBard/1.0' + readable: 'Brisk Bard 1.0 on Windows 10' + result: { browser: { name: 'Brisk Bard', version: 1.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5 [en] (X11; U; ) - BrowseX (2.0.0 Windows)' + readable: 'BrowseX 2.0.0 on Windows' + result: { browser: { name: 'BrowseX', version: 2.0.0, type: browser }, os: { name: Windows }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 CCleaner/75.1.103.145' + result: { browser: { name: 'CCleaner Browser', family: { name: Chrome, version: 75.0.3770.142 }, version: 75.1.103.145, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'CCleaner Browser 75.1.103.145 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) chimlac_browser/1.0 Chrome/57.0.2987.110 Safari/537.36' + result: { browser: { name: 'Chim Lac', family: { name: Chrome, version: 57.0.2987.110 }, version: 1.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chim Lac 1.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Colibri/1.5.1 Chrome/61.0.3163.100 Electron/2.0.2 Safari/537.36' + result: { browser: { name: 'Colibri', using: { name: Electron, version: 2.0.2 }, family: { name: Chrome, version: 61.0.3163.100 }, version: 1.5.1, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Colibri 1.5.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Degdegan/72.4.206 Chrome/66.4.3359.206 Safari/537.36' + result: { browser: { name: 'Deg-degan', using: { name: Electron, version: 2.0.2 }, family: { name: Chrome, version: 66.4.3359.206 }, version: 72.4.206, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Deg-degani 72.4.206 on Windows 7' +- + headers: 'User-Agent: FlameSky/5.0.0.0 Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.2987.110 Safari/537.36' + result: { browser: { name: 'FlameSky', family: { name: Chrome, version: 64.0.2987.110 }, version: 5.0.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'FlameSky 5.0.0.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0 Framafox/43.0.1' + result: { browser: { name: 'Framafox', version: 43.0.1, type: browser }, engine: { name: Gecko, version: 43.0 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Framafox 43.0.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.69 Freeu/61.0.3163.69 MRCHROME SOC Safari/537.36' + result: { browser: { name: 'Freeu Browser', family: { name: Chrome, version: 61.0.3163.69 }, version: 61.0.3163.69, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Freeu Browser 61.0.3163.69 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36 Hola/1.142.604' + result: { browser: { name: 'Hola Browser', family: { name: Chrome, version: 74.0.3729.157 }, version: 1.142.604, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Hola Browser 1.142.604 on Windows 7' +- + headers: 'Mozilla/5.1 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060425 SUSE/1.5.0.3-7 Hv3/alpha' + result: { browser: { name: 'Hv3 Browser', version: alpha, type: browser }, engine: { name: Gecko, version: 1.8.0.3 }, os: { name: SUSE, version: 1.5.0.3-7 }, device: { type: desktop } } + readable: 'Hv3 Browser alpha on SUSE 1.5.0.3-7' +- + headers: 'User-Agent: Mozilla/5.0 (Java 1.6.0_01; Windows XP 5.1 x86; en) ICEbrowser/v6_1_2' + result: { browser: { name: 'ICE Browser', version: 6, type: browser }, os: { name: Windows, version: { value: '5.1', alias: 'XP' } }, device: { type: desktop } } + readable: 'ICE Browser 6 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/20080705 Firefox/3.0 Kapiko/3.0' + result: { browser: { name: 'Kapiko', version: 3.0, type: browser }, engine: { name: Gecko, version: 1.9 }, os: { name: Windows, version: { value: '5.1', alias: 'XP' } }, device: { type: desktop } } + readable: 'Kapiko 3.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko Strata/4.4.1.1402' + result: { browser: { name: 'Kirix Strata', version: 4.4.1.1402, type: browser }, engine: { name: Gecko, version: 1.9.1.3 }, os: { name: Windows, version: { value: '5.1', alias: 'XP' } }, device: { type: desktop } } + readable: 'Kirix Strata 4.4.1.1402 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100222 Firefox/3.6 Kylo/0.8.4.74873' + result: { browser: { name: 'Kylo', version: 0.8.4.74873, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: Windows, version: { value: '5.1', alias: 'XP' } }, device: { type: desktop } } + readable: 'Kylo 0.8.4.74873 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 LieYing/4.0.0 PicoChromium/4.0.0 Safari/537.36' + readable: 'LieYing 4.0.0 on Windows 10' + result: { browser: { name: 'LieYing', family: { name: Chrome, version: 58.0.3029.110 }, version: 4.0.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) min/1.2.2 Chrome/49.0.2623.75 Electron/0.37.1 Safari/537.36' + result: { browser: { name: 'Min Browser', using: { name: Electron, version: 0.37.1 }, family: { name: Chrome, version: 49.0.2623.75 }, version: 1.2.2, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Min Browser 1.2.2 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; cs-CZ) AppleWebKit/532.4 (KHTML, like Gecko) MiniBrowser/3.0 Safari/532.4' + result: { browser: { name: 'Mini Browser', version: 3.0, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Mini Browser 3.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:68.9) Gecko/20100101 Goanna/4.4 Firefox/68.9 Mypal/28.8.4' + result: { browser: { name: 'Mypal Browser', version: 28.8.4, type: browser }, engine: { name: Goanna, version: 4.4 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Mypal Browser 28.8.4 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/538.1 (KHTML, like Gecko) qutebrowser/0.9.1 Safari/538.1' + result: { browser: { name: 'Qute Browser', version: 0.9.1, type: browser }, engine: { name: Webkit, version: 538.1 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Qute Browser 0.9.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) SalamWeb/3.0.1.592 AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.101 Safari/537.36' + result: { browser: { name: 'SalamWeb', family: { name: Chrome, version: 75.0.3770.101 }, version: 3.0.1.592, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'SalamWeb 3.0.1.592 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Secure/52.0.2743.230 Safari/537.36' + result: { browser: { name: 'Avast Secure Browser', family: { name: Chrome, version: 52.0.2743.116 }, version: 52.0.2743.230, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Avast Secure Browser 52.0.2743.230 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.1; SiteKiosk 7.0 Build 248)' + result: { browser: { name: 'SiteKiosk', version: 7.0, type: browser }, engine: { name: Trident }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'SiteKiosk 7.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Station/1.57.1 Chrome/76.0.3809.131 Safari/537.36' + readable: 'Station Browser 1.57.1 on Windows 10' + result: { browser: { name: 'Station Browser', family: { name: Chrome, version: 76.0.3809.131 }, version: 1.57.1, type: browser }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } diff --git a/tests/data/mobile/app-chat.yaml b/tests/data/mobile/app-chat.yaml index 7da09916b..c1cf21a43 100644 --- a/tests/data/mobile/app-chat.yaml +++ b/tests/data/mobile/app-chat.yaml @@ -82,3 +82,11 @@ headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801910121S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Mobile Safari/537.36 Wire/0.564.2.20' readable: 'Wire 0.564.2.20 on a LeEco Le 2 X526 running Android 6.0.1' result: { browser: { name: Wire, family: { name: Chrome, version: 56 }, version: 0.564.2.20, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X526' } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) AtomShell/2.3.1 Chrome/52.0.2743.82 Electron/1.3.8 Safari/537.36 Slack_SSB/2.3.1' + readable: 'Slack 2.3.1 on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: Slack, using: { name: Electron, version: 1.3.8 }, family: { name: Chrome, version: 52.0.2743.82 }, version: 2.3.1, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 7.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X526' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B440 Rocket.Chat+/2.9.0 Chrome/58.0.3029.110 Electron/1.7.6 Safari/537.36' + result: { browser: { name: 'Rocket Chat', using: { name: Electron, version: 1.3.8 }, version: 2.9.0, type: 'app:chat' }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6 Plus' } } + readable: 'Rocket Chat 2.9.0 on an Apple iPhone 6 Plus running iOS 8.1.2' diff --git a/tests/data/mobile/app-social.yaml b/tests/data/mobile/app-social.yaml index a2950c9d3..0b76c5655 100644 --- a/tests/data/mobile/app-social.yaml +++ b/tests/data/mobile/app-social.yaml @@ -86,3 +86,7 @@ headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A372 [FBAN/FBIOS;FBAV/147.0.0.46.81;FBBV/76961488;FBDV/iPhone10,4;FBMD/iPhone;FBSN/iOS;FBSV/11.0;FBSS/2;FBCR/KPNNL;FBID/phone;FBLC/nl_NL;FBOP/5;FBRV/' readable: 'Facebook on an Apple iPhone 8 running iOS 11.0' result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 604.1.38 }, os: { name: iOS, version: '11.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 8' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 [FBAN/FBIOS;FBDV/iPhone11,8;FBMD/iPhone;FBSN/iOS;FBSV/13.3.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBCR/AT&T]' + readable: 'Facebook on an Apple iPhone 8 running iOS 13.3.1' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '13.3.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone XR', identifier: 'iPhone11,8' } } diff --git a/tests/data/mobile/browser-other.yaml b/tests/data/mobile/browser-other.yaml index 5570a981f..1d80c1a24 100644 --- a/tests/data/mobile/browser-other.yaml +++ b/tests/data/mobile/browser-other.yaml @@ -70,3 +70,71 @@ headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.4.4; zh-cn; OPPO R7 Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.134 Mobile Safari/537.36 OppoBrowser/4.6.5.3' readable: 'Oppo Browser 4.6.5.3 on an Oppo R7 running Android 4.4.4' result: { browser: { name: 'Oppo Browser', family: { name: Chrome, version: 53 }, version: 4.6.5.3, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: R7 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.0; HUAWEI-M570/001.00 WAP/OBIGO/Q05A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Mobile Safari/537.36 AlohaBrowser/1.2.1.3' + readable: 'Aloha Browser 1.2.1.3 on an Huawei M570 running Android 7.0' + result: { browser: { name: 'Aloha Browser', family: { name: Chrome, version: 63.0.3239.111 }, version: 1.2.1.3, type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.0 }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: M570 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 7.1.1; en-us; CPH1723 Build/N6F26Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.134 Mobile Safari/537.36 CoRom/30.0.1599.101' + readable: 'CoRom Browser 30.0.1599.101 on an Oppo F5 running Android 7.1.1' + result: { browser: { name: 'CoRom Browser', family: { name: Chrome, version: 30.0.1599.101 }, version: 30.0.1599.101, type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: F5 } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 11_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E302 Safari/9537.53 DiigoBrowser' + result: { browser: { name: Diigo Browser, type: browser }, os: { name: iOS, version: 11.3 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Diigo Browser on an Apple iPad running iOS 11.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_3_5 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13G36 (Ecosia ios@4.0.10.813) Safari/604' + result: { browser: { name: Ecosia Browser, version: 4.0.10.813, type: browser }, os: { name: iOS, version: 9.3.5 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Ecosia Browser 4.0.10.813 on an Apple iPad running iOS 9.3.5' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.0; HUAWEI-M570/001.00 WAP/OBIGO/Q05A) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.111 Safari/537.36 Fluid/0.9.6' + readable: 'Fluid Browser 0.9.6 on an Huawei M570 running Android 7.0' + result: { browser: { name: 'Fluid Browser', family: { name: Chrome, version: 63.0.3239.111 }, version: 0.9.6, type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.0 }, device: { type: mobile, subtype: feature, manufacturer: Huawei, model: M570 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 7.1.1; en-us; CPH1723 Build/N6F26Q) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.134 FluidApp Version/1920 Safari/537.36' + readable: 'Fluid Browser 1920 on an Oppo F5 running Android 7.1.1' + result: { browser: { name: 'Fluid Browser', family: { name: Chrome, version: 30.0.1599.101 }, version: 19201, type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: F5 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; PBAM00 Build/OPM1.171019.026) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36 HeyTapBrowser/10.7.2.1' + readable: 'HeyTap Browser 10.7.2.1 on an Oppo A5 running Android 8.1.0' + result: { browser: { name: 'HeyTap Browser', family: { name: Chrome, version: 70.0.3538.80 }, version: 10.7.2.1, type: browser }, engine: { name: Blink }, os: { name: Android, version: 8.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: A5 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; A5 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.81 Mobile Iron Safari/537.36' + readable: 'SRWare Iron 61.0.3163.81 on an Oppo A5 running Android 6.0' + result: { browser: { name: 'SRWare Iron', family: { name: Chrome, version: 70.0.3538.80 }, version: 61.0.3163.81, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0 }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: A5 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; Le X507 Build/DHXOSOP5501405251S) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/37.0.0.0 Mobile Safari/537.36 Epic/1.0' + readable: 'Epic Browser 1.0 on a LeEco Le 1s X507 running Android 5.0.2' + result: { browser: { name: 'Epic Browser', version: 1.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 1s X507' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 9; pl-pl; Redmi 6A Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/Mint Browser/3.3.1' + readable: 'Mint Browser 3.3.1 on a Xiaomi Redmi 6A running Android 9' + result: { browser: { name: 'Mint Browser', version: 3.3.1, type: browser }, engine: { name: Blink }, os: { name: Android, version: 9 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi 6A' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 10; en-us; GM1910 Build/QKQ1.190716.003) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.134 Mobile Safari/537.36 OnePlusBrowser/30.5.0.9' + readable: 'OnePlus Browser 3.3.1 on a OnePlus 7 Pro running Android 10' + result: { browser: { name: 'OnePlus Browser', family: { name: Chrome, version: 53.0.2785.134 }, version: 30.5.0.9, type: browser }, engine: { name: Blink }, os: { name: Android, version: 10 }, device: { type: mobile, subtype: smart, manufacturer: OnePlus, model: '7 Pro' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; HM-G552-FL Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Start/52.0.2743.98 Chrome/52.0.2743.98 Mobile Safari/537.36' + readable: 'START Internet Browser 52.0.2743.98 on a HM-G552-FL running Android 6.0' + result: { browser: { name: 'START Internet Browser', family: { name: Chrome, version: 52.0.2743.98 }, version: 52.0.2743.98, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0 }, device: { type: mobile, subtype: smart, model: HM-G552-FL } } +- + headers: 'User-Agent: Mozilla/5.0 (Android 6.0; HUAWEI ALE-L21) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 SurfBrowser/3.0' + readable: 'Surf 3.0 on a Huawei ALE-L21 running Android 6.0' + result: { browser: { name: 'Surf', family: { name: Chrome, version: 30.0.0.0 }, version: 3.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: ALE-L21 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 9; th; vivo 1915) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.137 Mobile Tenta/3.1.6 Build/2162 Safari/537.36' + readable: 'Tenta Browser 3.1.6 on a Vivo 1915 running Android 9' + result: { browser: { name: 'Tenta Browser', family: { name: Chrome, version: 64.0.3282.137 }, version: 3.1.6, type: browser }, engine: { name: Blink }, os: { name: Android, version: 9 }, device: { type: mobile, subtype: smart, model: Vivo 1915 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.0; SM-G928F Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36 wkbrowser 4.0.8 421' + readable: 'WK Browser 4.0.8 421 on a Samsung Galaxy S6 Edge+ running Android 7.0' + result: { browser: { name: 'WK Browser', family: { name: Chrome, version: 61.0.3163.98 }, version: 4.0.8 421, type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.0 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6 Edge+' } } +- + headers: 'User-Agent: Mozilla/5.0 (Android 8.0.0; SM-G950F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.9 YaaniBrowser/4.2.0.186 (Turkcell-TR) Mobile Safari/537.36' + readable: 'Yaani Browser 4.0.8 421 on a Samsung Galaxy S8 running Android 8.0.0' + result: { browser: { name: 'Yaani Browser', family: { name: Chrome, version: 54.0.2840.9 }, version: 4.0.8 421, type: browser }, engine: { name: Blink }, os: { name: Android, version: 8.0.0 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S8' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.1.1; SM-J510H Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.204 Mobile Safari/537.36 TNSBrowser/25.01' + readable: 'K.Browser 25.01 on a Samsung Galaxy S8 running Android 7.1.1' + result: { browser: { name: 'K.Browser', family: { name: Chrome, version: 64.0.3282.204 }, version: 25.01, type: browser }, engine: { name: Blink }, os: { name: Android, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy J5 (2016)', identifier: 'SM-J510H' } } diff --git a/tests/data/tablet/os-android.yaml b/tests/data/tablet/os-android.yaml index cc0d5012e..39db4a054 100644 --- a/tests/data/tablet/os-android.yaml +++ b/tests/data/tablet/os-android.yaml @@ -6,3 +6,7 @@ headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; xx; HP eStation/1.0) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: printer, manufacturer: HP, model: eStation } } readable: 'Android Browser on a HP eStation running Android 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 8.1; T8_T106 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Kiwi Chrome/69.0.3440.40 Safari/537.36' + readable: 'Kiwi Browser 69.0.3440.40 on a T8_T106 running Android 4.4.2' + result: { browser: { name: 'Kiwi Browser', family: { name: Chrome, version: 69.0.3440.40 }, version: 69.0.3440.40, type: browser }, engine: { name: Blink }, os: { name: Android, version: 8.1 }, device: { type: tablet, model: T8_T106 } } diff --git a/tests/data/tablet/os-ios.yaml b/tests/data/tablet/os-ios.yaml index 7574f4d1b..b7d6cca93 100644 --- a/tests/data/tablet/os-ios.yaml +++ b/tests/data/tablet/os-ios.yaml @@ -2,3 +2,7 @@ headers: 'User-Agent: FeeddlerRSS 2.4 (iPad; iPhone OS 5.1.1; en_US)' result: { browser: { name: Feeddler, version: '2.4', type: 'app:feedreader' }, os: { name: iOS, version: 5.1.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } readable: 'Feeddler 2.4 on an Apple iPad running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60 Version/10.3 Safari/8536.25 Mobicip/1882608256' + result: { browser: { name: Mobicip, version: '1882608256', type: 'browser' }, engine: { name: Webkit }, os: { name: iOS, version: 10.3.3 }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Mobicip 1882608256 on an Apple iPad running iOS 10.3.3' diff --git a/tests/data/television/lg.yaml b/tests/data/television/lg.yaml index 0105f79cd..786c66e8b 100644 --- a/tests/data/television/lg.yaml +++ b/tests/data/television/lg.yaml @@ -322,3 +322,7 @@ headers: 'User-Agent: Mozilla/5.0 (Unknown; Linux armv7l) AppleWebKit/537.1+ Hybridcast/1.0(;00E091;webOSTV3_0;2;2;)0' readable: 'a LG webOS TV' result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; NetCast; U) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.31 SmartTV/7.5' + readable: 'NetCast Browser 7.5 on a LG webOS TV' + result: { browser: { name: NetCast Browser, family: { name: Chrome, version: 38.0.2125.122 }, version: 7.5, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } diff --git a/tests/data/television/other.yaml b/tests/data/television/other.yaml index f56dae8f7..22809c927 100644 --- a/tests/data/television/other.yaml +++ b/tests/data/television/other.yaml @@ -614,3 +614,7 @@ headers: 'User-Agent: HbbTV/1.1.1 (; ST; FLTk3D; 1.0; 1.0;) NetFront/3.5' readable: 'NetFront 3.5 on a television' result: { browser: { name: NetFront, version: '3.5', type: browser }, engine: { name: NetFront }, device: { type: television } } +- + headers: 'User-Agent: Mozilla/5.0 (Freebox; Linux i686) AppleWebKit/538.1 (KHTML, like Gecko) Navigateur web/1.0 Version/7.0 Safari/538.1' + readable: 'Freebox Browser 1.0 on a television' + result: { browser: { name: Freebox Browser, version: '1.0', type: browser }, device: { type: television } } diff --git a/tests/data/television/samsung.yaml b/tests/data/television/samsung.yaml index 41df63796..1477cc9f4 100644 --- a/tests/data/television/samsung.yaml +++ b/tests/data/television/samsung.yaml @@ -166,3 +166,7 @@ headers: 'User-Agent: HbbTV/1.4.1 (+DRM+MEDIA360;Samsung;SmartTV2017;T-KTMDEUC-0902.31;;)+SmartHubLink Chrome' readable: 'a Samsung Smart TV 2017' result: { device: { type: television, manufacturer: Samsung, series: 'Smart TV 2017' } } +- + headers: 'User-Agent: Mozilla/5.0 (SMART-TV; Linux; Tizen 2.2) AppleWebKit/538.1 (KHTML, like Gecko) Safari/538.1' + result: { browser: { name: 'Webkit based browser', type: browser }, engine: { name: Webkit, version: '538.1' }, os: { name: Tizen, version: '2.2' }, device: { type: television, manufacturer: Samsung, series: 'Smart TV' } } + readable: 'Webkit based browser on a Samsung Smart TV running Tizen 2.2'