user_agent_parsers:
#### SPECIAL CASES TOP ####
# HbbTV standard defines what features the browser should understand.
# but it's like targeting "HTML5 browsers", effective browser support depends on the model
# See os_parsers if you want to target a specific TV
- regex: '(HbbTV)/(\d+)\.(\d+)\.(\d+) \('
# must go before Firefox to catch SeaMonkey/Camino
- regex: '(SeaMonkey|Camino)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
# Firefox
- regex: '(Pale[Mm]oon)/(\d+)\.(\d+)\.?(\d+)?'
family_replacement: 'Pale Moon (Firefox Variant)'
- regex: '(Fennec)/(\d+)\.(\d+)\.?([ab]?\d+[a-z]*)'
family_replacement: 'Firefox Mobile'
- regex: '(Fennec)/(\d+)\.(\d+)(pre)'
family_replacement: 'Firefox Mobile'
- regex: '(Fennec)/(\d+)\.(\d+)'
family_replacement: 'Firefox Mobile'
- regex: 'Mobile.*(Firefox)/(\d+)\.(\d+)'
family_replacement: 'Firefox Mobile'
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)\.(\d+(?:pre)?)'
family_replacement: 'Firefox ($1)'
- regex: '(Firefox)/(\d+)\.(\d+)(a\d+[a-z]*)'
family_replacement: 'Firefox Alpha'
- regex: '(Firefox)/(\d+)\.(\d+)(b\d+[a-z]*)'
family_replacement: 'Firefox Beta'
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(a\d+[a-z]*)'
family_replacement: 'Firefox Alpha'
- regex: '(Firefox)-(?:\d+\.\d+)?/(\d+)\.(\d+)(b\d+[a-z]*)'
family_replacement: 'Firefox Beta'
- regex: '(Namoroka|Shiretoko|Minefield)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
family_replacement: 'Firefox ($1)'
- regex: '(Firefox).*Tablet browser (\d+)\.(\d+)\.(\d+)'
family_replacement: 'MicroB'
- regex: '(MozillaDeveloperPreview)/(\d+)\.(\d+)([ab]\d+[a-z]*)?'
# e.g.: Flock/2.0b2
- regex: '(Flock)/(\d+)\.(\d+)(b\d+?)'
# RockMelt
- regex: '(RockMelt)/(\d+)\.(\d+)\.(\d+)'
# e.g.: Fennec/0.9pre
- regex: '(Navigator)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Netscape'
- regex: '(Navigator)/(\d+)\.(\d+)([ab]\d+)'
family_replacement: 'Netscape'
- regex: '(Netscape6)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Netscape'
- regex: '(MyIBrow)/(\d+)\.(\d+)'
family_replacement: 'My Internet Browser'
# Opera will stop at 9.80 and hide the real version in the Version string.
# see: http://dev.opera.com/articles/view/opera-ua-string-changes/
- regex: '(Opera Tablet).*Version/(\d+)\.(\d+)(?:\.(\d+))?'
- regex: '(Opera)/.+Opera Mobi.+Version/(\d+)\.(\d+)'
family_replacement: 'Opera Mobile'
- regex: '(Opera)/(\d+)\.(\d+).+Opera Mobi'
family_replacement: 'Opera Mobile'
- regex: 'Opera Mobi.+(Opera)/(\d+)\.(\d+)'
family_replacement: 'Opera Mobile'
- regex: 'Opera Mobi'
family_replacement: 'Opera Mobile'
- regex: '(Opera Mini)(?:/att)?/(\d+)\.(\d+)'
- regex: '(Opera)/9.80.*Version/(\d+)\.(\d+)(?:\.(\d+))?'
# Opera 14 for Android uses a WebKit render engine.
- regex: '(?:Mobile Safari).*(OPR)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Opera Mobile'
# Opera 15 for Desktop is similar to Chrome but includes an "OPR" Version string.
- regex: '(?:Chrome).*(OPR)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Opera'
# Palm WebOS looks a lot like Safari.
- regex: '(hpw|web)OS/(\d+)\.(\d+)(?:\.(\d+))?'
family_replacement: 'webOS Browser'
# LuaKit has no version info.
# http://luakit.org/projects/luakit/
- regex: '(luakit)'
family_replacement: 'LuaKit'
# Snowshoe
- regex: '(Snowshoe)/(\d+)\.(\d+).(\d+)'
# Lightning (for Thunderbird)
# http://www.mozilla.org/projects/calendar/lightning/
- regex: '(Lightning)/(\d+)\.(\d+)\.?((?:[ab]?\d+[a-z]*)|(?:\d*))'
# Swiftfox
- regex: '(Firefox)/(\d+)\.(\d+)\.(\d+(?:pre)?) \(Swiftfox\)'
family_replacement: 'Swiftfox'
- regex: '(Firefox)/(\d+)\.(\d+)([ab]\d+[a-z]*)? \(Swiftfox\)'
family_replacement: 'Swiftfox'
# Rekonq
- regex: '(rekonq)/(\d+)\.(\d+)\.?(\d+)? Safari'
family_replacement: 'Rekonq'
- regex: 'rekonq'
family_replacement: 'Rekonq'
# Conkeror lowercase/uppercase
# http://conkeror.org/
- regex: '(conkeror|Conkeror)/(\d+)\.(\d+)\.?(\d+)?'
family_replacement: 'Conkeror'
# catches lower case konqueror
- regex: '(konqueror)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Konqueror'
- regex: '(WeTab)-Browser'
- regex: '(Comodo_Dragon)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Comodo Dragon'
# Bots
- regex: '(YottaaMonitor|BrowserMob|HttpMonitor|YandexBot|Slurp|BingPreview|PagePeeker|ThumbShotsBot|WebThumb|URL2PNG|ZooShot|GomezA|Catchpoint bot|Willow Internet Crawler|Google SketchUp|Read%20Later)'
- regex: '(Symphony) (\d+).(\d+)'
- regex: '(Minimo)'
# Chrome Mobile
- regex: '(CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Chrome Mobile'
- regex: '(CriOS)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Chrome Mobile iOS'
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+)\.(\d+) Mobile'
family_replacement: 'Chrome Mobile'
# Chrome Frame must come before MSIE.
- regex: '(chromeframe)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Chrome Frame'
# UC Browser
- regex: '(UCBrowser)[ /](\d+)\.(\d+)\.(\d+)'
family_replacement: 'UC Browser'
- regex: '(UC Browser)[ /](\d+)\.(\d+)\.(\d+)'
- regex: '(UC Browser|UCBrowser|UCWEB)(\d+)\.(\d+)\.(\d+)'
family_replacement: 'UC Browser'
# Tizen Browser (second case included in browser/major.minor regex)
- regex: '(SLP Browser)/(\d+)\.(\d+)'
family_replacement: 'Tizen Browser'
# Sogou Explorer 2.X
- regex: '(SE 2\.X) MetaSr (\d+)\.(\d+)'
family_replacement: 'Sogou Explorer'
# Baidu Browsers (desktop spoofs chrome & IE, explorer is mobile)
- regex: '(baidubrowser)[/\s](\d+)'
family_replacement: 'Baidu Browser'
- regex: '(FlyFlow)/(\d+)\.(\d+)'
family_replacement: 'Baidu Explorer'
# QQ Browsers
- regex: '(MQQBrowser/Mini)(?:(\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
family_replacement: 'QQ Browser Mini'
- regex: '(MQQBrowser)(?:/(\d+)(?:\.(\d+)(?:\.(\d+))?)?)?'
family_replacement: 'QQ Browser Mobile'
- regex: '(QQBrowser)(?:/(\d+)(?:\.(\d+)\.(\d+)(?:\.(\d+))?)?)?'
family_replacement: 'QQ Browser'
# Pingdom
- regex: '(Pingdom.com_bot_version_)(\d+)\.(\d+)'
family_replacement: 'PingdomBot'
# Facebook
- regex: '(facebookexternalhit)/(\d+)\.(\d+)'
family_replacement: 'FacebookBot'
# LinkedIn
- regex: '(LinkedInBot)/(\d+)\.(\d+)'
family_replacement: 'LinkedInBot'
# Twitterbot
- regex: '(Twitterbot)/(\d+)\.(\d+)'
family_replacement: 'TwitterBot'
# Google Plus
- regex: 'Google.*/\+/web/snippet'
family_replacement: 'GooglePlusBot'
# Rackspace Monitoring
- regex: '(Rackspace Monitoring)/(\d+)\.(\d+)'
family_replacement: 'RackspaceBot'
# PyAMF
- regex: '(PyAMF)/(\d+)\.(\d+)\.(\d+)'
# Yandex Browser
- regex: '(YaBrowser)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Yandex Browser'
# Mail.ru Amigo/Internet Browser (Chromium-based)
- regex: '(Chrome)/(\d+)\.(\d+)\.(\d+).* MRCHROME'
family_replacement: 'Mail.ru Chromium Browser'
# AOL Browser (IE-based)
- regex: '(AOL) (\d+)\.(\d+); AOLBuild (\d+)'
#### END SPECIAL CASES TOP ####
#### MAIN CASES - this catches > 50% of all browsers ####
# Browser/major_version.minor_version.beta_version
- regex: '(AdobeAIR|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave)/(\d+)\.(\d+)\.(\d+)'
# Outlook 2007
- regex: 'MSOffice 12'
family_replacement: 'Outlook'
v1_replacement: '2007'
# Outlook 2010
- regex: 'MSOffice 14'
family_replacement: 'Outlook'
v1_replacement: '2010'
# Outlook 2013
- regex: 'Microsoft Outlook 15\.\d+\.\d+'
family_replacement: 'Outlook'
v1_replacement: '2013'
# Apple Air Mail
- regex: '(Airmail) (\d+)\.(\d+)(?:\.(\d+))?'
# Thunderbird
- regex: '(Thunderbird)/(\d+)\.(\d+)\.(\d+(?:pre)?)'
family_replacement: 'Thunderbird'
# Chrome/Chromium/major_version.minor_version.beta_version
- regex: '(Chromium|Chrome)/(\d+)\.(\d+)\.(\d+)'
# Dolphin Browser
# @ref: http://www.dolphin.com
- regex: '\b(Dolphin)(?: |HDCN/|/INT\-)(\d+)\.(\d+)\.?(\d+)?'
# Browser/major_version.minor_version
- regex: '(bingbot|Bolt|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Chrome|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin)/(\d+)\.(\d+)\.?(\d+)?'
# Chrome/Chromium/major_version.minor_version
- regex: '(Chromium|Chrome)/(\d+)\.(\d+)'
# Browser major_version.minor_version.beta_version (space instead of slash)
- regex: '(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\d+)\.(\d+)\.(\d+)'
# Browser major_version.minor_version (space instead of slash)
- regex: '(iCab|Lunascape|Opera|Android|Jasmine|Polaris) (\d+)\.(\d+)\.?(\d+)?'
# Kindle WebKit
- regex: '(Kindle)/(\d+)\.(\d+)'
# weird android UAs
- regex: '(Android) Donut'
v1_replacement: '1'
v2_replacement: '2'
- regex: '(Android) Eclair'
v1_replacement: '2'
v2_replacement: '1'
- regex: '(Android) Froyo'
v1_replacement: '2'
v2_replacement: '2'
- regex: '(Android) Gingerbread'
v1_replacement: '2'
v2_replacement: '3'
- regex: '(Android) Honeycomb'
v1_replacement: '3'
# IE Mobile
- regex: '(IEMobile)[ /](\d+)\.(\d+)'
family_replacement: 'IE Mobile'
# desktop mode
# http://www.anandtech.com/show/3982/windows-phone-7-review
- regex: '(MSIE) (\d+)\.(\d+).*XBLWP7'
family_replacement: 'IE Large Screen'
#### END MAIN CASES ####
#### SPECIAL CASES ####
- regex: '(Obigo)InternetBrowser'
- regex: '(Obigo)\-Browser'
- regex: '(Obigo|OBIGO)[^\d]*(\d+)(?:.(\d+))?'
family_replacement: 'Obigo'
- regex: '(MAXTHON|Maxthon) (\d+)\.(\d+)'
family_replacement: 'Maxthon'
- regex: '(Maxthon|MyIE2|Uzbl|Shiira)'
v1_replacement: '0'
- regex: 'PLAYSTATION 3.+WebKit'
family_replacement: 'NetFront NX'
- regex: 'PLAYSTATION 3'
family_replacement: 'NetFront'
- regex: '(PlayStation Portable)'
family_replacement: 'NetFront'
- regex: '(PlayStation Vita)'
family_replacement: 'NetFront NX'
- regex: 'AppleWebKit.+ (NX)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'NetFront NX'
- regex: '(Nintendo 3DS)'
family_replacement: 'NetFront NX'
- regex: '(BrowseX) \((\d+)\.(\d+)\.(\d+)'
- regex: '(NCSA_Mosaic)/(\d+)\.(\d+)'
family_replacement: 'NCSA Mosaic'
# Polaris/d.d is above
- regex: '(POLARIS)/(\d+)\.(\d+)'
family_replacement: 'Polaris'
- regex: '(Embider)/(\d+)\.(\d+)'
family_replacement: 'Polaris'
- regex: '(BonEcho)/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Bon Echo'
# @note: iOS / OSX Applications
- regex: '(CFNetwork)(?:/(\d+)\.(\d+)\.?(\d+)?)?'
family_replacement: 'CFNetwork'
- regex: '(iPod).+Version/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Mobile Safari'
- regex: '(iPod).*Version/(\d+)\.(\d+)'
family_replacement: 'Mobile Safari'
- regex: '(iPhone).*Version/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Mobile Safari'
- regex: '(iPhone).*Version/(\d+)\.(\d+)'
family_replacement: 'Mobile Safari'
- regex: '(iPad).*Version/(\d+)\.(\d+)\.(\d+)'
family_replacement: 'Mobile Safari'
- regex: '(iPad).*Version/(\d+)\.(\d+)'
family_replacement: 'Mobile Safari'
- regex: '(iPod|iPhone|iPad);.*CPU.*OS (\d+)(?:_\d+)?_(\d+).*Mobile'
family_replacement: 'Mobile Safari'
- regex: '(iPod|iPhone|iPad)'
Loading ...