@@ -17,6 +17,10 @@ user_agent_parsers:
1717 - regex : ' Google.*/\+/web/snippet'
1818 family_replacement : ' GooglePlusBot'
1919
20+ # Twitter
21+ - regex : ' (Twitterbot)/(\d+)\.(\d+)'
22+ family_replacement : ' TwitterBot'
23+
2024 # Bots Pattern '/name-0.0'
2125 - regex : ' /((?:Ant-)?Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \-](\d+)(?:\.(\d+)(?:\.(\d+))?)?'
2226 # Bots Pattern 'name/0.0'
@@ -106,7 +110,7 @@ user_agent_parsers:
106110 # Opera will stop at 9.80 and hide the real version in the Version string.
107111 # see: http://dev.opera.com/articles/view/opera-ua-string-changes/
108112 - regex : ' (Opera Tablet).*Version/(\d+)\.(\d+)(?:\.(\d+))?'
109- - regex : ' (Opera Mini)(?:/att)?/(\d+)?(?:\.(\d+))?(?:\.(\d+))?'
113+ - regex : ' (Opera Mini)(?:/att)?/? (\d+)?(?:\.(\d+))?(?:\.(\d+))?'
110114 - regex : ' (Opera)/.+Opera Mobi.+Version/(\d+)\.(\d+)'
111115 family_replacement : ' Opera Mobile'
112116 - regex : ' (Opera)/(\d+)\.(\d+).+Opera Mobi'
@@ -205,6 +209,10 @@ user_agent_parsers:
205209 - regex : ' Windows Phone .*(Edge)/(\d+)\.(\d+)'
206210 family_replacement : ' Edge Mobile'
207211
212+ # Samsung Internet (based on Chrome, but lacking some features)
213+ - regex : ' (SamsungBrowser)/(\d+)\.(\d+)'
214+ family_replacement : ' Samsung Internet'
215+
208216 # Chrome Mobile
209217 - regex : ' (CrMo)/(\d+)\.(\d+)\.(\d+)\.(\d+)'
210218 family_replacement : ' Chrome Mobile'
@@ -272,12 +280,12 @@ user_agent_parsers:
272280 - regex : ' (AdobeAIR|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|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+)'
273281
274282 # Outlook 2007
275- - regex : ' MSOffice 12'
283+ - regex : ' Microsoft Office Outlook 12\.\d+\.\d+| MSOffice 12'
276284 family_replacement : ' Outlook'
277285 v1_replacement : ' 2007'
278286
279287 # Outlook 2010
280- - regex : ' MSOffice 14'
288+ - regex : ' Microsoft Outlook 14\.\d+\.\d+| MSOffice 14'
281289 family_replacement : ' Outlook'
282290 v1_replacement : ' 2010'
283291
@@ -286,6 +294,15 @@ user_agent_parsers:
286294 family_replacement : ' Outlook'
287295 v1_replacement : ' 2013'
288296
297+ # Outlook 2016
298+ - regex : ' Microsoft Outlook (?:Mail )?16\.\d+\.\d+'
299+ family_replacement : ' Outlook'
300+ v1_replacement : ' 2016'
301+
302+ # Windows Live Mail
303+ - regex : ' Outlook-Express\/7\.0.*'
304+ family_replacement : ' Windows Live Mail'
305+
289306 # Apple Air Mail
290307 - regex : ' (Airmail) (\d+)\.(\d+)(?:\.(\d+))?'
291308
@@ -299,6 +316,10 @@ user_agent_parsers:
299316 # Edge/major_version.minor_version
300317 - regex : ' (Edge)/(\d+)\.(\d+)'
301318
319+ # Brave Browser https://brave.com/
320+ - regex : ' (brave)/(\d+)\.(\d+)\.(\d+) Chrome'
321+ family_replacement : ' Brave'
322+
302323 # Chrome/Chromium/major_version.minor_version.beta_version
303324 - regex : ' (Chromium|Chrome)/(\d+)\.(\d+)\.(\d+)'
304325
@@ -388,15 +409,15 @@ user_agent_parsers:
388409 - regex : ' (iPod|iPhone|iPad).+Version/(\d+)\.(\d+)(?:\.(\d+))?.* Safari'
389410 family_replacement : ' Mobile Safari'
390411 - regex : ' (iPod|iPhone|iPad).+Version/(\d+)\.(\d+)(?:\.(\d+))?'
391- family_replacement : ' Mobile Safari UIWebView '
412+ family_replacement : ' Mobile Safari UI/WKWebView '
392413 - regex : ' (iPod|iPhone|iPad);.*CPU.*OS (\d+)_(\d+)(?:_(\d+))?.*Mobile.* Safari'
393414 family_replacement : ' Mobile Safari'
394415 - regex : ' (iPod|iPhone|iPad);.*CPU.*OS (\d+)_(\d+)(?:_(\d+))?.*Mobile'
395- family_replacement : ' Mobile Safari UIWebView '
416+ family_replacement : ' Mobile Safari UI/WKWebView '
396417 - regex : ' (iPod|iPhone|iPad).* Safari'
397418 family_replacement : ' Mobile Safari'
398419 - regex : ' (iPod|iPhone|iPad)'
399- family_replacement : ' Mobile Safari UIWebView '
420+ family_replacement : ' Mobile Safari UI/WKWebView '
400421
401422 - regex : ' (AvantGo) (\d+).(\d+)'
402423
@@ -498,7 +519,7 @@ user_agent_parsers:
498519
499520 # apple mail - not directly detectable, have it after Safari stuff
500521 - regex : ' (AppleWebKit)/(\d+)\.(\d+)\.(\d+)'
501- family_replacement : ' AppleMail '
522+ family_replacement : ' Apple Mail '
502523
503524 # AFTER THE EDGE CASES ABOVE!
504525 # AFTER IE11
@@ -514,6 +535,9 @@ user_agent_parsers:
514535
515536 - regex : ' (Java)[/ ]{0,1}\d+\.(\d+)\.(\d+)[_-]*([a-zA-Z0-9]+)*'
516537
538+ # Roku Digital-Video-Players https://www.roku.com/
539+ - regex : ' ^(Roku)/DVP-(\d+)\.(\d+)'
540+
517541os_parsers :
518542 # #########
519543 # HbbTV vendors
@@ -981,6 +1005,9 @@ os_parsers:
9811005 - regex : ' SunOS'
9821006 os_replacement : ' Solaris'
9831007
1008+ # Roku Digital-Video-Players https://www.roku.com/
1009+ - regex : ' ^(Roku)/DVP-(\d+)\.(\d+)'
1010+
9841011device_parsers :
9851012
9861013 # ########
@@ -2049,7 +2076,7 @@ device_parsers:
20492076 device_replacement : ' Huawei Ideos$1'
20502077 brand_replacement : ' Huawei'
20512078 model_replacement : ' Ideos$1'
2052- - regex : ' ; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660) Build'
2079+ - regex : ' ; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P ) Build'
20532080 device_replacement : ' Huawei $1'
20542081 brand_replacement : ' Huawei'
20552082 model_replacement : ' $1'
@@ -2571,7 +2598,7 @@ device_parsers:
25712598 # LG
25722599 # @ref: http://www.lg.com/uk/mobile
25732600 # ########
2574- - regex : ' ; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus [45] |GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)'
2601+ - regex : ' ; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus 4|Nexus 5X? |GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)'
25752602 device_replacement : ' $1'
25762603 brand_replacement : ' LG'
25772604 model_replacement : ' $1'
@@ -3841,7 +3868,7 @@ device_parsers:
38413868 # XiaoMi
38423869 # @ref: http://www.xiaomi.com/event/buyphone
38433870 # ########
3844- - regex : ' ; *((MI|HM|MI-ONE|Redmi)[ -](NOTE |Note )?[^;/]*) Build/'
3871+ - regex : ' ; *((MI|HM|MI-ONE|Redmi)[ -](NOTE |Note )?[^;/]*) ( Build|MIUI) /'
38453872 device_replacement : ' XiaoMi $1'
38463873 brand_replacement : ' XiaoMi'
38473874 model_replacement : ' $1'
@@ -4700,6 +4727,10 @@ device_parsers:
47004727 - regex : ' (WebTV)/\d+.\d+'
47014728 brand_replacement : ' Generic_Inettv'
47024729 model_replacement : ' $1'
4730+ # Roku Digital-Video-Players https://www.roku.com/
4731+ - regex : ' ^(Roku)/DVP-\d+\.\d+'
4732+ brand_replacement : ' Generic_Inettv'
4733+ model_replacement : ' $1'
47034734
47044735 # #########
47054736 # Generic Tablet
@@ -4764,4 +4795,4 @@ device_parsers:
47644795 regex_flag : ' i'
47654796 device_replacement : ' Generic Feature Phone'
47664797 brand_replacement : ' Generic'
4767- model_replacement : ' Feature Phone'
4798+ model_replacement : ' Feature Phone'
0 commit comments