diff --git a/CHANGELOG.md b/CHANGELOG.md index 827a6f5..427814b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +#### 0.7.0 (2022-04-21) + +- Sync WhichBrowser/Parser-JavaScript to [WhichBrowser/Parser-PHP@1044880](https://github.com/WhichBrowser/Parser-PHP/commit/1044880bc792dbce5948fbff22ae731c43c280d9) + +- Supports [Chrome UA reduction](https://developer.chrome.com/docs/privacy-sandbox/user-agent/) + +- **BREAKING:** `Plasystation` has been reworded to `PlayStation` across the whole codebase. + +- **Database:** + * Adds support for `Huawei Browser` + * Adds support for `Xbox Series X` + * Adds support for `PlayStation 5` + * Adds support for `HarmonyOS` + + + #### 0.6.1 (2022-04-07) - **Database:** Added Chrome 99 and 100 ([a770c30](https://github.com/WhichBrowser/Parser-JavaScript/commit/a770c30d29045893797b79f6c623b9ab8ebb8cc0)) diff --git a/data/applications-browsers.js b/data/applications-browsers.js index 67cc961..16eee80 100644 --- a/data/applications-browsers.js +++ b/data/applications-browsers.js @@ -343,7 +343,7 @@ exports.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: '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 }, diff --git a/data/indices/models-android.js b/data/indices/models-android.js index a1a9aeb..273ad85 100644 --- a/data/indices/models-android.js +++ b/data/indices/models-android.js @@ -14,7 +14,7 @@ exports.ANDROID_INDEX = { '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', '[SX06][0-9]{2,2}HT!!', '(Huawei )?[MSTX](1|2|7|8|10)\\-[A-Z0-9][0-9]{2,2}!!', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'G[0-9]{3,3}!!', 'Y[0-9]{3,3}!!', '[0-9AS][0-9]{2,2}HW!!', @@ -43,6 +43,7 @@ exports.ANDROID_INDEX = { 'G[0-9]{4,4}!!', 'H[0-9]{4,4}!!', 'I[0-9]{4,4}!!', + 'J[0-9]{4,4}!!', 'E[0-9]{2,2}[a-z]!!', 'L[0-9]{2,2}[a-z]!!', '(SNM\\-)?M[0-9]{2,2}[a-z]!!', @@ -68,6 +69,8 @@ exports.ANDROID_INDEX = { '@18': ['1801-A01'], '@2 ': ['(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!'], '@20': ['201M', '(Xiaomi )?20!!', '(Xiaomi |HM)?20!!'], + '@21': ['21061119DG', '2107113SG', '21081111RG', '21091116AG', '(Xiaomi |HM)?21!!', '21051182G'], + '@22': ['2201117TY', '2201122G', '2201123G', '2201116PG'], '@2P': ['2PQ93', '2PS64'], '@3': ['(3|5|6|7)0[0-9]SH!!'], '@30': [3007], @@ -110,6 +113,10 @@ exports.ANDROID_INDEX = { '@48': ['(48|50|55)AX600C!'], '@5': ['(3|5|6|7)0[0-9]SH!!'], '@50': [ + '5001[D]!', + '5002[DH]!', + '5003[D]!', + '5009[D]!', '5010[DEGSUX]!', '5011[A]!', '5012[G]!', @@ -121,9 +128,10 @@ exports.ANDROID_INDEX = { '5020[A]!', '5022[DEX]!', '5023[F]!', - '5024[D]!', + '5024[DF]!', '5025[DEGX]!', '5027[B]!', + '5030[DF]!', '5033[ADJOX]!', '5034[D]!', '5036[D]!', @@ -135,11 +143,12 @@ exports.ANDROID_INDEX = { '5045[ADFGJTXY]!', '5046[DGIJUY]!', '5047[DIUY]!', + '5048[UY]!', '5049[EGSWZ]!', '5050[ASYX]!', '5051[ADJMX]!', '5052[DY]!', - '5053[D]!', + '5053[DK]!', '5054[ADOSTX]!', '5054[NW]!', '5056[ADEINUWX]!', @@ -148,6 +157,7 @@ exports.ANDROID_INDEX = { '5058[I]!', '5059[ADJTXY]!', '5060[D]!', + '5061[KU]!', '5065[ADJNWX]!', '5070[DJX]!', '5080[A]!', @@ -174,6 +184,7 @@ exports.ANDROID_INDEX = { '@60': [ '6014[DX]!', '6016[ADEX]!', + '6025[D]!', '6031[X]!', '6036[AYX]!', '6037[BIKY]!', @@ -184,6 +195,7 @@ exports.ANDROID_INDEX = { '6045[BFGIKOXY]!', '6050[AFWY]!', '6055[ABDHIKPUY]!', + '6056[D]!', '6058[D]!', '6060[S]!', '6062[W]!', @@ -214,7 +226,21 @@ exports.ANDROID_INDEX = { '@72': [7260, 7266], '@75': ['7500IPS'], '@7D': ['7D-501u'], - '@80': ['8020[D]!', '8030[BY]!', 8022, '801ES', '80-1', '801a', '801s', '802w', '800P31C'], + '@80': [ + '8020[D]!', + '8030[BY]!', + 8063, + 8082, + '8082 EEA', + '8094[X]!', + 8022, + '801ES', + '80-1', + '801a', + '801s', + '802w', + '800P31C' + ], '@81': ['8190Q'], '@82': ['825 T-Mobile'], '@83': ['831C'], @@ -236,6 +262,7 @@ exports.ANDROID_INDEX = { '9022[SX]!', '9024[OW]!', '9025[MQ]!', + '9026[X]!', '9021[AM]!', '909d', 9088, @@ -243,7 +270,7 @@ exports.ANDROID_INDEX = { ], '@93': [9300, '9300+', '932i'], '@97': ['97FC'], - '@A0': ['A001', 'A0001', 'A0002', 'A05510'], + '@A0': ['A001', 'A007', 'A0001', 'A0002', 'A05510'], '@A1': [ 'A1-[0-9]{3,3}!!', 'A10', @@ -277,7 +304,8 @@ exports.ANDROID_INDEX = { 'A10T(8DM1)', 'A11(M5A7)', 'A11s(M5A7)', - 'A15(E6C2)' + 'A15(E6C2)', + 'A11 Pro Max' ], '@A2': ['A206G', 'A2', 'A21'], '@A3': [ @@ -374,6 +402,8 @@ exports.ANDROID_INDEX = { 'A862W', 'A80KSC!', 'A80HF', + 'A80Plus', + 'A80Pro', 'A89', 'A820t', 'A87', @@ -389,19 +419,22 @@ exports.ANDROID_INDEX = { 'A88 mini四核(M1C5)', 'A81E' ], - '@A9': ['A995L', 'A95', 'A97i', '(GIO-)?(GiONEE[- ])?A9$!', 'A90S', 'A953', 'A955'], + '@A9': ['A995L', 'A95', 'A97i', '(GIO-)?(GiONEE[- ])?A9$!', 'A90S', 'A953', 'A955', 'A9 Pro'], '@AA': ['AA3-600'], '@AC': [ - 'Acer Chromebook R11', - 'Acer Chromebook R11 (CB5-132T / C738T)', - 'Acer Chromebook 15 (CB3-532)', + 'Acer Chromebook R11!', + 'Acer Chromebook R13!', + 'Acer Chromebook 15!', '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', 'AC45BHE', 'AC50BHE', 'AC50DHE', 'AC45NE', + 'Action-X3', 'ACM3066-8', '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 'AC2001', + 'AC2003', 'ACT2000', 'ACU Volvo', 'Acqua' @@ -471,6 +504,7 @@ exports.ANDROID_INDEX = { 'AG Go-Tab Access', 'AG Chrome Go Tab 7.0', 'AGS-(L09|W09)!', + 'AGS2-(L09|W09)!', '(KATBL|Kogan|Agora)!!' ], '@AI': [ @@ -532,8 +566,8 @@ exports.ANDROID_INDEX = { '(Allview|Alldro)!!', 'Allwinner A10', '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Alfa A93 POP', 'Alfa L', 'Ally', @@ -569,6 +603,7 @@ exports.ANDROID_INDEX = { 'AMD120', '(Amaze|Hitech)!!', 'Amaze 4G', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', '(Amazing|Fantastic)!!' ], '@AN': [ @@ -616,7 +651,7 @@ exports.ANDROID_INDEX = { 'AN10G2-LZ', 'AN10BG3-LZ', 'AN7DG3C', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', '(iBall )?Andi!!', 'AND1', 'AND1E', @@ -674,6 +709,7 @@ exports.ANDROID_INDEX = { 'Aquila 101-1008 3G', 'Aquila LE 080-0508', 'Aquila SE 090-0508', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', '(Intex )?Aqua!!', 'AQUOS!!', 'aqua', @@ -708,14 +744,31 @@ exports.ANDROID_INDEX = { 'arrowsM03', 'ARIES 101', 'ARIES 785', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'ARA YS608', 'Arctic450', 'Arc', - 'Arc S' + 'Arc S', + 'Armor 2', + 'Armor 3W', + 'Armor 3WT', + 'Armor 5S', + 'Armor 6E', + 'Armor 7', + 'Armor 7E', + 'Armor 8', + 'Armor 9', + 'Armor 9E', + 'Armor 10 5G', + 'Armor 11 5G', + 'Armor 11T 5G', + 'Armor X5', + 'Armor X7', + 'Armor X7 Pro', + 'Armor X8' ], '@AS': [ - 'ASUS Chromebook Flip C100PA', - 'ASUS Chromebook Flip C302', + 'ASUS Chromebook Flip!', 'Astone A108', 'aspire1000s', 'Aspire!!', @@ -756,8 +809,8 @@ exports.ANDROID_INDEX = { 'AT1G*', 'AT7E', 'ATP515CKIT', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'aTab9.7 IPS', 'AT735', 'Atrix 2', @@ -795,7 +848,13 @@ exports.ANDROID_INDEX = { 'AT-A[QS][0-9]{2,2}!!', 'ATLAS W' ], - '@AU': ['Aurora-II', 'AUX!!', '(Aura|iberry|AUXUS)!!', 'AURUS III'], + '@AU': [ + 'Aurora-II', + 'AUX!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(Aura|iberry|AUXUS)!!', + 'AURUS III' + ], '@AV': ['Avea!!', '(Ilium )?Avvio!!'], '@AX': [ 'AX3Party', @@ -808,7 +867,9 @@ exports.ANDROID_INDEX = { ], '@AZ': ['Azumi!!', '(AZ|BT)[0-9]{3,3}!!'], '@B1': ['B1-[A0-9][A0-9]{2,2}!!', 'B15', 'B15Q'], - '@B3': ['B3-A10', 'B3-A20', 'B3-A20B', 'B3-A30', 'B3-A32', 'B3-A40', 'B3-A40FHD', 'B3000'], + '@B2': ['B2021'], + '@B3': ['B3-A10', 'B3-A20', 'B3-A20B', 'B3-A30', 'B3-A32', 'B3-A40', 'B3-A40FHD', 'B3-A50FHD', 'B3000'], + '@B5': ['B5532'], '@B9': ['B916C'], '@BA': [ 'Bay Trail Generic Platform', @@ -820,6 +881,7 @@ exports.ANDROID_INDEX = { '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', 'BAH-(W09|AL00|L09)!', 'BAH2-(AL10|L09|W09|W19)!', + 'BAH3-(W09)!', '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!', 'Backflip', 'Backflip Me600', @@ -878,17 +940,19 @@ exports.ANDROID_INDEX = { 'BePhone UN030', 'Best ?sonny!!', 'BEAN 454', + 'BE202[69]!', + 'BE2013', 'beetle', 'Be Touch 2', 'Beeline!!' ], '@BF': ['BF[ \\-]!!', 'BFB!!', 'BF[0-9]{2,2}00!!'], - '@BG': ['bg2 !', 'bg2ct !', 'bg2q4k !', 'bg2qa0v4 !', 'bg2qv4 !', 'BGO-(DL09|L03)!', 'BG2-(U01)!'], + '@BG': ['bg2 !', 'bg2ct !', 'bg2q4k !', 'bg2qa0v4 !', 'bg2qv4 !', 'BGO-(DL09|L03)!', 'BG2-(U01|W09)!'], '@BH': ['(BDS|BHX|BKO)\\-!!'], - '@BI': ['bird75v2', 'BioniQ!!', 'Bird!!', 'BizSmartPhone', 'BIP-6000', 'BIRDY'], + '@BI': ['bird75v2', 'BioniQ!!', 'Bird!!', 'BizSmartPhone', 'BIP-6000', 'BISON', 'BISON Pro', 'BISON GT', 'BIRDY'], '@BK': [ '(BDS|BHX|BKO)\\-!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@BL': [ 'Blaze', @@ -896,12 +960,13 @@ exports.ANDROID_INDEX = { 'BlueStacks!', 'BlackBerry Runtime for Android Apps', "BLACKBERRY P'9982", + 'BL6000Pro', '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', 'Bluboo S1', 'Blaze S180', 'BLADE LE 70', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', '(BLF-)?lephone!!', 'Blackphone 2', @@ -920,7 +985,7 @@ exports.ANDROID_INDEX = { '(NOOK )?BNTV(800)!', 'BN Nook HD', 'BN NookHD+', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@BO': [ 'Boost', @@ -998,8 +1063,25 @@ exports.ANDROID_INDEX = { '@BS': ['Bs 451', 'Bs 501', 'Bs541', 'BSTB-200C'], '@BT': ['BTV-(DL09|W09)!', '(AZ|BT)[0-9]{3,3}!!'], '@BU': ['BUSH!!', 'Burst S280', 'Butterfly S', 'Bucare Y330-U05'], - '@BV': ['BV8000Pro'], - '@C2': ['C2'], + '@BV': [ + 'BV4900Pro', + 'BV5500Plus', + 'BV5900', + 'BV6300Pro', + 'BV6600', + 'BV6900', + 'BV8000Pro', + 'BV9100', + 'BV9500', + 'BV9500Plus', + 'BV9600E', + 'BV9600Pro', + 'BV9800Pro', + 'BV9900E', + 'BV9900Pro' + ], + '@C1': ['C15 Pro'], + '@C2': ['C21 Pro', 'C2'], '@C5': ['(GIO-)?(GiONEE[- ])?C500!', 'C525c'], '@C6': [ 'C6 Duo', @@ -1014,6 +1096,7 @@ exports.ANDROID_INDEX = { '@CA': [ 'Cardhu', 'CA907AAC0G', + 'Carbon 1 Mark II', 'Camangi-Mangrove7', 'CAPTIVA!!', 'Carpad T5', @@ -1024,8 +1107,8 @@ exports.ANDROID_INDEX = { 'Casper VIA!!', 'CAT!!', 'Candy TV', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!', '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', 'calgary', @@ -1033,6 +1116,9 @@ exports.ANDROID_INDEX = { 'capricorn' ], '@CC': ['CCE SK352'], + '@CD': [ + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + ], '@CE': ['cedartrail', 'CENTURION', 'CENTURION 3', 'Celkon!!'], '@CH': [ 'Chacer', @@ -1049,7 +1135,7 @@ exports.ANDROID_INDEX = { 'Cherry w500', 'CHUWI!!', 'CHONG!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', 'chagall', 'chiron' @@ -1079,7 +1165,7 @@ exports.ANDROID_INDEX = { 'Clanga SE 097-1008', 'CLP281X', 'Click', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', '(Intex )?Cloud!!', 'CLIQ', 'CLIQ XT', @@ -1101,12 +1187,13 @@ exports.ANDROID_INDEX = { 'COSHIP F2', 'COWON!!', 'COZCO C1 Plus', + 'Core-M5', 'Collo DG100', 'Collo 2 DG120', 'Connect-2G-2.0', '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', 'Coquettish Red', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'Comet', 'Corvair', 'COOLPIX S800c', @@ -1139,7 +1226,59 @@ exports.ANDROID_INDEX = { 'CPH1859', 'CPH1881', 'CPH1823', + 'CPH1831', + 'CPH1837', + 'CPH1871', + 'CPH1875', + 'CPH1877', + 'CPH1893', + 'CPH1903', + 'CPH1907', + 'CPH1909', + 'CPH1911', + 'CPH1917', + 'CPH1919', + 'CPH1920', + 'CPH1923', + 'CPH1931', + 'CPH1933', + 'CPH1951', 'CPH1969', + 'CPH1989', + 'CPH2005', + 'CPH2009', + 'CPH2021', + 'CPH2023', + 'CPH2025', + 'CPH2043', + 'CPH2065', + 'CPH2067', + 'CPH2069', + 'CPH2083', + 'CPH2089', + 'CPH2091', + 'CPH2121', + 'CPH2125', + 'CPH2127', + 'CPH2135', + 'CPH2145', + 'CPH2161', + 'CPH2173', + 'CPH2185', + 'CPH2195', + 'CPH2197', + 'CPH2205', + 'CPH2207', + 'CPH2211', + 'CPH2219', + 'CPH2247', + 'CPH2251', + 'CPH2269', + 'CPH2271', + 'CPH2273', + 'CPH2305', + 'CPH2307', + 'CPH2371', 'CPH1721', 'CPH1611', 'CPH1879', @@ -1151,12 +1290,12 @@ exports.ANDROID_INDEX = { 'CRESTA.CTP888', 'Cross!!', 'Crosscall!!', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'CRONO 22', 'Crescent' ], - '@CS': ['CS-1A13', '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!'], + '@CS': ['CS45XA', 'CS-1A13', '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!'], '@CT': [ 'CT[0-9]{3,4}!!', 'CT-1', @@ -1179,7 +1318,7 @@ exports.ANDROID_INDEX = { 'CUBOT!!', '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', 'CUBE!!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!' + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!' ], '@CW': ['CW[- ]!!'], '@CX': ['CX-919', 'CX-921', 'CX-921B', 'CX-929', 'CX-950', 'CX-958'], @@ -1194,7 +1333,7 @@ exports.ANDROID_INDEX = { ], '@D2': [ 'D2-[0-9]{3,3}!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' ], '@D5': ['D530', 'D539'], '@D7': ['D709', 'D7800AD', 'D75E', 'D70W'], @@ -1205,7 +1344,7 @@ exports.ANDROID_INDEX = { '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', 'Dakele A380', 'DAKELE MC001', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'DATAM803HC', 'DATAM805HC', 'DATAM819HD!', @@ -1273,8 +1412,9 @@ exports.ANDROID_INDEX = { 'DL8006', 'DLX', 'DLXU', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - 'dL1' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + 'dL1', + 'DLT-H0' ], '@DM': [ 'DM0[0-9]{2,2}(K|SH)!!', @@ -1293,7 +1433,9 @@ exports.ANDROID_INDEX = { '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', 'DNS S!!', 'DNSS4003', - 'DNS4502M' + 'DNS4502M', + 'DN2101', + 'DN2103' ], '@DO': [ 'Dooderbutt!', @@ -1303,6 +1445,7 @@ exports.ANDROID_INDEX = { 'DOOV!!', 'Doro Liberto!!', 'Doro 8030', + 'Doro 8040', 'Doro 824', 'Doro PhoneEasy 745', 'Dolphin 70e Black', @@ -1313,7 +1456,7 @@ exports.ANDROID_INDEX = { 'Dream', '(GIO-)?(GiONEE[- ])?Dream D1!', 'Droid Incredible', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'DroniX-0.5', 'Droid', 'DROID', @@ -1346,11 +1489,13 @@ exports.ANDROID_INDEX = { 'DROIDZ Sport', 'DROIDZ Ultimate' ], - '@DS': ['Dslide!!'], + '@DS': ['Dslide!!', 'DSB-0220', 'DSB-0230'], '@DT': ['Dtac phone Joey Jet 2', 'dtab01'], '@DU': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!' ], + '@DV': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@DW': ['DW-PS3G5', 'DW-UBT7W', 'DW-UBT7SC*', 'DW-UBT27Cz', 'DW-UBT23G7'], '@DY': [ 'dyno 7.80', @@ -1368,7 +1513,7 @@ exports.ANDROID_INDEX = { ], '@E': ['(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!'], '@E-': ['(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!'], - '@E1': ['E1 v360', 'E170BS', 'E1031', 'e1808 v75!', 'e1109 v73!'], + '@E1': ['E1 v360', 'E170BS', 'E1031', 'E1050X', 'E1051X', 'E1060X', 'e1808 v75!', 'e1109 v73!'], '@E2': ['E2 Jump', 'E239', 'E270BSA', 'E2281', '(Moto)?E2$!', '(Moto)?E2\\(4G-LTE\\)$!'], '@E3': ['E3 Living', 'E3 Sign', '(GIO-)?(GiONEE[- ])?E3T!', '(GIO-)?(GiONEE[- ])?E3$!'], '@E4': ['E4', 'E4 Lite'], @@ -1383,14 +1528,14 @@ exports.ANDROID_INDEX = { ], '@E7': ['E70[0-9]{2,2}H[DG]!!', '(GIO-)?(GiONEE[- ])?E7$!', 'E780', 'E731'], '@E8': ['E80[0-9]{2,2}H[DG]!!', 'E860', 'E800', 'E815', 'E812', 'E810'], - '@E9': ['E900', 'E912'], + '@E9': ['E940-2795-00', 'E940-2796-00', 'E900', 'E912'], '@EA': ['eagle75v1 2', 'EasyPhone EP5', 'EasyPad 971'], - '@EB': ['EBEN!!', 'EBEST!!', 'EB-4063-X', 'EB-A71GJ', 'EB-W51GJ', 'EB-WX1GJ', 'EB-L76G-B'], + '@EB': ['EBEN!!', 'EBEST!!', 'EB2101', 'EB2103', 'EB-4063-X', 'EB-A71GJ', 'EB-W51GJ', 'EB-WX1GJ', 'EB-L76G-B'], '@EC': ['(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', 'Eco9 v1', 'Eco9 v2', 'Eco11 v2'], '@ED': [ '(bq|Aquaris|Edison|Maxwell)!!', 'edgejr', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'edenTAB ET-701' ], '@EE': ['eeepc', 'eee 701', '(Eee Pad )?Transformer Prime TF201!'], @@ -1406,7 +1551,7 @@ exports.ANDROID_INDEX = { 'ELIFE-E3', 'Elife E5', 'ElifeE6', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Elektra L', 'Elektra XL', 'Electrify', @@ -1436,7 +1581,7 @@ exports.ANDROID_INDEX = { 'EMBT3C', 'EM63', 'EM01F', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'eMAX mini', 'EMR1879' ], @@ -1468,13 +1613,15 @@ exports.ANDROID_INDEX = { '(EVAS )?EVERCOSS[- ]A!!', 'EVERPAD SC-710', 'Ever!!', + 'EVOLVEO StrongPhone G7', + 'EVOLVEO StrongPhone G9', 'EVO', 'Evo HD2', 'EVO ?3D!', 'EVO 4G', 'Evo V 4G', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', '(EV|KM)-[ES][0-9]{3,3}!!', 'Event', 'EVERY35' @@ -1501,9 +1648,10 @@ exports.ANDROID_INDEX = { '@FI': [ 'FIH-FB0', 'FIH-!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Find 5', - 'FIND7' + 'FIND7', + 'FINNEY U1' ], '@FJ': ['FJ[LT][0-9]{2,2}!!', 'FJJB091'], '@FL': [ @@ -1535,7 +1683,7 @@ exports.ANDROID_INDEX = { 'Flylife!!', 'Fly Flylife Web 7.85 Slim', 'Flyer', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'Flair E1', 'Flair E2', 'FlairE3', @@ -1568,13 +1716,13 @@ exports.ANDROID_INDEX = { 'Folio 100', 'folio100' ], - '@FP': ['FP1', 'FP1U', 'FP2'], + '@FP': ['FP1', 'FP1U', 'FP2', 'FP3', 'FP4'], '@FR': [ 'Freelander I20', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(MODECOM )?FreeTAB!!' ], - '@FS': ['FS403', 'FS407', 'FS451', 'FS514'], + '@FS': ['FS403', 'FS407', 'FS451', 'FS514', 'FS8032'], '@FT': ['FTJ152A', 'FTJ161B', 'FTJ162E'], '@FU': ['full Android on Microsoft Windows, pad, pc, n*books', 'Fusion Bolt', 'FUSIONideos', 'Fuel F2'], '@FW': ['FWS[0-9]{3,3}!!'], @@ -1604,10 +1752,10 @@ exports.ANDROID_INDEX = { '@G2': ['G2S', 'G2SMNT'], '@G3': ['(Moto)?G3$!', '(Moto)?G3-TE$!', 'G3SMNTS22', 'G3SMNTS23'], '@G6': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' ], '@G7': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' ], '@G9': ['G9'], '@GA': ['(Google )?Galaxy Nexus!', 'Galaxy S4 Google Editon', 'Garmin!!', 'Galaxy!!'], @@ -1765,6 +1913,7 @@ exports.ANDROID_INDEX = { 'GM 6', 'GM 6 d', 'GM 8 d', + 'GM8 go', 'GM Discovery tab 8' ], '@GN': [ @@ -1870,12 +2019,26 @@ exports.ANDROID_INDEX = { '@GR': [ 'Grouper', 'GR-TB!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'greenridge', 'Graphos A10', '(ZTE )?(Grand|Mimosa)!!' ], - '@GS': ['GS01', '(Gsmart|Gigabyte|Rio)!!', 'GS02', 'GS03'], + '@GS': [ + 'GS01', + '(Gsmart|Gigabyte|Rio)!!', + 'GS110', + 'GS185', + 'GS190', + 'GS195', + 'GS270', + 'GS270 plus', + 'GS280', + 'GS290', + 'GS370 Plus', + 'GS02', + 'GS03' + ], '@GT': [ 'GT-I9505G', 'GT-810', @@ -1902,14 +2065,14 @@ exports.ANDROID_INDEX = { '@GU': ['gucci'], '@GV': ['GVON 898'], '@GW': ['GW620'], - '@GX': ['GX1210V TV'], + '@GX': ['GX290', 'GX1210V TV'], '@H1': ['H120'], '@H2': ['H2000+'], '@H3': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@H6': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@H7': ['H701', 'H7100', 'H7500+', 'H710VL', 'H715BL'], '@H8': ['H8 Life', 'H866C', 'H882L'], @@ -1919,22 +2082,30 @@ exports.ANDROID_INDEX = { '(Haier[- ])?H[ETW]- ?[A-Z][0-9]!!', 'Haier-W700', 'Haier-SY0880', + 'Hammer Blade2 PRO', + 'Hammer Blade 3', + 'Hammer Energy', + 'Hammer Energy 2', + 'Hammer Energy 18x9', + 'Hammer Explorer', + 'Hammer Explorer Pro', 'Hasee E50 S1', 'Hasee H45 T2', 'Hasee W50 T2', 'Hasee-X50TS', 'HannsComb', 'Hannspadd', - 'Hayabusa' + 'Hayabusa', + 'HARRY' ], '@HB': ['HB-100 DASAN', 'HB-100 DASAN Networks, Inc.', 'HB-1000'], '@HD': [ 'HD2', 'HD2 LEO', 'HD7 Pro', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - 'HD190[01]!', - 'HD191[03]!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + 'HD190[0135]!', + 'HD191[0137]!' ], '@HE': ['HEDY!!', 'HERO H7500+', 'Hero', 'HERO CDMA', 'HERO200'], '@HI': [ @@ -1958,27 +2129,31 @@ exports.ANDROID_INDEX = { '@HK': ['HKPHONE H8-3G'], '@HL': [ 'HLV-T!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@HM': [ - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'HMP8100 ATV 93', 'HMP8100 ATV INT', '(Xiaomi )?(Redmi|RedRice|HM)!!', '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', - '(Xiaomi |HM)?20!!' + '(Xiaomi |HM)?20!!', + '(Xiaomi |HM)?21!!' ], '@HN': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@HO': [ 'HOSIN!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'Honor3c2G-T', 'Honor Bee', 'HOMESYNCT2WIFI' ], '@HP': ['HP Chromebook x360 11 G1 EE', '(HP|Slate)!!', 'HP!!', 'HP-TouchPad', '(HP )?Touchpad!'], + '@HR': [ + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + ], '@HS': [ 'HS-[0-9]{1,2}DTB!!', 'HS-[EFHITUX][0-9]!!', @@ -2020,17 +2195,18 @@ exports.ANDROID_INDEX = { 'Huawei MediaPad T1 10 4G', '(Huawei )?[MSTX](1|2|7|8|10)\\-[A-Z0-9][0-9]{2,2}!!', 'HUAWEI GEM-703L', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'HUAWEI A168-(AL10|DL09|L09|L29)!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!', '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!', '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!', + '(HW-|HUAWEI )?PIC-(LX9)!', '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!', '(HW-|HUAWEI )?HWI-(AL00|TL00)!', '(HW-|HUAWEI )?PAR-(AL00|LX1|LX1M|LX9|TL00)!', @@ -2049,15 +2225,16 @@ exports.ANDROID_INDEX = { 'Huawei 858' ], '@HW': [ - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!', '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!', '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!', + '(HW-|HUAWEI )?PIC-(LX9)!', '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!', '(HW-|HUAWEI )?HWI-(AL00|TL00)!', '(HW-|HUAWEI )?PAR-(AL00|LX1|LX1M|LX9|TL00)!', @@ -2076,6 +2253,7 @@ exports.ANDROID_INDEX = { '@HY': ['HY5001', 'HYUNDAI!!', 'Hydro', 'Hydro PLUS', 'HYPER X BLADE'], '@I ': ['I 7520'], '@I-': ['i-Joy i-Call', 'i-Call 300', 'i-Call 300v2', 'i-Call 504', '(i-mobile|i-style|IQ)!!'], + '@I0': ['I01WDX', 'I001DC', 'I001DE', 'I002D', 'I003D', 'I003DD', 'I004D', 'I005D', 'I005DA', 'I006D', 'I01WD'], '@I1': ['I110', 'i1'], '@I3': ['i3000'], '@I5': ['i5300', 'i5350'], @@ -2136,6 +2314,8 @@ exports.ANDROID_INDEX = { 'INQ Mayfair (EU)', '(iNote|itel)!!', 'Infinity', + 'IN201[01357]!', + 'IN202[0135]!', 'Internet TV', 'Internet TV Box' ], @@ -2147,6 +2327,7 @@ exports.ANDROID_INDEX = { 'IS11CA', 'ISW?[0-9]{2,2}F!!', 'ISW[0-9]{2,2}HT!!', + 'IS530', 'ISW11K', 'IS11LG', 'ISW11M', @@ -2165,21 +2346,29 @@ exports.ANDROID_INDEX = { ], '@IT': ['(iNote|itel)!!', 'ITP-XD10W', 'ITP-XD80L', 'ITP-XD97W'], '@IU': ['IUNI U810'], - '@IV': ['IVIO!!'], + '@IV': ['IVIO!!', 'IV2201'], '@IW': ['iwoo i900'], '@IX': ['iX101T1', 'iX101T1-2G', 'iX101T1-XS'], - '@JA': ['Jaguar3', 'Jaguar7'], + '@JA': [ + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + 'Jaguar3', + 'Jaguar7' + ], '@JC': ['JC-S9220', 'JC-A[0-9]{3,3}!!', 'JC-KSP8000'], '@JD': ['JDN-W09', 'JDN2-AL00HN', 'JDN2-W09HN'], + '@JE': ['Jelly2'], '@JI': ['(JIAYU|JY)!!', 'JIMMY'], '@JJ': ['JJ5S+'], - '@JK': ['(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], + '@JK': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@JM': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + ], + '@JN': [ + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' ], '@JO': ['Jolla', 'Joy', 'JOIN'], '@JS': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@JT': ['JT SmartPC02', 'JT-Smart PC01', 'JT-H580VT', 'JT-H581VT', 'JT-B1'], '@JX': ['JXD!!'], @@ -2222,6 +2411,7 @@ exports.ANDROID_INDEX = { ], '@K1': ['K11', 'K1', 'K10000 Pro'], '@K3': ['K3', 'K30-T', 'K30-W', 'K3 Note'], + '@K6': ['K6000 Pro'], '@K8': ['(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!'], '@K9': ['K9 Smart 4G'], '@KA': [ @@ -2232,7 +2422,7 @@ exports.ANDROID_INDEX = { '(KATBL|Kogan|Agora)!!', 'Kavak Y625-U03' ], - '@KB': ['KB901'], + '@KB': ['KB901', 'KB200[01357]!'], '@KC': ['KC-01', 'KC-S301AE', 'KC-S701', 'KCP01K'], '@KE': ['KENEKSI!!', 'kenzo'], '@KF': [ @@ -2254,11 +2444,14 @@ exports.ANDROID_INDEX = { 'KFDOWI', 'KFSUWI', 'KFMAWI', + 'KFKAWI', 'KFMUWI' ], '@KI': [ 'Kindle Fire', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + 'KINGKONG 5 Pro', + 'KINGKONG MINI2', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', 'KIOTO 793', 'KITE', @@ -2266,11 +2459,12 @@ exports.ANDROID_INDEX = { ], '@KM': ['(EV|KM)-[ES][0-9]{3,3}!!'], '@KN': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@KO': [ 'Konka Amber3', 'KOB-(L09|W09)!', + 'KOB2-(W09)!', '(KATBL|Kogan|Agora)!!', 'KOMU!!', 'KONKA!!', @@ -2280,7 +2474,11 @@ exports.ANDROID_INDEX = { 'KORIDY H16' ], '@KP': ['KPT!!', 'KPN!!'], - '@KS': ['KSP8000'], + '@KS': [ + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + 'KSP8000' + ], + '@KT': ['KT-101-A'], '@KU': ['Kurio!!', 'KU9500', 'KUNO4', 'KUNO 4+'], '@KY': [ 'KYV33', @@ -2297,6 +2495,8 @@ exports.ANDROID_INDEX = { '@L9': ['l97D'], '@LA': [ 'LA-!!', + 'Land Rover Explore', + 'Land Rover Explore R', '(Lanix )?(Ilium|llium)!!', 'Lark!!', 'LAVA iris 351', @@ -2334,7 +2534,7 @@ exports.ANDROID_INDEX = { 'LC-((A|S|LX)[0-9]{1,3}[A-Z])!', 'LCD-((S|V|LX|UF)[0-9]{1,3}[A-Z])!' ], - '@LD': ['(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', 'LDK-ICK v1.4'], + '@LD': ['(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'LDK-ICK v1.4'], '@LE': [ '(LE[0-9]{2,2}[BMU][0-9]{4,4}[A-Z]+)!', '(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!', @@ -2407,11 +2607,35 @@ exports.ANDROID_INDEX = { 'Lenovo YT3-X50F', 'Lenovo YT3-X50L', 'Lenovo YT3-850F', + 'Lenovo YT-J706F', 'Lenovo YT-X703F', + 'Lenovo YT-X705F', 'Lenovo YT3-X90F', 'Lenovo YT3-X90L', '(Lenovo )?(Tab ?)?(2 ?)?[AS](7|8|10)!!', 'Lenovo TB-7304F', + 'Lenovo TB-7305F', + 'Lenovo TB-7305X', + 'Lenovo TB-8304F1', + 'Lenovo TB-8505FS', + 'Lenovo TB-8704X', + 'Lenovo TB-8705F', + 'Lenovo TB-J606F', + 'Lenovo TB-J606L', + 'Lenovo TB-J607Z', + 'Lenovo TB-J616F', + 'Lenovo TB-J706F', + 'Lenovo TB-J716F', + 'Lenovo TB-X104F', + 'Lenovo TB-X304L', + 'Lenovo TB-X306F', + 'Lenovo TB-X306X', + 'Lenovo TB-X505F', + 'Lenovo TB-X605F', + 'Lenovo TB-X605L', + 'Lenovo TB-X606F', + 'Lenovo TB-X606X', + 'Lenovo TB-X6C6F', 'Lenovo TB-X103F', 'Lenovo TB2-X30F', 'Lenovo TB2-X30L', @@ -2424,11 +2648,15 @@ exports.ANDROID_INDEX = { 'Lenovo TB3-X70F', 'Lenovo TB3-X70L', 'Lenovo TB-8504F', + 'Lenovo TB-8504X', + 'Lenovo TB-8505F', 'Lenovo TB-8703F', 'Lenovo TB-8704F', 'Lenovo TB-X304F', 'Lenovo TB-X704F', 'Lenovo TB-X704L', + 'Lenovo TB-X705F', + 'Lenovo TB-X705L', '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', 'Lenovo Pad A4', 'Lenovo', @@ -2450,9 +2678,13 @@ exports.ANDROID_INDEX = { 'Le Pan TC1020', 'LePanII', 'Le Pan S', + 'LE2101', + 'LE211[0135]!', + 'LE212[01357]!', 'LENNY', 'LENNY2', - 'LENNY3' + 'LENNY3', + 'Lenny4' ], '@LG': [ 'LGE-lap crespo', @@ -2528,7 +2760,7 @@ exports.ANDROID_INDEX = { 'Liquid!!', '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', 'Liberty', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', '(MEDION|(MD )?LIFETAB)!!', 'Life', 'Liberty Tab G100', @@ -2540,16 +2772,26 @@ exports.ANDROID_INDEX = { 'Light Tab 2W' ], '@LL': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(Lanix )?(Ilium|llium)!!' ], '@LM': [ + 'LM-F100!', 'LM-G710!', 'LM-G715!', 'LM-G810!', 'LM-G820!', + 'LM-G850!', + 'LM-G900!', + 'LM-G910!', + 'LM-K200!', + 'LM-K410!', + 'LM-K420!', + 'LM-K510!', + 'LM-K520!', 'LM-Q610!', 'LM-Q617!', + 'LM-Q630!', 'LM-Q710!', 'LM-Q720!', 'LM-Q725!', @@ -2561,6 +2803,8 @@ exports.ANDROID_INDEX = { 'LM-V40[59]!', 'LM-V450!', 'LM-V500!', + 'LM-V510!', + 'LM-V600!', 'LM-X120!', 'LM-X210!', 'LM-X212!', @@ -2569,18 +2813,21 @@ exports.ANDROID_INDEX = { 'LM-X410!', 'LM-X415!', 'LM-X420!', + 'LM-X430!', 'LM-X510!', + 'LM-X520!', 'LM-X525!', + 'LM-X540!', 'LM-X625!', 'LM-Y110!' ], '@LO': [ 'LogicPD Zoom2', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'Loox' ], '@LR': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@LS': [ 'LS670', @@ -2626,7 +2873,7 @@ exports.ANDROID_INDEX = { 'LUXURY 3', 'LUXURY 4', 'LUXURY 5', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'Lucky Ultra Sonic U8650', 'LU2300', 'Lumia800', @@ -2641,8 +2888,8 @@ exports.ANDROID_INDEX = { 'Luno' ], '@LY': [ - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'LYF LS-4006', 'LYF LS-5009' ], @@ -2652,20 +2899,60 @@ exports.ANDROID_INDEX = { '@M0': ['M01', 'M02', 'M01T', 'M009F', 'M030', 'M031', 'M032', 'M040', 'M045'], '@M1': [ 'M19', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'M1050S', 'M1', 'm1 metal', 'm1 note', 'M1001', - 'M12' + 'M12', + 'M1908C3JGG' ], '@M2': [ - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'M210', 'm2 note', 'm2', - 'M2mini' + 'M2mini', + 'M2002J9G', + 'M2003J15SC', + 'M2004J19C', + 'M2004J7BC', + 'M2006C3LG', + 'M2006C3LVG', + 'M2006C3MG', + 'M2006C3MII', + 'M2006C3MNG', + 'M2007J17G', + 'M2007J1SC', + 'M2007J20CG', + 'M2007J22G', + 'M2007J3SG', + 'M2007J3SY', + 'M2010J19CG', + 'M2010J19SG', + 'M2010J19SY', + 'M2011K2C', + 'M2011K2G', + 'M2012K11AG', + 'M2012K11AC', + 'M2012K10C', + 'M2012K11G', + 'M2101K6G', + 'M2101K6P', + 'M2101K7AG', + 'M2101K7BG', + 'M2101K7BNY', + 'M2101K9AG', + 'M2101K9C', + 'M2101K9G', + 'M2102J20SG', + 'M2102J20SI', + 'M2102K1AC', + 'M2102K1C', + 'M2102K1G', + 'M2103K19G', + 'M2103K19PG' ], '@M3': [ 'M3 Enjoy TV Box', @@ -2683,7 +2970,7 @@ exports.ANDROID_INDEX = { 'M355', 'M356' ], - '@M4': ['M4301', 'M470BSA', 'M470BSE', 'M4', 'M4(TEL)? SS[0-9]{3,4}!!'], + '@M4': ['M4301', 'M470BSA', 'M470BSE', 'M4', 'M4(TEL)? SS[0-9]{3,4}!!', 'M40 EEA', 'M40(N9H3)'], '@M5': ['M555', 'M532', 'M5 lite', 'M571C', 'M5 Note', 'M578C', 'M5'], '@M6': ['M623C', 'M650', 'M660', 'M6 Note', 'M6'], '@M7': ['M701C', 'M702', 'M758A', 'M7CDTU', 'M70', 'M785', 'M726HC', 'M70014'], @@ -2695,7 +2982,8 @@ exports.ANDROID_INDEX = { 'manta', '(bq|Aquaris|Edison|Maxwell)!!', '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', '(HW-|HUAWEI )?MAR-(AL00|LX1A|LX1M|LX2|LX3A|TL00)!', 'MAX FIND 5.0', 'Malata!!', @@ -2718,7 +3006,14 @@ exports.ANDROID_INDEX = { 'MBS BEAN 454', 'MB[0-9]{3,3}!!' ], - '@MC': ['MC002', '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', 'MC32N0', 'MC40N0', 'MC67NA'], + '@MC': [ + 'MC002', + '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', + 'MC401 GWL', + 'MC32N0', + 'MC40N0', + 'MC67NA' + ], '@MD': ['(MEDION|(MD )?LIFETAB)!!', 'MD-[0-9]{4,4}!!'], '@ME': [ 'ME102A', @@ -2737,6 +3032,7 @@ exports.ANDROID_INDEX = { 'ME581CL', 'MeMO Pad 7', 'MediaPad!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'Mediacom 810C', '(MEDION|(MD )?LIFETAB)!!', 'MEEG!!', @@ -2765,7 +3061,7 @@ exports.ANDROID_INDEX = { 'MFC[0-9]!!', 'MF97B' ], - '@MH': ['MH350', '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!'], + '@MH': ['MH350', '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!'], '@MI': [ 'MID1040C', 'MID[0-9]{4,4}!!', @@ -2807,9 +3103,22 @@ exports.ANDROID_INDEX = { 'MI 8 SE', 'MI 8 UD', 'MI 8 Lite', + 'MI 8 Pro', 'MI 9', - 'Mi 9T Pro', + 'Mi 9 Lite', 'Mi9 Pro 5G', + 'Mi 9 SE', + 'Mi 9T', + 'Mi 9T Pro', + 'Mi 10', + 'Mi 10 Pro', + 'Mi 10 Lite 5G', + 'Mi 10T Lite', + 'Mi 11', + 'Mi 11 Lite 5G', + 'Mi Note 10', + 'Mi Note 10 Lite', + 'Mi Note 10 Pro', '(Xiaomi|Xiaomi Mi|MI) Note!!', '(Xiaomi )?(MI )?MAX$!', '(Xiaomi )?(MI )?MAX 2$!', @@ -2817,6 +3126,10 @@ exports.ANDROID_INDEX = { '(Xiaomi )?(MI )?MIX$!', '(Xiaomi )?(MI )?MIX 2$!', '(Xiaomi )?(MI )?MIX 2S$!', + 'MIX 3', + 'Mi MIX 3', + 'Mi MIX 3 5G', + 'MI PLAY', 'mido', '(Xiaomi|Xiaomi Mi|MI) Pad!!', '(Xiaomi|Xiaomi Mi|MI)Box!!', @@ -2849,11 +3162,20 @@ exports.ANDROID_INDEX = { 'moii!!', 'MORAL N01', 'motorola one', + 'motorola one 5G ace', 'motorola one action', + 'motorola one fusion+', + 'motorola one hyper', 'motorola one macro', 'motorola one power', 'motorola one vision', 'motorola one zoom', + 'motorola edge', + 'motorola edge plus', + 'motorola edge 20', + 'motorola edge 20 lite', + 'motorola edge 20 pro', + 'motorola edge 30 pro', 'Moto Droid', 'Motorola Pro XT610', 'Motorola Milestone MAXX', @@ -2867,8 +3189,21 @@ exports.ANDROID_INDEX = { 'Moto E4', 'Moto E (4)', 'Moto E (4) Plus', + 'moto e5', 'moto e5 cruise', 'moto e5 play', + 'moto e5 plus', + 'moto e(6i)', + 'moto e6s', + 'moto e6 play', + 'moto e(6) plus', + 'moto e(7)', + 'moto e(7) plus', + 'moto e(7) power', + 'moto e(7i) power', + 'moto e20', + 'moto e30', + 'moto e40', '(Moto)?G3$!', '(Moto)?G3-TE$!', 'Moto G 2015', @@ -2876,7 +3211,11 @@ exports.ANDROID_INDEX = { 'Moto G (2014', 'MOTOROLA MOTOG', 'Moto G Play', + 'moto g power', 'Moto G Turbo', + 'moto g 5G', + 'moto g 5G plus', + 'moto g pro', 'Moto G4', 'Moto G (4', 'Moto G (4)', @@ -2888,6 +3227,7 @@ exports.ANDROID_INDEX = { 'Moto G (5S', 'Moto G (5S)', 'Moto G (5S) Plus', + 'Moto G (5S) Plus (XT1805)', 'moto g(6', 'moto g(6)', 'moto g(6) (XT1925DL)', @@ -2902,11 +3242,31 @@ exports.ANDROID_INDEX = { 'moto g(7) power', 'moto g(7) supra', 'moto g(8', + 'moto g(8)', + 'moto g(8) plus', + 'moto g(8) power', + 'moto g(8) power lite', + 'moto g(9) play', + 'moto g(9) plus', + 'moto g(9) power', + 'moto g(10)', + 'moto g(20)', + 'moto g(30)', + 'moto g31(w)', + 'moto g(50)', + 'moto g51 5G', + 'moto g(60)', + 'moto g(60)s', + 'moto g(100)', + 'moto g200 5G', 'Moto Z (2)', 'Moto Z2 Play', + 'Moto Z3 Play', 'Moto X Pro', 'moto x4', + 'moto z4', 'Moto Backflip', + 'motorola razr 5G', 'MOTOROLA XOOM MZ606', 'MOTOROLA RAZR', 'MOTWX435KT', @@ -2944,7 +3304,7 @@ exports.ANDROID_INDEX = { 'MPQC804HD', 'MPQC1010' ], - '@MR': ['(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], + '@MR': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@MS': [ 'MStar Amber3', 'MSM', @@ -2999,7 +3359,7 @@ exports.ANDROID_INDEX = { 'mt8580!', 'mt8658!', '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'MTC Android', 'MT791', 'MT70[0-9]{2,2}!!', @@ -3036,7 +3396,7 @@ exports.ANDROID_INDEX = { ], '@MX': ['MX Enjoy TV BOX', 'MX2', 'MX4', 'MX4 Pro', 'MX5', 'MX6'], '@MY': [ - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'MyPhone A818g Duo', 'MyPhone A818 Slim Duo', 'MyPhone A848 Duo', @@ -3137,7 +3497,7 @@ exports.ANDROID_INDEX = { 'NATCOM N8302' ], '@NB': ['NB036', 'NBX-T7013N', 'NBX-T7023N'], - '@NC': ['(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], + '@NC': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@NE': [ '(HTC )?Nexus ?One!', '(Google )?Nexus S!', @@ -3172,7 +3532,7 @@ exports.ANDROID_INDEX = { '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!', 'NexusHD2', 'Nexus HD2', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'Neon7', 'Neon9', '(NetTab|NT-)!!', @@ -3222,6 +3582,7 @@ exports.ANDROID_INDEX = { 'Next9P', 'Next10P12', 'NEXT', + 'NE2213', 'New Andromax-i', 'Neo V', 'NEBULA6.9' @@ -3252,7 +3613,7 @@ exports.ANDROID_INDEX = { ], '@NI': ['NITROGEN6X', 'NID 7010', 'Nibiru H1', 'Nibiru H1c', 'nine i7400', 'nikeh', 'nikel'], '@NM': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(NMP|MBR|XDK|XDS|XMP)\\-!!' ], '@NO': [ @@ -3307,6 +3668,7 @@ exports.ANDROID_INDEX = { 'Nook HD', 'Nook HD+', 'Novapad!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'Nova!!', 'Now', 'NO1 S6', @@ -3345,16 +3707,23 @@ exports.ANDROID_INDEX = { 'Notion Ink ADAM', 'Note III', 'Nozomi', + 'Note 7P', + 'Note 8P', + 'Note 9P', + 'Note 11P', 'Noble TAB07-485', '(QMobile|QTab|Q-Smart|Noir)!!' ], '@NP': ['npm702-NOVO7PALADIN'], '@NS': ['NS115', 'NS2816', 'NS-14T002', 'NS-13T001', 'NSZ-G[A-Z][0-9]!!'], - '@NT': ['(NetTab|NT-)!!'], + '@NT': [ + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(NetTab|NT-)!!' + ], '@NU': ['Numy!!', 'nuvi!!', 'NUU A3', 'NuclearSX-SP5', 'nubia Z5', 'Nubia Z9 Max', 'Nura 2'], '@NW': ['NWZ?-Z1000Series!'], '@NX': [ - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', '(Nexian )?NX-A[0-9]{3,3}!!', 'NXA8QC116', 'NX16A8116K', @@ -3553,6 +3922,7 @@ exports.ANDROID_INDEX = { 'One V', 'One', 'One M7', + 'One Max', 'one m8', 'One A0001', 'OnePlus One', @@ -3573,10 +3943,12 @@ exports.ANDROID_INDEX = { 'ONEPLUS A6003', 'ONEPLUS A6010', 'ONEPLUS A6013', + 'OnePlus 7T Pro', 'ONE E1000', 'ONE E1001', 'ONE E1003', 'ONE E1005', + 'oneplus Nord 2 5G', 'ONDA MID', 'ONDA A9 Core4', 'ONDA VI10', @@ -3729,9 +4101,9 @@ exports.ANDROID_INDEX = { ], '@OT': ['OT 918', 'OT 919', 'OT 919 HelloKitty', 'OT-990C', 'OT 990M', 'OT-995'], '@OU': ['OUYA( Console)?!'], - '@OV': ['(OV-|Overmax|Vertis)!!'], + '@OV': ['(OV-|Overmax|Vertis)!!', 'OV10274G'], '@OX': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@OY': [ 'Oysters Pacific 800', @@ -3751,6 +4123,7 @@ exports.ANDROID_INDEX = { 'P001', 'P001 2', 'P002', + 'P00A', 'P00C', 'P00I', 'P01M', @@ -3764,14 +4137,19 @@ exports.ANDROID_INDEX = { 'P021', 'P022', 'P023', - 'P024' + 'P024', + 'P027', + 'P028' ], '@P1': [ 'P10AN', 'P105', 'P1m', 'P1ma40', + 'P1035X', 'P1050X', + 'P1060X', + 'P1061X', 'P10HD??(E6NA)', 'P11HD', 'P11HD四核(G9X6)', @@ -3783,7 +4161,8 @@ exports.ANDROID_INDEX = { '@P2': [ 'P2A700', 'P2Lite', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + 'P20HD EEA' ], '@P3': ['P330X', 'P350X', 'P360X', 'P300(Funbook)'], '@P4': ['P4i', 'P4', 'P4D Sirius'], @@ -3794,10 +4173,10 @@ exports.ANDROID_INDEX = { 'P6 Pro', 'P6 Qmax', 'P6 Quad', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' ], '@P7': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'P700i', 'P701', 'P7', @@ -3861,6 +4240,7 @@ exports.ANDROID_INDEX = { 'P89s mini(F8A2)' ], '@P9': [ + 'P9 Energy', 'P940', 'P990', 'P90(H3U6)', @@ -3925,7 +4305,7 @@ exports.ANDROID_INDEX = { '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', '(HTC|PCD|USCC)?ADR[0-9]{4,4}!!', 'PC36100!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'PC-TE307N1W', 'PC-TE508BAW', 'PC-TS508FAM', @@ -3938,7 +4318,7 @@ exports.ANDROID_INDEX = { ], '@PD': ['PD10-DYD', 'PD6D1J'], '@PE': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'PEDI', 'Penta!!', 'Pentagram!!', @@ -4024,13 +4404,20 @@ exports.ANDROID_INDEX = { 'Pixel 3a', 'Pixel 3a XL', 'Pixel 4', + 'Pixel 4a', + 'Pixel 4a (5G)', 'Pixel 4 XL', + 'Pixel 5', + 'Pixel 5a', + 'Pixel 6', + 'Pixel 6 Pro', '(Axioo[\\- ])?PICO!!', 'picoBit-L', '(GIO-)?(GiONEE[- ])?Pioneer P1!', '(GIO-)?(GiONEE[- ])?Pioneer P2!', '(GIO-)?(GiONEE[- ])?Pioneer P3!', '(GIO-)?(GiONEE[- ])?Pioneer P4!', + '(HW-|HUAWEI )?PIC-(LX9)!', 'PixelV1', 'Pixel V2', 'Pixel V2+', @@ -4058,7 +4445,7 @@ exports.ANDROID_INDEX = { '@PL': [ 'PLE-701L', 'PLE-703L', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'Planet II v2', 'PLANET', 'Playboy PB-S3', @@ -4082,7 +4469,7 @@ exports.ANDROID_INDEX = { ], '@PO': [ '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'PocketBook A7', 'PocketBook A10', 'PocketBook A10 3G', @@ -4165,13 +4552,23 @@ exports.ANDROID_INDEX = { 'Positivo S550', 'Positivo X400', 'Positivo X800', - 'POCOPHONE F1' + 'Power Armor 13', + 'POCOPHONE F1', + 'POCO F1', + 'POCO F2 Pro', + 'POCO X2', + 'POCO X3 NFC', + 'POCO X3 Pro' + ], + '@PP': [ + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + 'PP4MT-7', + 'PP4MT-9' ], - '@PP': ['PP4MT-7', 'PP4MT-9'], '@PR': [ 'Project Tango Tablet Development Kit', '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Pro 10 dual core', 'Prada 3.0', 'PRO 5', @@ -4501,6 +4898,7 @@ exports.ANDROID_INDEX = { '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', 'REVVLPLUS C3701A' ], + '@RG': ['RG650', 'RG655', 'RG725', 'RG850'], '@RH': ['(?:RIVO )?RHYTHM RX ?([0-9]+)!'], '@RI': [ 'Rikomagic MK802', @@ -4508,7 +4906,7 @@ exports.ANDROID_INDEX = { 'Rikomagic MK802III', 'Rikomagic MK802IIIS', '(Gsmart|Gigabyte|Rio)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Rise', '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', 'RIDGE', @@ -4547,9 +4945,42 @@ exports.ANDROID_INDEX = { 'RKM MK902', 'RKM MK902II' ], - '@RM': ['RM02', 'RM-980', 'RM-1061', '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', 'RMD-[0-9]{2,3}G!!'], + '@RM': [ + 'RM02', + 'RM-980', + 'RM-1061', + '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', + 'RMD-[0-9]{2,3}G!!', + 'RMX1911', + 'RMX1931', + 'RMX1971', + 'RMX1993', + 'RMX2001', + 'RMX2002', + 'RMX2020', + 'RMX2030', + 'RMX2063', + 'RMX2075', + 'RMX2086', + 'RMX2111', + 'RMX2144', + 'RMX2155', + 'RMX2170', + 'RMX2185', + 'RMX2202', + 'RMX3081', + 'RMX3085', + 'RMX3201', + 'RMX3241', + 'RMX3242', + 'RMX3263', + 'RMX3301', + 'RMX3311', + 'RMX3363', + 'RMX3370' + ], '@RN': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@RO': ['Rock-(AL00|CL00|L01|L03)!', 'roiX', 'RoverPad 3W T71D', 'ROAR', 'Roar A50', 'Roar V25', 'rolex'], '@RP': ['RP-UDM01A'], @@ -4560,12 +4991,13 @@ exports.ANDROID_INDEX = { '@S0': ['S01'], '@S1': ['(GIO-)?(GiONEE[- ])?S101!', '(Lenovo )?S1[- ]37AH0!', 'S1005KTAB'], '@S2': ['S222', '(Lenovo )?S2[- ]38A(H0|T0)!', 'S2'], - '@S3': ['s3c6410', 'S30', 'S308', 'S3'], - '@S4': ['S40', 'S4503Q', 'S4505M', 'S4'], - '@S5': ['S5PV210', 'S5-F', 'S50', 'S50c', 'S5', 'S5 Mini!', 'S51SE'], - '@S6': ['S658t', 'S6 Edge+!'], - '@S7': ['S710d', 'S710D', 'S720i', 'S7', 's732'], - '@S8': ['S8600', 'S88 DISCOVERY', 'S850', 'S880'], + '@S3': ['s3c6410', 'S30', 'S31', 'S308', 'S3'], + '@S4': ['S40', 'S41', 'S42', 'S4503Q', 'S4505M', 'S4'], + '@S5': ['S5PV210', 'S5-F', 'S50', 'S50c', 'S52', 'S58Pro', 'S5 Pro', 'S5', 'S5 Mini!', 'S51SE'], + '@S6': ['S61', 'S62 Pro', 'S68Pro', 'S658t', 'S6 Edge+!'], + '@S7': ['S70Lite', 'S710d', 'S710D', 'S720i', 'S7', 's732'], + '@S8': ['S88Pro', 'S8600', 'S88 DISCOVERY', 'S850', 'S880'], + '@S9': ['S96Pro'], '@SA': [ 'sama5d3', 'SABRESD-MX6DQ', @@ -4593,9 +5025,9 @@ exports.ANDROID_INDEX = { '@SB': ['SBM[0-9]0[0-9]SH!!'], '@SC': [ 'SCM-(AL09|W09)!', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'SCH-[iI][0-9]{3,3}!!', 'SCH-L710!', 'SCH-M828!', @@ -4639,6 +5071,7 @@ exports.ANDROID_INDEX = { 'SHIELD Tablet X1', 'SHIELD Tablet II', 'Shine', + 'SHT-W09', 'SH940C-LN', 'SH940C-LN TV', 'SH960C-LN', @@ -4646,16 +5079,23 @@ exports.ANDROID_INDEX = { 'SHV-E[0-9]{3,3}!!', 'SHW-M[0-9]{3,3}!!', 'SH01D', + 'SH-A01', + 'SH-C02', + 'SH-D01', 'SH-M01', 'SH-M02', 'SH-M02-EVA20', 'SH-M03', + 'SH-M05', 'SH-M07', 'SH-RM02', + 'SH-Z01', 'SH-[01][0-9][A-Z]!!', '(SHP-)?(SHARP )?SH[0-9]{2,3}!!', 'SH[FLTV][0-9]{2,2}!!', - 'SHARP-ADS1' + 'SHARP-ADS1', + 'SHIFT6m', + 'SHARK PRS-H0' ], '@SI': ['SiRF Dream', 'simvalley SP-142', 'Signature Touch', 'Signature Touch L'], '@SK': [ @@ -4665,13 +5105,14 @@ exports.ANDROID_INDEX = { 'Skyworth!!', 'SK17(a|i|iv|i-o)!', 'SK-Mtek GT7305', + 'SKR-H0', '(ZTE )?Skate!!' ], '@SL': [ 'Slider SL101', 'SL930', '(HP|Slate)!!', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'Slidepad!!', 'SLIDE' ], @@ -4709,6 +5150,12 @@ exports.ANDROID_INDEX = { 'SM-P[0-9]{3,3}!!', 'SM-S[0-9]{3,3}!!', 'SM-T[0-9]{3,3}!!', + 'SM-X200', + 'SM-X205', + 'SM-X700', + 'SM-X800', + 'SM-X900', + 'SM-X906!', 'SM-V700', 'SM-W[0-9]{4,4}!!', 'Smartphone Android by SFR STARADDICT II', @@ -4725,7 +5172,7 @@ exports.ANDROID_INDEX = { ], '@SN': [ 'SN[0-9]!!', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'Snexian!!', '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!', '(SNM\\-)?M[0-9]{2,2}[a-z]!!' @@ -4741,7 +5188,7 @@ exports.ANDROID_INDEX = { 'Softwinerf900', 'SoftwinerEvbV13', 'soho', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'SONIC', 'Sonim!!', 'SO-0[0-9][A-Z]!!', @@ -4802,8 +5249,8 @@ exports.ANDROID_INDEX = { 'ST7001', 'ST8000', 'ST9001', - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'ST10', 'ST940I-UP', 'STM[0-9]{3,3}H!!', @@ -4866,6 +5313,8 @@ exports.ANDROID_INDEX = { 'Surfing Tab C 3G', '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', + 'Surface Duo', + 'Surface Duo 2', 'surnia', 'SUGAR ([A-Z][0-9]?(?: Pro)?)!', 'SUPRA (M[0-9]{2,3}[A-Z]{0,2})!', @@ -4874,7 +5323,7 @@ exports.ANDROID_INDEX = { 'SUNSET2' ], '@SV': ['sv8860', 'SVP-DTV15'], - '@SW': ['Swift', 'Swift Plus', 'Swift 2 Plus', 'Swift 2 X'], + '@SW': ['Swift', 'Swift Plus', 'Swift 2', 'Swift 2 Plus', 'Swift 2 X'], '@SX': ['SXZ-PD!!', 'SX9701W'], '@SY': ['Sygnus', 'SYTABEX7-2', '(Symphony|Xplorer)!!', 'Synrgic Uno M1'], '@SZ': ['SZJ-JS101', 'SZENIO!!'], @@ -4926,10 +5375,10 @@ exports.ANDROID_INDEX = { 'T00Q' ], '@T1': ['T1-B', 'T1-D', 'T1-E', 'T1K Plus', 'T1 7.0', 'T11AD!'], - '@T2': ['T20'], + '@T2': ['T20-Plus', 'T20'], '@T3': ['T320a', 'T30', 'T3696', 'T301'], - '@T6': ['T6'], - '@T7': ['(OPPO-?)?T703!', 'T720 SE', 'T760 from moage.com'], + '@T6': ['T6', 'T671H'], + '@T7': ['(OPPO-?)?T703!', 'T774H', 'T775H', 'T790Y', 'T720 SE', 'T760 from moage.com'], '@T8': ['T8[0-9]{3,3}!!'], '@T9': ['T9108', 'T92', 'T9199h', 'T9[0-9]{3,3}!!', 'T959', 'T98 4G??(C6R2)'], '@TA': [ @@ -4941,8 +5390,8 @@ exports.ANDROID_INDEX = { 'Tablet-P27', 'TA10CA3', '(tablet )?fnac!!', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', 'TA-FONE!!', 'TAB1011', @@ -5049,7 +5498,8 @@ exports.ANDROID_INDEX = { 'TC55CH', 'TC70', 'TC75', - 'TCL!!' + 'TCL!!', + 'TC26' ], '@TD': ['TD070VA1', 'TD600', 'TD-1010', 'TD506'], '@TE': [ @@ -5074,6 +5524,7 @@ exports.ANDROID_INDEX = { 'Telpad Quad S', 'Telpad QS', 'Tensent S9000', + 'Teracube 2e', 'teXet X-alpha', 'Texet TM-4083', 'teXet X-start', @@ -5083,6 +5534,8 @@ exports.ANDROID_INDEX = { 'teXet X-medium plus', 'teXet X-maxi qHD', 'TeamDRH ICS for GTablet', + 'TERRA PAD 1004', + 'TERRA PAD 1005', 'Telenor!!' ], '@TF': [ @@ -5107,11 +5560,13 @@ exports.ANDROID_INDEX = { '@TI': [ 'Tilapia', 'Titan TV S320', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + 'TIQ-1049', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', '(Karbonn|Titanium)!!', 'TI320-DU', 'TI320-DU TV', 'TizzBird!!', + 'Titan pocket', 'tiffany' ], '@TL': ['TLINK[0-9]{3,3}!!'], @@ -5169,7 +5624,7 @@ exports.ANDROID_INDEX = { 'tmn!!' ], '@TN': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@TO': [ 'Toro', @@ -5213,9 +5668,11 @@ exports.ANDROID_INDEX = { '(Transformer )?(Pad )?TF700(T|K)!', 'Transformer (Pad )?Infinity!', 'TR720F', + 'TREKKER-X3', + 'Trekker-X4', 'TR10CS1', 'TripNiCE Pyramid', - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'TR10RS1', '(KAZAM|Thunder|Tornado|Trooper)!!', 'Triumph', @@ -5240,6 +5697,7 @@ exports.ANDROID_INDEX = { ], '@TV': ['TVE9603I', 'TVPAD Slim K3409'], '@TX': ['TX201LA', 'TX201LAF', 'TX85', 'TX18'], + '@U ': ['U FEEL LITE', 'U FEEL PRIME', 'U PULSE LITE'], '@U1': ['(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', 'U1', 'U1203'], '@U2': ['(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', 'U20(a|i|iv)!'], '@U3': ['(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!'], @@ -5264,6 +5722,7 @@ exports.ANDROID_INDEX = { 'Ultimate10', 'Ultimate10-Android4.0', 'Ultimate 10', + 'Ulefone Armor 5', 'Ulefone Be Touch2', 'ultrafone!!', 'Ultym 5', @@ -5306,9 +5765,24 @@ exports.ANDROID_INDEX = { '(GIO-)?(GiONEE[- ])?V185!', '(GIO-)?(GiONEE[- ])?V188!', 'V1', - 'V1277' + 'V1277', + 'V1916A' + ], + '@V2': [ + 'V2 Viper', + 'V2 Viper I', + 'V2 Viper I TM', + 'V2 Viper I4G', + 'V2 Viper S', + 'V2 Viper X', + 'V2 Viper X plus', + 'V2023', + 'V2028', + 'V2041', + 'V2056A', + 'V2109', + 'V2141A' ], - '@V2': ['V2 Viper', 'V2 Viper I', 'V2 Viper I TM', 'V2 Viper I4G', 'V2 Viper S', 'V2 Viper X', 'V2 Viper X plus'], '@V3': ['v360 E1'], '@V5': ['V5U-simvalley SP-142', 'V55'], '@V7': ['V701s Core4', 'V711s Core4', 'V712 Core4', 'V719 3G'], @@ -5384,7 +5858,8 @@ exports.ANDROID_INDEX = { 'VERTU Ti', 'Venus_V3 5040', 'Venus V3 5570', - 'Venus V3 5580' + 'Venus V3 5580', + 'Venus Z20' ], '@VF': [ 'VF685', @@ -5440,7 +5915,7 @@ exports.ANDROID_INDEX = { 'Vibo-A688', 'VitMod ExtraLite 1.6.5.fullodex for HTC HD7 Pro', 'Vivid 4G', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Vibe K5 Plus', 'VIBE X2 (X2)', 'VIBE X3', @@ -5481,6 +5956,10 @@ exports.ANDROID_INDEX = { 'ViewSonic VB733', 'VINUS!!', '(BBG-|VIV-)?vivo!!', + 'View', + 'View XL', + 'View2 Go', + 'View2 Plus', 'Viettel i5', 'Viettel I8', 'VIETTEL V8404!', @@ -5491,7 +5970,7 @@ exports.ANDROID_INDEX = { 'VIETTEL V8509' ], '@VK': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'VK410', 'VK700', 'VK810 4G', @@ -5500,7 +5979,7 @@ exports.ANDROID_INDEX = { '@VL': ['VL-[0-9]{3,3}!!'], '@VM': ['VMware Virtual Platform', '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', 'VM670'], '@VN': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' ], '@VO': [ 'Vogue', @@ -5508,7 +5987,7 @@ exports.ANDROID_INDEX = { 'Volantisg', 'VOYAGER DG300', 'VOYAGER2 DG310', - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Vox', 'Vortex', 'vollo Vi86', @@ -5552,7 +6031,7 @@ exports.ANDROID_INDEX = { 'Vsun V9' ], '@VT': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'VT6078', 'VT75C', 'VT77C', @@ -5563,6 +6042,8 @@ exports.ANDROID_INDEX = { ], '@VW': ['VW RCBKK1'], '@VX': ['VX-100', 'VX580A', 'VX580W', 'VX610A'], + '@W ': ['W K300', 'W K400', 'W P200', 'W C800', 'W C860'], + '@W-': ['W-V600', 'W-P311-EEA', 'W-V800-EEA', 'W-V830-EEA', 'W-V730-EEA', 'W-V851-EEA'], '@W1': ['W10', 'W10 V2.0', 'w13pro', 'W13PRO V2.0', 'W17PRO(Dualcore)', 'W17PRO JB Dualcore', 'W100'], '@W2': ['W200', 'W22PRO', 'W22PRO 3G', 'W27(Dualcore)', 'W28(Dualcore)', 'W20'], '@W3': ['W337', 'W3620', 'W30(QuadCore)', 'w30hd(QuadCore)', 'W30HDPRO'], @@ -5573,7 +6054,7 @@ exports.ANDROID_INDEX = { '@W8': ['W820', '(GIO-)?(GiONEE[- ])?W800!', 'W800', 'W806', 'W808', 'W810', 'W880', 'W8', 'W8 beyond'], '@W9': ['W900', 'W990'], '@WA': [ - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'WA-U420D', 'WALSUN S1 Pro', 'WALSUN S2', @@ -5646,6 +6127,7 @@ exports.ANDROID_INDEX = { 'WIKO-CINK SLIM', 'Wiko Rainbow', 'Wiko Stairway', + 'WIM Lite', 'Wileyfox Spark', 'Wileyfox Spark +', 'Wileyfox Spark X', @@ -5689,12 +6171,23 @@ exports.ANDROID_INDEX = { 'X00DDB', 'X00HD', 'X00GD', + 'X00LD', + 'X00T', + 'X00TD', + 'X00TDB', + 'X00DE', + 'X00QD', + 'X00QSA', + 'X01AD', + 'X01BDA', 'X013D', 'X013DA', 'X013DB', 'X013DC', 'X015D', + 'X00ID', 'X014D', + 'X018D', 'X002', 'X003', 'X005', @@ -5716,6 +6209,9 @@ exports.ANDROID_INDEX = { 'X1 mini', 'X1 Selfie', 'X1010', + 'X1030X', + 'X1031X', + 'X1060X', 'X10(a|i|iv|i-o|s)?$!', 'X10 ?(Mini ?Pro)$!', 'X10 ?(Mini)$!', @@ -5755,7 +6251,8 @@ exports.ANDROID_INDEX = { 'X3-Ice MIUI XT720 Memorila Classics' ], '@X4': ['X403'], - '@X5': ['X550', 'X515d', 'X515e', 'X525a', 'X527', 'X505', 'X506', 'X506S', 'X507Q'], + '@X5': ['X5 Soul Pro', 'X550', 'X515d', 'X515e', 'X525a', 'X527', 'X505', 'X506', 'X506S', 'X507Q'], + '@X6': ['X67 5G'], '@X7': [ 'X710d', 'X720D', @@ -5911,10 +6408,13 @@ exports.ANDROID_INDEX = { '(Xiaomi )?(Redmi|RedRice|HM)!!', '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', '(Xiaomi |HM)?20!!', + '(Xiaomi |HM)?21!!', 'Xiaomi MDT2!', 'Xiaomi MCT1!', 'Xiaomi MAT136!', 'Xiaomi MBT6A5!', + 'Xiaomi 11 Lite 5G NE', + 'Xiaomi 11T Pro', '(Xiaomi|Xiaomi Mi|MI) Pad!!', '(Xiaomi|Xiaomi Mi|MI)Box!!', '(Xiaomi|Xiaomi Mi|MI)TV!!' @@ -5959,7 +6459,20 @@ exports.ANDROID_INDEX = { 'XOLO T1000', 'Xolo QC800' ], - '@XP': ['Xperia Z Ultra', 'XPRESS PRO', 'Xperia!!', '(Symphony|Xplorer)!!', 'xPAD-70'], + '@XP': ['Xperia Z Ultra', 'XPRESS PRO', 'XP8800', 'Xperia!!', '(Symphony|Xplorer)!!', 'xPAD-70'], + '@XQ': [ + 'XQ-AT51', + 'XQ-AT52', + 'XQ-BC52', + 'XQ-BC72', + 'XQ-AS52', + 'XQ-BQ52', + 'XQ-AU52', + 'XQ-BT52', + 'XQ-AD51', + 'XQ-AD52', + 'XQ-BE52' + ], '@XT': [ 'Xtreme X2', 'XT751', @@ -5997,7 +6510,7 @@ exports.ANDROID_INDEX = { '@Y5': ['Y538'], '@Y6': ['Y6 Max', 'Y6 Piano'], '@YA': [ - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' ], '@YD': ['YD201', 'YD202', 'YD203', 'YD206'], '@YE': ['Yellowstone', '(Andy|Yezz)!!'], @@ -6150,13 +6663,16 @@ exports.ANDROID_INDEX = { 'Z01HDA', 'Z01KD', 'Z01KDA', + 'Z01MD', 'Z01MDA', + 'Z01RD', + 'Z01QD', 'Z00YD' ], '@Z1': [ '(BB )?Z10$!', 'Z1-H39LW', - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!', + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'Z1i' ], '@Z2': ['Z2 Plus', 'Z2 Rio', 'Z282 C91'], @@ -6268,6 +6784,7 @@ exports.ANDROID_INDEX = { ], '@ZO': ['Zoom', '(Zopo )?ZP ?[0-9]{3,3}!!'], '@ZP': ['(Zopo )?ZP ?[0-9]{3,3}!!'], + '@ZS': ['ZS671KS'], '@ZT': [ 'zt180', 'ZTE A[0-9]{3,3}!!', @@ -6366,6 +6883,8 @@ exports.ANDROID_INDEX = { 'ZTE A2017', 'ZTE A2017G', 'ZTE A2017U', + 'ZTE A2020G Pro', + 'ZTE A2022PG', 'ZTE B2015', 'ZTE B2016', 'ZTE B2017', diff --git a/data/models-android.js b/data/models-android.js index 50b6c28..b35c1fd 100644 --- a/data/models-android.js +++ b/data/models-android.js @@ -272,7 +272,13 @@ exports.ANDROID_MODELS = { 'Pixel 3a': ['Google', 'Pixel 3a'], 'Pixel 3a XL': ['Google', 'Pixel 3a XL'], 'Pixel 4': ['Google', 'Pixel 4'], + 'Pixel 4a': ['Google', 'Pixel 4a'], + 'Pixel 4a (5G)': ['Google', 'Pixel 4a 5G'], 'Pixel 4 XL': ['Google', 'Pixel 4 XL'], + 'Pixel 5': ['Google', 'Pixel 5'], + 'Pixel 5a': ['Google', 'Pixel 5a'], + 'Pixel 6': ['Google', 'Pixel 6'], + 'Pixel 6 Pro': ['Google', 'Pixel 6 Pro'], /* Google Edition */ 'HTC One': ['HTC', 'One (Google Edition)'], @@ -319,11 +325,10 @@ exports.ANDROID_MODELS = { /* Chromebook */ - 'Acer Chromebook R11': ['Acer', 'Chromebook R11', DeviceType.DESKTOP], - 'Acer Chromebook R11 (CB5-132T / C738T)': ['Acer', 'Chromebook R11', DeviceType.DESKTOP], - 'Acer Chromebook 15 (CB3-532)': ['Acer', 'Chromebook 15', DeviceType.DESKTOP], - 'ASUS Chromebook Flip C100PA': ['Asus', 'Chromebook Flip', DeviceType.DESKTOP], - 'ASUS Chromebook Flip C302': ['Asus', 'Chromebook Flip', DeviceType.DESKTOP], + 'Acer Chromebook R11!': ['Acer', 'Chromebook R11', DeviceType.DESKTOP], + 'Acer Chromebook R13!': ['Acer', 'Chromebook R13', DeviceType.DESKTOP], + 'Acer Chromebook 15!': ['Acer', 'Chromebook 15', DeviceType.DESKTOP], + 'ASUS Chromebook Flip!': ['Asus', 'Chromebook Flip', DeviceType.DESKTOP], 'Google Chromebook Pixel (2015)': ['Google', 'Chromebook Pixel (2015)', DeviceType.DESKTOP], 'HP Chromebook x360 11 G1 EE': ['Google', 'Chromebook x360 11 G1 EE', DeviceType.DESKTOP], 'Samsung Chromebook 3': ['Samsung', 'Chromebook 3', DeviceType.DESKTOP], @@ -574,6 +579,7 @@ exports.ANDROID_MODELS = { 'B3-A32': ['Acer', 'Iconia One 10 B3-A32', DeviceType.TABLET], 'B3-A40': ['Acer', 'Iconia One 10 B3-A40', DeviceType.TABLET], 'B3-A40FHD': ['Acer', 'Iconia One 10 B3-A40FHD', DeviceType.TABLET], + 'B3-A50FHD': ['Acer', 'Iconia One 10 B3-A50FHD', DeviceType.TABLET], 'One 7 M77GHG': ['Acer', 'Iconia One 7 M77GHG', DeviceType.TABLET], TD070VA1: ['Acer', 'Iconia One 7 TD070VA1', DeviceType.TABLET], @@ -981,6 +987,10 @@ exports.ANDROID_MODELS = { '4055[JU]!': ['Alcatel', 'One Touch Pixi 5 (4)'], '4060[A]!': ['Alcatel', 'IDEAL'], '4060[SW]!': ['Alcatel', 'One Touch Pixi 4 (5)'], + '5001[D]!': ['Alcatel', '1V (2019)'], + '5002[DH]!': ['Alcatel', '1B (2020)'], + '5003[D]!': ['Alcatel', '1C (2019)'], + '5009[D]!': ['Alcatel', '1C'], '5010[DEGSUX]!': ['Alcatel', 'One Touch Pixi 4 (5)'], '5011[A]!': ['Alcatel', 'A3 Plus'], '5012[G]!': ['Alcatel', 'One Touch Pixi 4 (5.5)'], @@ -997,9 +1007,10 @@ exports.ANDROID_MODELS = { 'one ?touch 5021!': ['Alcatel', 'One Touch Soleil'], '5022[DEX]!': ['Alcatel', 'One Touch Pop Star'], '5023[F]!': ['Alcatel', 'One Touch Pixi 4 Plus Power'], - '5024[D]!': ['Alcatel', '1S'], + '5024[DF]!': ['Alcatel', '1S'], '5025[DEGX]!': ['Alcatel', 'One Touch Pop 3'], '5027[B]!': ['Alcatel', 'One Touch Dawn'], + '5030[DF]!': ['Alcatel', '1SE'], '5033[ADJOX]!': ['Alcatel', '1'], '5034[D]!': ['Alcatel', '3L'], 'one ?touch 5035!': ['Alcatel', "One Touch X'Pop"], @@ -1016,12 +1027,13 @@ exports.ANDROID_MODELS = { '5045[ADFGJTXY]!': ['Alcatel', 'One Touch Pixi 4 (5.0)'], '5046[DGIJUY]!': ['Alcatel', 'A3'], '5047[DIUY]!': ['Alcatel', 'U5 HD'], + '5048[UY]!': ['Alcatel', '3X (2019)'], '5049[EGSWZ]!': ['Alcatel', 'A30 Fierce'], 'one ?touch 5050!': ['Alcatel', 'One Touch Pop S3'], '5050[ASYX]!': ['Alcatel', 'One Touch Pop S3'], '5051[ADJMX]!': ['Alcatel', 'One Touch Pop 4 (5.0)'], '5052[DY]!': ['Alcatel', '3'], - '5053[D]!': ['Alcatel', '3 (2019)'], + '5053[DK]!': ['Alcatel', '3 (2019)'], '5054[ADOSTX]!': ['Alcatel', 'One Touch Pixi 3 (5.5)'], '5054[NW]!': ['Alcatel', 'One Touch Fierce XL'], '5056[ADEINUWX]!': ['Alcatel', 'One Touch Pop 4+'], @@ -1030,6 +1042,7 @@ exports.ANDROID_MODELS = { '5058[I]!': ['Alcatel', '3X'], '5059[ADJTXY]!': ['Alcatel', '1X'], '5060[D]!': ['Alcatel', '5V'], + '5061[KU]!': ['Alcatel', '3X'], '5065[ADJNWX]!': ['Alcatel', 'One Touch Pixi 3 (5)'], '5070[DJX]!': ['Alcatel', 'One Touch Pop Star'], '5080[A]!': ['Alcatel', 'Shine Lite'], @@ -1049,6 +1062,7 @@ exports.ANDROID_MODELS = { '6014[DX]!': ['Alcatel', 'One Touch Idol Mini'], 'one ?touch 6016!': ['Alcatel', 'One Touch Idol 2 Mini'], '6016[ADEX]!': ['Alcatel', 'One Touch Idol 2 Mini'], + '6025[D]!': ['Alcatel', '1S (2021)'], 'one ?touch 6030!': ['Alcatel', 'One Touch Idol'], '6031[X]!': ['Alcatel', 'One Touch Idol Ultra'], 'one ?touch 6032!': ['Alcatel', 'One Touch Idol α'], @@ -1070,6 +1084,7 @@ exports.ANDROID_MODELS = { 'one ?touch 6050!': ['Alcatel', 'One Touch Idol 2S'], '6050[AFWY]!': ['Alcatel', 'One Touch Idol 2S'], '6055[ABDHIKPUY]!': ['Alcatel', 'One Touch Idol 4'], + '6056[D]!': ['Alcatel', '3L'], '6058[D]!': ['Alcatel', 'One Touch Idol 5'], '6060[S]!': ['Alcatel', 'One Touch Idol 5s'], '6062[W]!': ['Alcatel', '7'], @@ -1105,6 +1120,10 @@ exports.ANDROID_MODELS = { '8020[D]!': ['Alcatel', 'One Touch Hero'], 'one ?touch 8030!': ['Alcatel', 'One Touch Hero 2'], '8030[BY]!': ['Alcatel', 'One Touch Hero 2'], + '8063': ['Alcatel', 'Pixi 4'], + '8082': ['Alcatel', '1T', DeviceType.TABLET], + '8082 EEA': ['Alcatel', '1T', DeviceType.TABLET], + '8094[X]!': ['Alcatel', '3T 10', DeviceType.TABLET], '9001[DIX]!': ['Alcatel', 'One Touch Pixi 4 (6)'], '9002[AWX]!': ['Alcatel', 'One Touch Pixi 3 (7)', DeviceType.TABLET], '9003[AX]!': ['Alcatel', 'One Touch Pixi 4 (7)', DeviceType.TABLET], @@ -1117,6 +1136,7 @@ exports.ANDROID_MODELS = { '9022[SX]!': ['Alcatel', 'One Touch Pixi 3 (8)', DeviceType.TABLET], '9024[OW]!': ['Alcatel', 'A30', DeviceType.TABLET], '9025[MQ]!': ['Alcatel', 'One Touch Pop 4 (7)', DeviceType.TABLET], + '9026[X]!': ['Alcatel', 'A3 10', DeviceType.TABLET], 'one ?touch T10!': ['Alcatel', 'One Touch T10', DeviceType.TABLET], 'one ?touch T20!': ['Alcatel', 'One Touch T20', DeviceType.TABLET], 'one ?touch T60!': ['Alcatel', 'One Touch T60', DeviceType.TABLET], @@ -1188,6 +1208,7 @@ exports.ANDROID_MODELS = { 'P8 Energy': ['Allview', 'P8 Energy'], 'P8 Energy mini': ['Allview', 'P8 Energy Mini'], 'P8 Energy mini TM': ['Allview', 'P8 Energy Mini'], + 'P9 Energy': ['Allview', 'P9 Energy'], 'ALLVIEW TX1 Quasar': ['Allview', 'TX1 Quasar'], 'V1 Viper': ['Allview', 'V1 Viper'], 'V1 Viper E': ['Allview', 'V1 Viper E'], @@ -1243,6 +1264,7 @@ exports.ANDROID_MODELS = { 'X3 Soul PLUS': ['Allview', 'X3 Soul Plus'], 'X3 Soul PRO': ['Allview', 'X3 Soul Pro'], 'X3 Soul Style': ['Allview', 'X3 Soul Style'], + 'X5 Soul Pro': ['Allview', 'X5 Soul Pro'], '(Allview|Alldro)!!': { 'Allview AX1 Shine': ['Allview', 'AX1 Shine', DeviceType.TABLET], @@ -1323,6 +1345,7 @@ exports.ANDROID_MODELS = { KFDOWI: ['Amazon', 'Fire HD 8 (2017)', DeviceType.TABLET, Flag.FIREOS], // xth generation 8" HD (1280 x 800) KFSUWI: ['Amazon', 'Fire HD 10 (2017)', DeviceType.TABLET, Flag.FIREOS], // 5th generation 10" HD (1280 x 800) KFMAWI: ['Amazon', 'Fire HD 8 (2018)', DeviceType.TABLET, Flag.FIREOS], + KFKAWI: ['Amazon', 'Fire HD 8 (2018)', DeviceType.TABLET, Flag.FIREOS], KFMUWI: ['Amazon', 'Fire 7 (2019)', DeviceType.TABLET, Flag.FIREOS], SD4930UR: ['Amazon', 'Fire Phone', DeviceType.MOBILE, Flag.FIREOS], AFTB: ['Amazon', 'Fire TV', DeviceType.TELEVISION, Flag.FIREOS], @@ -1589,6 +1612,7 @@ exports.ANDROID_MODELS = { 'Archos 70 Oxygen': ['Archos', '70 Oxygen', DeviceType.TABLET], 'Archos 80 Oxygen': ['Archos', '80 Oxygen', DeviceType.TABLET], 'Archos 101 Oxygen': ['Archos', '101 Oxygen', DeviceType.TABLET], + 'Archos 101 Oxygen 4G': ['Archos', '101 Oxygen', DeviceType.TABLET], 'Archos 101b Oxygen': ['Archos', '101b Oxygen', DeviceType.TABLET], 'Archos 133 Oxygen': ['Archos', '133 Oxygen', DeviceType.TABLET], 'Archos 156 Oxygen': ['Archos', '156 Oxygen', DeviceType.TABLET], @@ -1683,13 +1707,18 @@ exports.ANDROID_MODELS = { 'Archos Access 101 3G V2': ['Archos', 'Access 101', DeviceType.TABLET], 'Archos Core 50 4G': ['Archos', 'Core 50'], 'Archos Core 55 4G': ['Archos', 'Core 55'], + 'Archos Core 57S': ['Archos', 'Core 57S'], 'Archos Core 70 3G': ['Archos', 'Core 70', DeviceType.TABLET], 'ARCHOS Core 101 Wifi': ['Archos', 'Core 101', DeviceType.TABLET], 'Archos Core 101 3G': ['Archos', 'Core 101', DeviceType.TABLET], + 'Archos Oxygen 63': ['Archos', 'Oxygen 63'], + 'Archos Saphir 50X': ['Archos', 'Saphir 50X'], 'Archos Sense 55 DC': ['Archos', 'Sense 55'], 'Archos Sense 55 S': ['Archos', 'Sense 55'] }, + 'X67 5G': ['Archos', 'X67 5G'], + 'Artes D708': ['Artes', 'D708', DeviceType.TABLET], 'Artes D821': ['Artes', 'D821', DeviceType.TABLET], D9702: ['Artes', 'D9702', DeviceType.TABLET], @@ -1774,6 +1803,17 @@ exports.ANDROID_MODELS = { 'PadFone X': ['Asus', 'PadFone X', DeviceType.TABLET], 'PadFone X mini': ['Asus', 'PadFone X mini (PF450CL)', DeviceType.TABLET], ETBW11AA: ['Asus', 'Tough'], + I01WDX: ['Asus', 'ZenFone 8'], + I001DC: ['Asus', 'ROG Phone 2'], + I001DE: ['Asus', 'ROG Phone 2'], + I002D: ['Asus', 'ZenFone 7'], + I003D: ['Asus', 'ROG Phone 3'], + I003DD: ['Asus', 'ROG Phone 3'], + I004D: ['Asus', 'ZenFone 8 Flip'], + I005D: ['Asus', 'ROG Phone 5 Pro'], + I005DA: ['Asus', 'ROG Phone 5 Pro'], + I006D: ['Asus', 'ZenFone 8 Mini'], + I01WD: ['Asus', 'ZenFone 6 (ZS630KL)'], K00C: ['Asus', 'Transformer Pad Infinity', DeviceType.TABLET], K010: ['Asus', 'Transformer Pad TF103', DeviceType.TABLET], K010E: ['Asus', 'Transformer Pad TF103', DeviceType.TABLET], @@ -1831,6 +1871,7 @@ exports.ANDROID_MODELS = { P001: ['Asus', 'ZenPad C 7.0 (Z170MG)', DeviceType.TABLET], 'P001 2': ['Asus', 'ZenPad C 7.0 (Z170MG)', DeviceType.TABLET], P002: ['Asus', 'ZenPad 7.0 (Z370KL)', DeviceType.TABLET], + P00A: ['Asus', 'ZenPad 8.0 (Z380M)', DeviceType.TABLET], P00C: ['Asus', 'ZenPad 10 (Z300M)', DeviceType.TABLET], P00I: ['Asus', 'ZenPad Z10 (Z500KL)', DeviceType.TABLET], P01M: ['Asus', 'ZenPad S 8.0 (Z580C)', DeviceType.TABLET], @@ -1845,8 +1886,11 @@ exports.ANDROID_MODELS = { P022: ['Asus', 'ZenPad 8.0 (Z380C)', DeviceType.TABLET], P023: ['Asus', 'ZenPad 10 (Z300C)', DeviceType.TABLET], P024: ['Asus', 'ZenPad 8.0 (Z380KL)', DeviceType.TABLET], + P027: ['Asus', 'ZenPad 3S 10 (Z500M)', DeviceType.TABLET], + P028: ['Asus', 'ZenPad 10 (Z301M)', DeviceType.TABLET], // '' : [ 'Asus', 'ZenPad 10 (Z300CNL)', DeviceType.TABLET ], A001: ['Asus', 'ZenFone 3 Ultra (ZU680KL)'], + A007: ['Asus', 'ZenFone Live (ZB501KL)'], X007D: ['Asus', 'ZenFone Go (ZB552KL)'], X008D: ['Asus', 'ZenFone 3 Max (ZC520TL)'], X008DA: ['Asus', 'ZenFone 3 Max (ZC520TL)'], @@ -1865,6 +1909,15 @@ exports.ANDROID_MODELS = { X00DDB: ['Asus', 'ZenFone 3 Max (ZC553KL)'], X00HD: ['Asus', 'ZenFone 4 Max (ZC520KL)'], X00GD: ['Asus', 'ZenFone 3S Max (ZC521TL)'], + X00LD: ['Asus', 'ZenFone 4 Selfie (ZD553KL)'], + X00T: ['Asus', 'ZenFone Max Pro M1 (ZB601KL)'], + X00TD: ['Asus', 'ZenFone Max Pro M1 (ZB601KL)'], + X00TDB: ['Asus', 'ZenFone Max Pro M1 (ZB601KL)'], + X00DE: ['Asus', 'ZenFone Max Pro M1 (ZB601KL)'], + X00QD: ['Asus', 'ZenFone 5 (ZE620KL)'], + X00QSA: ['Asus', 'ZenFone 5 (ZE620KL)'], + X01AD: ['Asus', 'ZenFone Max M2 (ZB633KL)'], + X01BDA: ['Asus', 'ZenFone Max Pro M2 (ZB631KL)'], X013D: ['Asus', 'ZenFone Go (ZB551KL)'], X013DA: ['Asus', 'ZenFone Go (ZB551KL)'], X013DB: ['Asus', 'ZenFone Go (ZB551KL)'], @@ -1873,7 +1926,9 @@ exports.ANDROID_MODELS = { X013DB: ['Asus', 'ZenFone Go TV (ZB551KL)'], X013DC: ['Asus', 'ZenFone Go (ZB551KL)'], ZB551KL: ['Asus', 'ZenFone Go (ZB551KL)'], + X00ID: ['Asus', 'ZenFone 4 Max (ZC554KL)'], X014D: ['Asus', 'ZenFone Go (ZB452KG)'], + X018D: ['Asus', 'ZenFone Max Plus M1 (ZB570TL)'], Z002: ['Asus', 'ZenFone 6 (A601CG)'], Z007: ['Asus', 'ZenFone C (ZC451CG)'], 'ZenFone 2': ['Asus', 'ZenFone 2 (ZE550ML)'], @@ -1935,7 +1990,10 @@ exports.ANDROID_MODELS = { Z01HDA: ['Asus', 'ZenFone 3 Zoom (ZE553KL)'], Z01KD: ['Asus', 'ZenFone 4 (ZE554KL)'], Z01KDA: ['Asus', 'ZenFone 4 (ZE554KL)'], + Z01MD: ['Asus', 'ZenFone 4 Selfie Pro (ZD552KL)'], Z01MDA: ['Asus', 'ZenFone 4 Selfie Pro (ZD552KL)'], + Z01RD: ['Asus', 'ZenFone 5z (ZS620KL)'], + Z01QD: ['Asus', 'ROG Phone'], ZB500KG: ['Asus', 'ZenFone Go (ZB500KG)'], ZB500KL: ['Asus', 'ZenFone Go (ZB500KL)'], @@ -1948,6 +2006,7 @@ exports.ANDROID_MODELS = { ZE552KL: ['Asus', 'ZenFone 3 (ZE552KL)'], ZE553KL: ['Asus', 'ZenFone 3 Zoom (ZE553KL)'], ZE554KL: ['Asus', 'ZenFone 4 (ZE554KL)'], + ZS671KS: ['Asus', 'ZenFone 7 Pro (ZS671KS)'], Z00YD: ['Asus', 'Live'], X002: ['Asus', 'Pegasus'], @@ -2241,7 +2300,24 @@ exports.ANDROID_MODELS = { 'BBE100-[0-9]!': ['BlackBerry', '"BBE100"'], 'BBF100-[0-9]!': ['BlackBerry', 'KEY2'], + A80Plus: ['Blackview', 'A80 Plus'], + A80Pro: ['Blackview', 'A80 Pro'], + BL6000Pro: ['Blackview', 'BL6000 Pro'], + BV4900Pro: ['Blackview', 'BV4900 Pro'], + BV5500Plus: ['Blackview', 'BV5500 Plus'], + BV5900: ['Blackview', 'BV5900'], + BV6300Pro: ['Blackview', 'BV6300 Pro'], + BV6600: ['Blackview', 'BV6600'], + BV6900: ['Blackview', 'BV6900'], BV8000Pro: ['Blackview', 'BV8000 Pro'], + BV9100: ['Blackview', 'BV9100'], + BV9500: ['Blackview', 'BV9500'], + BV9500Plus: ['Blackview', 'BV9500 Plus'], + BV9600E: ['Blackview', 'BV9600E'], + BV9600Pro: ['Blackview', 'BV9600 Pro'], + BV9800Pro: ['Blackview', 'BV9800 Pro'], + BV9900E: ['Blackview', 'BV9900E'], + BV9900Pro: ['Blackview', 'BV9900 Pro'], P2Lite: ['Blackview', 'P2 Lite'], 'Endeavour!!': { @@ -2414,7 +2490,8 @@ exports.ANDROID_MODELS = { 'BLU VIVO AIR LTE': ['BLU', 'Vivo Air'], 'BLU VIVO SELFIE': ['BLU', 'Vivo Selfie'], 'VIVO XL': ['BLU', 'Vivo XL'], - 'Vivo XL2': ['BLU', 'Vivo XL2'] + 'Vivo XL2': ['BLU', 'Vivo XL2'], + 'Vivo XI PLUS': ['BLU', 'Vivo XI+'] }, 'R1 HD': ['BLU', 'R1 HD'], @@ -2585,6 +2662,7 @@ exports.ANDROID_MODELS = { 'Aquaris U Lite': ['bq', 'Aquaris U Lite'], 'Aquaris U Plus': ['bq', 'Aquaris U Plus'], 'Aquaris X': ['bq', 'Aquaris X'], + 'Aquaris X2': ['bq', 'Aquaris X2'], 'Aquaris X5': ['bq', 'Aquaris X5'], 'Aquaris X5 Plus': ['bq', 'Aquaris X5 Plus'], 'bq Curie': ['bq', 'Curie', DeviceType.TABLET], @@ -2637,6 +2715,8 @@ exports.ANDROID_MODELS = { 'Bush Mytablet 2': ['Bush', 'MyTablet 2', DeviceType.TABLET] }, + 'Carbon 1 Mark II': ['Carbon', '1 MK II'], + 'CT[0-9]{3,4}!!': { CT700: ['Carrefour', 'Touch Tablet CT700', DeviceType.TABLET], CT701: ['Carrefour', 'Touch Tablet CT701', DeviceType.TABLET], @@ -2698,9 +2778,15 @@ exports.ANDROID_MODELS = { B15: ['CAT', 'B15'], B15Q: ['CAT', 'B15Q'], S30: ['CAT', 'S30'], + S31: ['CAT', 'S31'], S40: ['CAT', 'S40'], + S41: ['CAT', 'S41'], + S42: ['CAT', 'S42'], S50: ['CAT', 'S50'], S50c: ['CAT', 'S50c'], + S52: ['CAT', 'S52'], + S61: ['CAT', 'S61'], + 'S62 Pro': ['CAT', 'S62 Pro'], 'CAT!!': { 'Cat Comet': ['CAT', 'COMET', DeviceType.TABLET], @@ -3434,6 +3520,11 @@ exports.ANDROID_MODELS = { 'CROSSCALL WILD': ['Crosscall', 'WILD'] }, + 'Core-M5': ['Crosscall', 'Core-M5'], + 'Action-X3': ['Crosscall', 'Action-X3'], + 'TREKKER-X3': ['Crosscall', 'Trekker-X3'], + 'Trekker-X4': ['Crosscall', 'Trekker-X4'], + 'Novapad!!': { 'Novapad 70 D124 FC': ['Crypto', 'NovaPad 70 D124', DeviceType.TABLET], 'Novapad 70 S124 FC': ['Crypto', 'NovaPad 70 S124', DeviceType.TABLET], @@ -3456,13 +3547,18 @@ exports.ANDROID_MODELS = { 'CUBOT ONE-S': ['Cubot', 'One S'], 'CUBOT P7': ['Cubot', 'P7'], 'CUBOT P9': ['Cubot', 'P9'], + 'CUBOT P20': ['Cubot', 'P20'], 'CUBOT S108': ['Cubot', 'S108'], 'CUBOT S222': ['Cubot', 'S222'], - 'CUBOT X6': ['Cubot', 'X6'] + 'CUBOT X6': ['Cubot', 'X6'], + 'CUBOT X18 Plus': ['Cubot', 'X18 Plus'], + 'CUBOT POWER': ['Cubot', 'Power'] }, S222: ['Cubot', 'S222'], S308: ['Cubot', 'S308'], + 'KINGKONG 5 Pro': ['Cubot', 'King Kong 5 Pro'], + 'KINGKONG MINI2': ['Cubot', 'King Kong Mini 2'], '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!': { 'CUBE K8GT': ['Cube', 'K8GT', DeviceType.TABLET], @@ -3587,6 +3683,7 @@ exports.ANDROID_MODELS = { }, 'Cydle M7!': ['Cydle', 'M7 MultiPAD', DeviceType.TABLET], + CS45XA: ['Cyrus', 'CS45XA'], EVDO1000: ['Cyrus', 'EVDO 1000'], GloryG1000: ['Cyrus', 'Glory G1000'], 'TVPAD Slim K3409': ['Cyrus', 'TVPad Slim K3409', DeviceType.TABLET], @@ -3710,6 +3807,7 @@ exports.ANDROID_MODELS = { 'Dell XCD35': ['Dell', 'XCD35'], XCD35: ['Dell', 'XCD35'], DEM752HCF: ['Denver', 'TAC-7018', DeviceType.TABLET], + 'TIQ-1049': ['Denver', 'TIQ-1049', DeviceType.TABLET], '(DENVER-)?TA[CD]-[0-9]{4,5}!!': { 'TAC-7028': ['Denver', 'TAC-7028', DeviceType.TABLET], @@ -3931,6 +4029,11 @@ exports.ANDROID_MODELS = { 'Discovery2-DG500C': ['Doogee', 'Discovery 2 DG500C'], 'DG750 Iron Bone': ['Doogee', 'Iron Bone DG750'], 'TURBO DG2014': ['Doogee', 'Turbo DG2014'], + S58Pro: ['Doogee', 'S58 Pro'], + S68Pro: ['Doogee', 'S68 Pro'], + S70Lite: ['Doogee', 'S70 Lite'], + S88Pro: ['Doogee', 'S88 Pro'], + S96Pro: ['Doogee', 'S96 Pro'], 'DOOV!!': { 'DOOV C1': ['DOOV', 'C1'], @@ -3981,9 +4084,12 @@ exports.ANDROID_MODELS = { }, 'Doro 8030': ['Doro', 'Liberto 822'], + 'Doro 8040': ['Doro', '8040'], 'Doro 824': ['Doro', 'Liberto 824'], '825 T-Mobile': ['Doro', 'Liberto 825'], 'Doro PhoneEasy 745': ['Doro', 'PhoneEasy 745'], + 'DSB-0220': ['Doro', '8080'], + 'DSB-0230': ['Doro', '8050'], M975: ['Double Power', 'M975', DeviceType.TABLET], 'TD-1010': ['Double Power', 'TD-1010', DeviceType.TABLET], 'Tablet-P27': ['DracoTek', 'P27 Tablet', DeviceType.TABLET], @@ -4216,6 +4322,9 @@ exports.ANDROID_MODELS = { E8051HD: ['Evertek', 'Everpad E8051HD', DeviceType.TABLET] }, + 'EVOLVEO StrongPhone G7': ['EVOLVEO', 'StrongPhone G7'], + 'EVOLVEO StrongPhone G9': ['EVOLVEO', 'StrongPhone G9'], + P10AN: ['Exper', 'Easypad P10AN', DeviceType.TABLET], '(Explay|X-tremer|ActiveD|Informer|Surfer)!!': { @@ -4272,6 +4381,8 @@ exports.ANDROID_MODELS = { FP1: ['Fairphone', '1'], FP1U: ['Fairphone', '1'], FP2: ['Fairphone', '2'], + FP3: ['Fairphone', '3'], + FP4: ['Fairphone', '4'], 'FDT!!': { 'FDT C838': ['FDT', 'C838'], @@ -4716,6 +4827,19 @@ exports.ANDROID_MODELS = { 'Gigaset QV1030': ['Gigaset', 'QV1030', DeviceType.TABLET] }, + GS110: ['Gigaset', 'GS110'], + GS185: ['Gigaset', 'GS185'], + GS190: ['Gigaset', 'GS190'], + GS195: ['Gigaset', 'GS195'], + GS270: ['Gigaset', 'GS270'], + 'GS270 plus': ['Gigaset', 'GS270 Plus'], + GS280: ['Gigaset', 'GS280'], + GS290: ['Gigaset', 'GS290'], + 'GS370 Plus': ['Gigaset', 'GS370 Plus'], + 'E940-2795-00': ['Gigaset', 'GS4'], + 'E940-2796-00': ['Gigaset', 'GS4'], + GX290: ['Gigaset', 'GX290'], + '80-1': ['Gigaset', 'Maxwell 10', DeviceType.DECT], SL930: ['Gigaset', 'SL930', DeviceType.DECT], @@ -4971,6 +5095,14 @@ exports.ANDROID_MODELS = { X710d: ['Haipai', 'X710D'], X720D: ['Haipai', 'X720D'], + 'Hammer Blade2 PRO': ['Hammer', 'Blade 2 Pro'], + 'Hammer Blade 3': ['Hammer', 'Blade 3'], + 'Hammer Energy': ['Hammer', 'Energy'], + 'Hammer Energy 2': ['Hammer', 'Energy 2'], + 'Hammer Energy 18x9': ['Hammer', 'Energy 18x9'], + 'Hammer Explorer': ['Hammer', 'Explorer'], + 'Hammer Explorer Pro': ['Hammer', 'Explorer Pro'], + 'SN[0-9]!!': { SN10T1: ['HANNspree', 'HANNSpad SN10T1', DeviceType.TABLET], SN10T2: ['HANNspree', 'HANNSpad SN10T2', DeviceType.TABLET], @@ -5200,7 +5332,9 @@ exports.ANDROID_MODELS = { 'Hisense HS-E910': ['Hisense', 'E910'], 'Hisense EG909': ['Hisense', 'EG909'], 'HS-Hisense F20T': ['Hisense', 'F20T'], + 'Hisense F24': ['Hisense', 'F24'], 'Hisense F31': ['Hisense', 'F31'], + 'Hisense Infinity H12': ['Hisense', 'Infinity H12'], 'HS-Hisense I632T': ['Hisense', 'I632T'], 'HS-Hisense I635T': ['Hisense', 'I635T'], 'HS-Hisense I639T': ['Hisense', 'I639T'], @@ -5787,6 +5921,7 @@ exports.ANDROID_MODELS = { 'HTC M9(e|pt|px|u|w)!': ['HTC', 'One (M9)'], 'HTC One M9PLUS': ['HTC', 'One (M9 Plus)'], 'HTC One M9PLUS Prime Camera Edition': ['HTC', 'One (M9 Plus)'], + 'HTC One M9 Prime Camera Edition': ['HTC', 'One (M9 Prime)'], 'HTC M9pw': ['HTC', 'One (M9 Plus)'], 'HTC 0PK71': ['HTC', 'One (M9 Plus)'], 'HTC 0PK72': ['HTC', 'One (M9 Plus)'], @@ -5883,10 +6018,13 @@ exports.ANDROID_MODELS = { 'HTC U-3w': ['HTC', 'U11'], 'HTC U-3u': ['HTC', 'U11'], 'HTC 2PZC100': ['HTC', 'U11'], + 'HTC U11 life': ['HTC', 'U11 Life'], + 'HTC U11 plus': ['HTC', 'U11 Plus'], 'HTC 2Q4D200': ['HTC', 'U11 Plus'], 'HTC 2Q3F2': ['HTC', 'U11 Plus'], 'HTC 2Q3F3': ['HTC', 'U11 Plus'], 'HTC U12+': ['HTC', 'U12+'], + 'HTC U12 life': ['HTC', 'U12 Life'], 'HTC Velocity!': ['HTC', 'Velocity 4G'], 'HTCVelocity 4G': ['HTC', 'Velocity 4G'], 'HTC Vivid': ['HTC', 'Vivid'], @@ -5987,6 +6125,7 @@ exports.ANDROID_MODELS = { 'One V': ['HTC', 'One V'], One: ['HTC', 'One'], 'One M7': ['HTC', 'One'], + 'One Max': ['HTC', 'One Max'], EndeavorU: ['HTC', 'One X'], '2PQ93': ['HTC', 'One (A9)'], m8wl: ['HTC', 'One (M8)'], @@ -6191,19 +6330,24 @@ exports.ANDROID_MODELS = { 'BGO-(DL09|L03)!': ['Huawei', 'MediaPad T2', DeviceType.TABLET], 'KOB-(L09|W09)!': ['Huawei', 'MediaPad T3', DeviceType.TABLET], 'AGS-(L09|W09)!': ['Huawei', 'MediaPad T3', DeviceType.TABLET], - 'BG2-(U01)!': ['Huawei', 'MediaPad T3', DeviceType.TABLET], + 'BG2-(U01|W09)!': ['Huawei', 'MediaPad T3', DeviceType.TABLET], + 'AGS2-(L09|W09)!': ['Huawei', 'MediaPad T5', DeviceType.TABLET], + 'KOB2-(W09)!': ['Huawei', 'MediaPad T8', DeviceType.TABLET], 'BTV-(DL09|W09)!': ['Huawei', 'MediaPad M3', DeviceType.TABLET], 'CPN-(W09|AL00|L09)!': ['Huawei', 'MediaPad M3 Lite', DeviceType.TABLET], 'BAH-(W09|AL00|L09)!': ['Huawei', 'MediaPad M3 Lite', DeviceType.TABLET], + 'SHT-W09': ['Huawei', 'MediaPad M5', DeviceType.TABLET], 'CMR-(AL09|AL19|W09|W19)!': ['Huawei', 'MediaPad M5', DeviceType.TABLET], 'BAH2-(AL10|L09|W09|W19)!': ['Huawei', 'MediaPad M5 Lite', DeviceType.TABLET], 'SCM-(AL09|W09)!': ['Huawei', 'MediaPad M6', DeviceType.TABLET], + 'BAH3-(W09)!': ['Huawei', 'MatePad 10.4', DeviceType.TABLET], + 'JDN-W09': ['Huawei', 'Honor Pad 2', DeviceType.TABLET], 'JDN2-AL00HN': ['Huawei', 'Honor Tab 5', DeviceType.TABLET], 'JDN2-W09HN': ['Huawei', 'Honor Tab 5', DeviceType.TABLET], - '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NXT|SNE|TAS|Z100)!!': { + '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!': { '(HW-|HUAWEI )?MT1-(T00|U06)!': ['Huawei', 'Ascend Mate'], '(HW-|HUAWEI )?MATE-U06!': ['Huawei', 'Ascend Mate'], '(HW-|HUAWEI )?MT2-?(C00|L01|L02|L03|L05)!': ['Huawei', 'Ascend Mate 2'], @@ -6221,24 +6365,26 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?LYA-(AL00|AL00P|AL10|L09|L0C|L29|TL00)!': ['Huawei', 'Mate 20 Pro'], '(HW-|HUAWEI )?TAS-(AL00)!': ['Huawei', 'Mate 30'], '(HW-|HUAWEI )?LIO-(AL00|AN00|L29)!': ['Huawei', 'Mate 30 Pro'], + '(HW-|HUAWEI )?NOH-(NX9)!': ['Huawei', 'Mate 40'], '(HW-|HUAWEI )?CRR-(L09|CL00|CL20|TL00|UL00|UL20)!': ['Huawei', 'Mate S'] }, - '(HW-|HUAWEI )?(ATU|DRA|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!': { + '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!': { '(HW-|HUAWEI )?TIT-(AL00|CL00|CL10|L01|TL00|U02)!': ['Huawei', 'Enjoy 5'], '(HW-|HUAWEI )?TAG-(AL00|CL00|L13|TL00)!': ['Huawei', 'Enjoy 5S'], '(HW-|HUAWEI )?NCE-(AL00|AL10|TL10)!': ['Huawei', 'Enjoy 6'], '(HW-|HUAWEI )?SLA-(AL00|L02|L03|L22|TL10)!': ['Huawei', 'Enjoy 7'], '(HW-|HUAWEI )?TRT-(AL00|L21|L53|LX1|LX2|LX3|TL10)!': ['Huawei', 'Enjoy 7 Plus'], '(HW-|HUAWEI )?FLA-(AL10|AL20|LX1|LX2|LX3|TL10)!': ['Huawei', 'Enjoy 8 Plus'], - '(HW-|HUAWEI )?DRA-(AL00|L01|L21|LX2)!': ['Huawei', 'Enjoy 8e'], + '(HW-|HUAWEI )?DRA-(AL00|L01|L21|LX2|LX9)!': ['Huawei', 'Enjoy 8e'], '(HW-|HUAWEI )?ATU-(AL10|L11|L21|L22|L31|LX3|TL10)!': ['Huawei', 'Enjoy 8e'], '(HW-|HUAWEI )?POT-(AL00a|LX1|LX1AF|LX1T|LX2J|LX3)!': ['Huawei', 'Enjoy 9S'], '(HW-|HUAWEI )?MRD-(AL00|LX1|LX1F|LX1N|LX2|LX3)!': ['Huawei', 'Enjoy 9e'], - '(HW-|HUAWEI )?JKM-(AL00|AL00a|AL00b|LX1|LX2|LX3|TL00)!': ['Huawei', 'Enjoy 9 Plus'] + '(HW-|HUAWEI )?JKM-(AL00|AL00a|AL00b|LX1|LX2|LX3|TL00)!': ['Huawei', 'Enjoy 9 Plus'], + '(HW-|HUAWEI )?DVC-(AN20)!': ['Huawei', 'Enjoy 20 Pro'] }, - '(HW-|HUAWEI |HONOR )?(ATH|BLN|BKL|BKK|BND|CHE|CHM|COL|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|JMM|JSN|LRA|KIW|LLD|NEM|NMO|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!': { + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!': { 'H30 U10': ['Huawei', 'Honor 3C'], '(HW-|HUAWEI )?HN3-(U00|U01)!': ['Huawei', 'Honor 3'], '(HW-|HUAWEI |HONOR )?H30[- ](C00|L01|L02|T00|T10|U10)!': ['Huawei', 'Honor 3C'], @@ -6260,11 +6406,14 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?PE-(CL00|TL00|TL00M|TL10|TL20|UL00)!': ['Huawei', 'Honor 6 Plus'], '(HW-|HUAWEI |HONOR )?PLK-(L01|AL10|CL00|UL00|TL00|TL01H)!': ['Huawei', 'Honor 7'], '(HW-|HUAWEI )?ATH-(AL00|CL00|TL00|TL00H|UL00)!': ['Huawei', 'Honor 7i'], + '(HW-|HUAWEI )?AUM-(L29)!': ['Huawei', 'Honor 7A'], '(HW-|HUAWEI )?DUA-(L22)!': ['Huawei', 'Honor 7S'], '(HW-|HUAWEI )?BND-(AL00|AL10|L21|L24|L31|L34|TL10)!': ['Huawei', 'Honor 7X'], '(HW-|HUAWEI )?DUA-(AL00|TL00)!': ['Huawei', 'Honor 7 Play'], '(HW-|HUAWEI )?FRD-(AL00|AL10|DL00|L02|L04|L09|L14|L19)!': ['Huawei', 'Honor 8'], + '(HW-|HUAWEI )?JAT-(L29|L41|LX1|LX3)!': ['Huawei', 'Honor 8A Pro'], '(HW-|HUAWEI )?BKK-(AL00|AL10|L21|LX2)!': ['Huawei', 'Honor 8C'], + '(HW-|HUAWEI )?KSA-(LX9)!': ['Huawei', 'Honor 8S'], '(HW-|HUAWEI )?JSN-(AL00|AL00a|L21|L22|L23|L42|TL00)!': ['Huawei', 'Honor 8X'], '(HW-|HUAWEI )?ATH-(UL01|UL06)!': ['Huawei', 'Honor ShotX'], '(HW-|HUAWEI )?KNT-(AL10|AL20|TL10|UL10)!': ['Huawei', 'Honor V8'], @@ -6274,14 +6423,18 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?RNE-(AL00|L01|L02|L03|L21|L22|L23|L31)!': ['Huawei', 'Honor 9i'], '(HW-|HUAWEI )?HLK-(AL00|AL10)!': ['Huawei', 'Honor 9X'], '(HW-|HUAWEI )?COL-(AL00|AL10|L29|TL00|TL10)!': ['Huawei', 'Honor 10'], + '(HW-|HUAWEI )?HRY-(LX1)!': ['Huawei', 'Honor 10 Lite'], '(HW-|HUAWEI )?YAL-(AL00|AL10|L21|L41)!': ['Huawei', 'Honor 20'], '(HW-|HUAWEI )?LRA-(AL00)!': ['Huawei', 'Honor 20 Lite'], + '(HW-|HUAWEI )?NTH-(NX9)!': ['Huawei', 'Honor 50'], + '(HW-|HUAWEI )?NTN-(LX1)!': ['Huawei', 'Honor 50 Lite'], '(HW-|HUAWEI )?DUK-(AL20|L09|TL30)!': ['Huawei', 'Honor V9'], '(HW-|HUAWEI )?JMM-(AL00|AL10|L22|L22HN|TL00)!': ['Huawei', 'Honor V9 Play'], '(HW-|HUAWEI )?BKL-(AL00|AL20|L04|L09)!': ['Huawei', 'Honor V10'], '(HW-|HUAWEI )?PCT-(AL10|L29|TL10)!': ['Huawei', 'Honor V20'], '(HW-|HUAWEI )?OXF-(AN10)!': ['Huawei', 'Honor V30 Pro'], '(HW-|HUAWEI )?TNY-(AL00)!': ['Huawei', 'Honor Magic 2'], + '(HW-|HUAWEI )?COR-(AL10|L29)!': ['Huawei', 'Honor Play'], '(HW-|HUAWEI )?HDN-(L09|W09)!': ['Huawei', 'Honor WaterPlay', DeviceType.TABLET] }, @@ -6292,7 +6445,7 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?BLL-(L21|L22|L23)!': ['Huawei', 'GR5 (2017)'] }, - '(HW-|HUAWEI )?(ALE|ANE|CLT|D2|DAV|ELE|EML|EVA|FIG|G6|G7|GRA|M100|P2|P6|P7|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!': { + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!': { 'HUAWEI D2': ['Huawei', 'Ascend D2'], '(HW-|HUAWEI )?D2-(0082|2010|5000|6070|6114)!': ['Huawei', 'Ascend D2'], '(HW-|HUAWEI )?G6-(C00|L11|L22|L33|T00|U00|U10|U34|U251)!': ['Huawei', 'Ascend G6'], @@ -6317,33 +6470,45 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?WAS-?(AL00|L03T|LX1|LX1A|LX2|LX2J|LX3|TL10)!': ['Huawei', 'P10 Lite'], '(HW-|HUAWEI )?VKY-?(AL00|L09|L29|TL00)!': ['Huawei', 'P10 Plus'], '(HW-|HUAWEI )?FIG-?(AL00|AL10|LA1|LX1|LX3|TL00)!': ['Huawei', 'P Smart'], - '(HW-|HUAWEI )?STK-?(L22|LX1|LX3)!': ['Huawei', 'P Smart Z'], + '(HW-|HUAWEI )?STK-?(L21|L22|LX1|LX3)!': ['Huawei', 'P Smart Z'], + '(HW-|HUAWEI )?PPA-?(LX1|LX2)!': ['Huawei', 'P Smart (2021)'], '(HW-|HUAWEI )?EML-?(AL00|L09|L29|TL00)!': ['Huawei', 'P20'], '(HW-|HUAWEI )?ANE-?(AL00|L21|LX1|LX2|LX2J|LX3)!': ['Huawei', 'P20 Lite'], '(HW-|HUAWEI )?CLT-?(AL00|AL01|L04|L09|L29|L39|TL00|TL01)!': ['Huawei', 'P20 Pro'], '(HW-|HUAWEI )?ELE-?(AL00|L04|L09|L29|TL00)!': ['Huawei', 'P30'], - '(HW-|HUAWEI )?VOG-?(AL00|AL10|L04|L09|L29|TL00)!': ['Huawei', 'P30 Pro'] + '(HW-|HUAWEI )?VOG-?(AL00|AL10|L04|L09|L29|TL00)!': ['Huawei', 'P30 Pro'], + '(HW-|HUAWEI )?MAR-?(LX1B)!': ['Huawei', 'P30 Lite'], + '(HW-|HUAWEI )?ANA-?(NX9)!': ['Huawei', 'P40'], + '(HW-|HUAWEI )?JNY-?(LX1)!': ['Huawei', 'P40 Lite'], + '(HW-|HUAWEI )?CDY-?(NX9A)!': ['Huawei', 'P40 Lite'], + '(HW-|HUAWEI )?ELS-?(N39|NX9)!': ['Huawei', 'P40 Pro'] }, 'Rock-(AL00|CL00|L01|L03)!': ['Huawei', 'Ascend G7'], 'HUAWEI A168-(AL10|DL09|L09|L29)!': ['Huawei', 'P9'], - '(HW-|HUAWEI )?(CRO|LUA|CUN|SCC|SCU|CAM|LDN|LYO|MYA)!!': { + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!': { '(HW-|HUAWEI )?CRO-(L02|L03|L22|U00)!': ['Huawei', 'Y3 (2017)'], '(HW-|HUAWEI )?LUA-(L01|L02|L03|L13|L21|L22|L23|U02|U03|U22|U23)!': ['Huawei', 'Y3 II'], '(HW-|HUAWEI )?CUN-(AL00|L01|L02|L03|L21|L22|L23|L33|TL00|U29)!': ['Huawei', 'Y5 II'], '(HW-|HUAWEI )?MYA-(AL10|L02|L03|L11|L13|L22|L23|L41|TL10)!': ['Huawei', 'Y5 (2017)'], + '(HW-|HUAWEI )?AMN-(LX2|LX9)!': ['Huawei', 'Y5 (2019)'], '(HW-|HUAWEI )?SCC-(U21)!': ['Huawei', 'Y6'], '(HW-|HUAWEI )?SCU-(U31)!': ['Huawei', 'Y6C'], '(HW-|HUAWEI )?CAM-(L01|L03|L11|L21|L23|L32|AL00|CL00|TL00|UL00)!': ['Huawei', 'Y6 II'], '(HW-|HUAWEI )?LYO-(L01|L02|L21)!': ['Huawei', 'Y6 II Compact'], - '(HW-|HUAWEI )?LDN-(AL00|L01|L21|LX2|LX3|TL00)!': ['Huawei', 'Y7 Prime (2018)'] + '(HW-|HUAWEI )?MED-(LX9N)!': ['Huawei', 'Y6p'], + '(HW-|HUAWEI )?LDN-(AL00|L01|L21|LX2|LX3|TL00)!': ['Huawei', 'Y7 Prime (2018)'], + '(HW-|HUAWEI )?DUB-(AL20|LX1|LX3)!': ['Huawei', 'Y7 Prime (2019)'], + '(HW-|HUAWEI )?ART-(L29)!': ['Huawei', 'Y7p'], + '(HW-|HUAWEI )?AQM-(LX1)!': ['Huawei', 'Y8p'] }, '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!': ['Huawei', 'Nova'], '(HW-|HUAWEI )?CAN-(L01|L11|L12)!': ['Huawei', 'Nova'], '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!': ['Huawei', 'Nova Plus'], '(HW-|HUAWEI )?DIG-(AL00|L01|L03|L21|TL10)!': ['Huawei', 'Nova Smart'], + '(HW-|HUAWEI )?PIC-(LX9)!': ['Huawei', 'Nova 2'], '(HW-|HUAWEI )?BAC-(AL00|L03|L21|L22|TL00)!': ['Huawei', 'Nova 2 Plus'], '(HW-|HUAWEI )?HWI-(AL00|TL00)!': ['Huawei', 'Nova 2S'], '(HW-|HUAWEI )?PAR-(AL00|LX1|LX1M|LX9|TL00)!': ['Huawei', 'Nova 3'], @@ -6775,6 +6940,7 @@ exports.ANDROID_MODELS = { 'Ultra Wave': ['Hyundai', 'Ultra Wave'], 'A7 HD': ['Hyundai', 'A7 HD', DeviceType.TABLET], MW1031: ['Hyundai', 'MW1031', DeviceType.TABLET], + IS530: ['I.safe', 'IS530.0'], 'Elektra L': ['i-Joy', 'Elektra L'], 'Elektra XL': ['i-Joy', 'Elektra XL'], 'i-Joy i-Call': ['i-Joy', 'i-Call'], @@ -7137,6 +7303,8 @@ exports.ANDROID_MODELS = { 'Infinix X1000': ['Infinix', 'Joypad 10 X1000', DeviceType.TABLET] }, + 'S5 Pro': ['Infinix', 'S5 Pro'], + 'IN[0-9]{3,3}!!': { IN260: ['InFocus', 'IN260'], IN330: ['InFocus', 'IN330'], @@ -7502,6 +7670,7 @@ exports.ANDROID_MODELS = { 'IVIO DE38': ['Ivio', 'DE38'] }, + 'MC401 GWL': ['iWaylink', 'MC401'], 'iwoo i900': ['iwoo', 'i900'], '(JIAYU|JY)!!': { @@ -8088,6 +8257,9 @@ exports.ANDROID_MODELS = { W810: ['K-Touch', 'W810'], W880: ['K-Touch', 'W880'], + 'Land Rover Explore': ['Land Rover', 'Explore'], + 'Land Rover Explore R': ['Land Rover', 'Explore R'], + '(Lanix )?(Ilium|llium)!!': { 'ILIUM L400': ['Lanix', 'Ilium L400'], 'Ilium L820': ['Lanix', 'Ilium L820'], @@ -8432,7 +8604,9 @@ exports.ANDROID_MODELS = { 'Lenovo YT3-X50F': ['Lenovo', 'Yoga Tablet 3', DeviceType.TABLET], 'Lenovo YT3-X50L': ['Lenovo', 'Yoga Tablet 3', DeviceType.TABLET], 'Lenovo YT3-850F': ['Lenovo', 'Yoga Tablet 3', DeviceType.TABLET], + 'Lenovo YT-J706F': ['Lenovo', 'Yoga Tab 11', DeviceType.TABLET], 'Lenovo YT-X703F': ['Lenovo', 'Yoga Tablet 3 Plus', DeviceType.TABLET], + 'Lenovo YT-X705F': ['Lenovo', 'Yoga Smart Tab', DeviceType.TABLET], 'Lenovo YT3-X90F': ['Lenovo', 'Yoga Tablet 3 Pro', DeviceType.TABLET], 'Lenovo YT3-X90L': ['Lenovo', 'Yoga Tablet 3 Pro', DeviceType.TABLET], @@ -8451,6 +8625,28 @@ exports.ANDROID_MODELS = { }, 'Lenovo TB-7304F': ['Lenovo', 'Tab 7 Essential', DeviceType.TABLET], + 'Lenovo TB-7305F': ['Lenovo', 'Tab M7', DeviceType.TABLET], + 'Lenovo TB-7305X': ['Lenovo', 'Tab M7', DeviceType.TABLET], + 'Lenovo TB-8304F1': ['Lenovo', 'Tab 8', DeviceType.TABLET], + 'Lenovo TB-8505FS': ['Lenovo', 'Smart Tab M8', DeviceType.TABLET], + 'Lenovo TB-8704X': ['Lenovo', 'Tab 4 8 Plus', DeviceType.TABLET], + 'Lenovo TB-8705F': ['Lenovo', 'Tab M8', DeviceType.TABLET], + 'Lenovo TB-J606F': ['Lenovo', 'Tab P11', DeviceType.TABLET], + 'Lenovo TB-J606L': ['Lenovo', 'Tab P11', DeviceType.TABLET], + 'Lenovo TB-J607Z': ['Lenovo', 'Tab P11', DeviceType.TABLET], + 'Lenovo TB-J616F': ['Lenovo', 'Tab P11', DeviceType.TABLET], + 'Lenovo TB-J706F': ['Lenovo', 'Tab P11 Pro', DeviceType.TABLET], + 'Lenovo TB-J716F': ['Lenovo', 'XiaoXin Pad Pro 2021', DeviceType.TABLET], + 'Lenovo TB-X104F': ['Lenovo', 'Tab E10', DeviceType.TABLET], + 'Lenovo TB-X304L': ['Lenovo', 'Tab 4 10', DeviceType.TABLET], + 'Lenovo TB-X306F': ['Lenovo', 'Tab M10 HD', DeviceType.TABLET], + 'Lenovo TB-X306X': ['Lenovo', 'Tab M10 HD', DeviceType.TABLET], + 'Lenovo TB-X505F': ['Lenovo', 'Tab M10', DeviceType.TABLET], + 'Lenovo TB-X605F': ['Lenovo', 'Tab M10', DeviceType.TABLET], + 'Lenovo TB-X605L': ['Lenovo', 'Tab M10', DeviceType.TABLET], + 'Lenovo TB-X606F': ['Lenovo', 'Tab M11 FHD Plus', DeviceType.TABLET], + 'Lenovo TB-X606X': ['Lenovo', 'Tab M10 FHD Plus', DeviceType.TABLET], + 'Lenovo TB-X6C6F': ['Lenovo', 'Tab K10', DeviceType.TABLET], 'Lenovo TB-X103F': ['Lenovo', 'Tab 10', DeviceType.TABLET], 'TB-X103F': ['Lenovo', 'Tab 10', DeviceType.TABLET], 'Lenovo TB2-X30F': ['Lenovo', 'Tab 2 A10', DeviceType.TABLET], @@ -8464,11 +8660,15 @@ exports.ANDROID_MODELS = { 'Lenovo TB3-X70F': ['Lenovo', 'Tab 3 10 Business', DeviceType.TABLET], 'Lenovo TB3-X70L': ['Lenovo', 'Tab 3 10 Business', DeviceType.TABLET], 'Lenovo TB-8504F': ['Lenovo', 'Tab 4 8', DeviceType.TABLET], + 'Lenovo TB-8504X': ['Lenovo', 'Tab 4 8', DeviceType.TABLET], + 'Lenovo TB-8505F': ['Lenovo', 'Tab M8 HD', DeviceType.TABLET], 'Lenovo TB-8703F': ['Lenovo', 'Tab 4 8 Plus', DeviceType.TABLET], 'Lenovo TB-8704F': ['Lenovo', 'Tab 4 8 Plus', DeviceType.TABLET], 'Lenovo TB-X304F': ['Lenovo', 'Tab 4 10', DeviceType.TABLET], 'Lenovo TB-X704F': ['Lenovo', 'Tab 4 10 Plus', DeviceType.TABLET], 'Lenovo TB-X704L': ['Lenovo', 'Tab 4 10 Plus', DeviceType.TABLET], + 'Lenovo TB-X705F': ['Lenovo', 'Tab P10', DeviceType.TABLET], + 'Lenovo TB-X705L': ['Lenovo', 'Tab P10', DeviceType.TABLET], '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!': { 'IdeaTab ?K2110A-(F)!': ['Lenovo', 'IdeaTab K2110', DeviceType.TABLET], @@ -8641,7 +8841,11 @@ exports.ANDROID_MODELS = { 'Lenovo K50-t3s': ['Lenovo', 'K3 Note'], 'Lenovo K50-T5': ['Lenovo', 'K3 Note'], 'Lenovo K50t5': ['Lenovo', 'K3 Note'], + 'Lenovo K520': ['Lenovo', 'S5'], 'Lenovo K6': ['Lenovo', 'K6'], + 'Lenovo L38111': ['Lenovo', 'Z6 Youth Edition'], + 'Lenovo L78071': ['Lenovo', 'Z5S'], + 'Lenovo L79031': ['Lenovo', 'Legion Pro'], 'Lenovo N300': ['Lenovo', 'N300', DeviceType.DESKTOP], 'Lenovo N308': ['Lenovo', 'N308', DeviceType.DESKTOP], 'Lenovo N908': ['Lenovo', 'N908'], @@ -9425,12 +9629,22 @@ exports.ANDROID_MODELS = { 'LGM-X800[KLS]!': ['LG', 'Q8'] }, + 'LM-F100!': ['LG', 'Wing'], 'LM-G710!': ['LG', 'G7 ThinQ'], 'LM-G715!': ['LG', 'G7 ThinQ'], 'LM-G810!': ['LG', 'G8s ThinQ'], 'LM-G820!': ['LG', 'G8 ThinQ'], + 'LM-G850!': ['LG', 'G8 ThinQ'], + 'LM-G900!': ['LG', 'Velvet'], + 'LM-G910!': ['LG', 'Velvet 4G'], + 'LM-K200!': ['LG', 'K22'], + 'LM-K410!': ['LG', 'K41S'], + 'LM-K420!': ['LG', 'K42'], + 'LM-K510!': ['LG', 'K51s'], + 'LM-K520!': ['LG', 'K52'], 'LM-Q610!': ['LG', 'Q7'], 'LM-Q617!': ['LG', 'Q7 BTS Edition'], + 'LM-Q630!': ['LG', 'K61'], 'LM-Q710!': ['LG', 'Q Stylus+'], 'LM-Q720!': ['LG', 'Stylo 5'], 'LM-Q725!': ['LG', 'Q7 Plus'], @@ -9442,6 +9656,8 @@ exports.ANDROID_MODELS = { 'LM-V40[59]!': ['LG', 'V40 ThinQ'], 'LM-V450!': ['LG', 'V50 ThinQ'], 'LM-V500!': ['LG', 'V50 ThinQ'], + 'LM-V510!': ['LG', 'V50S ThinQ'], + 'LM-V600!': ['LG', 'V60 ThinQ'], 'LM-X120!': ['LG', 'K20'], 'LM-X210!': ['LG', 'Aristo 2'], 'LM-X212!': ['LG', 'K8'], @@ -9450,8 +9666,11 @@ exports.ANDROID_MODELS = { 'LM-X410!': ['LG', 'X4'], 'LM-X415!': ['LG', 'X4+'], 'LM-X420!': ['LG', 'X4 (2019)'], + 'LM-X430!': ['LG', 'K40S'], 'LM-X510!': ['LG', 'X5'], + 'LM-X520!': ['LG', 'K50'], 'LM-X525!': ['LG', 'K12 Prime'], + 'LM-X540!': ['LG', 'K50S'], 'LM-X625!': ['LG', 'X6 (2019)'], 'LM-Y110!': ['LG', 'Folder'], @@ -9927,12 +10146,19 @@ exports.ANDROID_MODELS = { 'LIFETAB E10312': ['Medion', 'Lifetab E10312', DeviceType.TABLET], 'LIFETAB E10316': ['Medion', 'Lifetab E10316', DeviceType.TABLET], 'LIFETAB E10320': ['Medion', 'Lifetab E10320', DeviceType.TABLET], + 'LIFETAB E1041X': ['Medion', 'Lifetab E1041X', DeviceType.TABLET], + 'LIFETAB E1042X': ['Medion', 'Lifetab E1042X', DeviceType.TABLET], + 'LIFETAB E1070X': ['Medion', 'Lifetab E1070X', DeviceType.TABLET], + 'LIFETAB E1071X': ['Medion', 'Lifetab E1071X', DeviceType.TABLET], + 'LIFETAB E1080X': ['Medion', 'Lifetab E1080X', DeviceType.TABLET], + 'LIFETAB E1091X': ['Medion', 'Lifetab E1091X', DeviceType.TABLET], 'LIFETAB P733X': ['Medion', 'Lifetab P733X', DeviceType.TABLET], 'LIFETAB P831X': ['Medion', 'Lifetab P831X', DeviceType.TABLET], 'LIFETAB P831X.2': ['Medion', 'Lifetab P831X', DeviceType.TABLET], 'LIFETAB P891X': ['Medion', 'Lifetab P891X', DeviceType.TABLET], + 'LIFETAB P970X': ['Medion', 'Lifetab P970X', DeviceType.TABLET], 'LIFETAB P1034X': ['Medion', 'Lifetab P1034X', DeviceType.TABLET], - P1035X: ['Medion', 'Lifetab P1035X', DeviceType.TABLET], + 'LIFETAB P1071X': ['Medion', 'Lifetab P1071X', DeviceType.TABLET], 'LIFETAB S7316': ['Medion', 'Lifetab S7316', DeviceType.TABLET], 'LIFETAB S732X': ['Medion', 'Lifetab S732X', DeviceType.TABLET], 'LIFETAB S785X': ['Medion', 'Lifetab S785X', DeviceType.TABLET], @@ -9943,7 +10169,6 @@ exports.ANDROID_MODELS = { 'LIFETAB S1033X': ['Medion', 'Lifetab S1033X', DeviceType.TABLET], 'LIFETAB S1034X': ['Medion', 'Lifetab S1034X', DeviceType.TABLET], 'LIFETAB S1036X': ['Medion', 'Lifetab S1036X', DeviceType.TABLET], - X1030X: ['Medion', 'Lifetab X1030X', DeviceType.TABLET], 'MEDION LIFE P4012': ['Medion', 'Life P4012'], 'MEDION P4013': ['Medion', 'Life P4013'], 'MEDION-P4013': ['Medion', 'Life P4013'], @@ -9956,7 +10181,17 @@ exports.ANDROID_MODELS = { 'MD LIFETAB P9516': ['Medion', 'Lifetab P9516', DeviceType.TABLET] }, + B5532: ['Medion', 'B5532'], + E1050X: ['Medion', 'Lifetab E1050X', DeviceType.TABLET], + E1051X: ['Medion', 'Lifetab E1051X', DeviceType.TABLET], + E1060X: ['Medion', 'Lifetab E1060X', DeviceType.TABLET], + P1035X: ['Medion', 'Lifetab P1035X', DeviceType.TABLET], P1050X: ['Medion', 'Lifetab P1050X', DeviceType.TABLET], + P1060X: ['Medion', 'Lifetab P1060X', DeviceType.TABLET], + P1061X: ['Medion', 'Lifetab P1061X', DeviceType.TABLET], + X1030X: ['Medion', 'Lifetab X1030X', DeviceType.TABLET], + X1031X: ['Medion', 'Lifetab X1031X', DeviceType.TABLET], + X1060X: ['Medion', 'Lifetab X1060X', DeviceType.TABLET], 'MEEG!!': { 'MEEG 101': ['MEEG', '101'], @@ -10291,6 +10526,9 @@ exports.ANDROID_MODELS = { 'P300(Funbook)': ['Micromax', 'Funbook P300', DeviceType.TABLET], P701: ['Micromax', 'Canvas Tab P701', DeviceType.TABLET], + 'Surface Duo': ['Microsoft', 'Surface Duo'], + 'Surface Duo 2': ['Microsoft', 'Surface Duo 2'], + 'MLLED!!': { 'MLLED M1B': ['MLLED', 'M1B'], 'MLLED M2+': ['MLLED', 'M2+'], @@ -10682,17 +10920,27 @@ exports.ANDROID_MODELS = { 'XT17(89)!': ['Motorola', 'Moto Z2 Force'], 'XT17(90)!': ['Motorola', 'Moto G5S'], 'XT18(02)!': ['Motorola', 'Moto G5S Plus TV'], - 'XT18(06)!': ['Motorola', 'Moto G5S Plus'], + 'XT18(05|06)!': ['Motorola', 'Moto G5S Plus'], 'XT19(02)!': ['Lenovo', 'K8 Note'] }, 'motorola one': ['Motorola', 'One'], + 'motorola one 5G ace': ['Motorola', 'One Ace'], 'motorola one action': ['Motorola', 'One Action'], + 'motorola one fusion+': ['Motorola', 'One Fusion+'], + 'motorola one hyper': ['Motorola', 'One Hyper'], 'motorola one macro': ['Motorola', 'One Macro'], 'motorola one power': ['Motorola', 'One Power'], 'motorola one vision': ['Motorola', 'One Vision'], 'motorola one zoom': ['Motorola', 'One Zoom'], + 'motorola edge': ['Motorola', 'Edge'], + 'motorola edge plus': ['Motorola', 'Edge Plus'], + 'motorola edge 20': ['Motorola', 'Edge 20'], + 'motorola edge 20 lite': ['Motorola', 'Edge 20 Lite'], + 'motorola edge 20 pro': ['Motorola', 'Edge 20 Pro'], + 'motorola edge 30 pro': ['Motorola', 'Edge 30 Pro'], + 'Atrix 2': ['Motorola', 'ATRIX 2'], 'Atrix 2 WeifanZ': ['Motorola', 'ATRIX 2'], 'Atrix 4G': ['Motorola', 'ATRIX 4G'], @@ -10750,8 +10998,21 @@ exports.ANDROID_MODELS = { 'Moto E4': ['Motorola', 'Moto E4'], 'Moto E (4)': ['Motorola', 'Moto E4'], 'Moto E (4) Plus': ['Motorola', 'Moto E4 Plus'], + 'moto e5': ['Motorola', 'Moto E5'], 'moto e5 cruise': ['Motorola', 'Moto E5 Cruise'], 'moto e5 play': ['Motorola', 'Moto E5 Play'], + 'moto e5 plus': ['Motorola', 'Moto E5 Plus'], + 'moto e(6i)': ['Motorola', 'Moto E6i'], + 'moto e6s': ['Motorola', 'Moto E6s'], + 'moto e6 play': ['Motorola', 'Moto E6 Play'], + 'moto e(6) plus': ['Motorola', 'Moto E6 Plus'], + 'moto e(7)': ['Motorola', 'Moto E7'], + 'moto e(7) plus': ['Motorola', 'Moto E7 Plus'], + 'moto e(7) power': ['Motorola', 'Moto E7 Power'], + 'moto e(7i) power': ['Motorola', 'Moto E7i Power'], + 'moto e20': ['Motorola', 'Moto E20'], + 'moto e30': ['Motorola', 'Moto E30'], + 'moto e40': ['Motorola', 'Moto E40'], '(Moto)?G3$!': ['Motorola', 'Moto G (2015)'], '(Moto)?G3-TE$!': ['Motorola', 'Moto G (2015)'], 'Moto G 2015': ['Motorola', 'Moto G (2015)'], @@ -10759,7 +11020,11 @@ exports.ANDROID_MODELS = { 'Moto G (2014': ['Motorola', 'Moto G'], 'MOTOROLA MOTOG': ['Motorola', 'Moto G'], 'Moto G Play': ['Motorola', 'Moto G Play'], + 'moto g power': ['Motorola', 'Moto G Power'], 'Moto G Turbo': ['Motorola', 'Moto G Turbo'], + 'moto g 5G': ['Motorola', 'Moto G 5G'], + 'moto g 5G plus': ['Motorola', 'Moto G 5G Plus'], + 'moto g pro': ['Motorola', 'Moto G Pro'], 'Moto G4': ['Motorola', 'Moto G4'], 'Moto G (4': ['Motorola', 'Moto G4'], 'Moto G (4)': ['Motorola', 'Moto G4'], @@ -10771,6 +11036,7 @@ exports.ANDROID_MODELS = { 'Moto G (5S': ['Motorola', 'Moto G5S'], 'Moto G (5S)': ['Motorola', 'Moto G5S'], 'Moto G (5S) Plus': ['Motorola', 'Moto G5S Plus'], + 'Moto G (5S) Plus (XT1805)': ['Motorola', 'Moto G5S Plus'], 'moto g(6': ['Motorola', 'Moto G6'], 'moto g(6)': ['Motorola', 'Moto G6'], 'moto g(6) (XT1925DL)': ['Motorola', 'Moto G6'], @@ -10785,16 +11051,36 @@ exports.ANDROID_MODELS = { 'moto g(7) power': ['Motorola', 'Moto G7 Power'], 'moto g(7) supra': ['Motorola', 'Moto G7 Supra'], 'moto g(8': ['Motorola', 'Moto G8'], + 'moto g(8)': ['Motorola', 'Moto G8'], + 'moto g(8) plus': ['Motorola', 'Moto G8 Plus'], + 'moto g(8) power': ['Motorola', 'Moto G8 Power'], + 'moto g(8) power lite': ['Motorola', 'Moto G8 Power Lite'], + 'moto g(9) play': ['Motorola', 'Moto G9 Play'], + 'moto g(9) plus': ['Motorola', 'Moto G9 Plus'], + 'moto g(9) power': ['Motorola', 'Moto G9 Power'], + 'moto g(10)': ['Motorola', 'Moto G10'], + 'moto g(20)': ['Motorola', 'Moto G20'], + 'moto g(30)': ['Motorola', 'Moto G30'], + 'moto g31(w)': ['Motorola', 'Moto G31w'], + 'moto g(50)': ['Motorola', 'Moto G50'], + 'moto g51 5G': ['Motorola', 'Moto G51'], + 'moto g(60)': ['Motorola', 'Moto G60'], + 'moto g(60)s': ['Motorola', 'Moto G60s'], + 'moto g(100)': ['Motorola', 'Moto G100'], + 'moto g200 5G': ['Motorola', 'Moto G200'], 'Moto Z (2)': ['Motorola', 'Moto Z2'], 'Moto Z2 Play': ['Motorola', 'Moto Z2 Play'], + 'Moto Z3 Play': ['Motorola', 'Moto Z3 Play'], 'Moto X Pro': ['Motorola', 'Moto X Pro'], 'moto x4': ['Motorola', 'Moto X4'], + 'moto z4': ['Motorola', 'Moto Z4'], roiX: ['Motorola', 'Droid X'], 'Moto Backflip': ['Motorola', 'BACKFLIP'], RAZR: ['Motorola', 'RAZR'], 'RAZR HD': ['Motorola', 'RAZR HD'], 'RAZR M': ['Motorola', 'RAZR M'], 'RAZR MAXX': ['Motorola', 'RAZR MAXX'], + 'motorola razr 5G': ['Motorola', 'RAZR 5G'], Triumph: ['Motorola', 'TRIUMPH'], 'Opus One': ['Motorola', 'i1'], Photon: ['Motorola', 'PHOTON'], @@ -11217,6 +11503,7 @@ exports.ANDROID_MODELS = { 'Nokia 10.1': ['Nokia', '10.1'], 'Nokia N9': ['Nokia', 'N9'], 'Nokia N900': ['Nokia', 'N900'], + 'T20-Plus': ['Nokia', 'T20 Plus'], 'Nokia X': ['Nokia', 'X', DeviceType.MOBILE, Flag.NOKIAX], 'Nokia X Dual SIM': ['Nokia', 'X', DeviceType.MOBILE, Flag.NOKIAX], 'RM-980': ['Nokia', 'X', DeviceType.MOBILE, Flag.NOKIAX], @@ -11349,14 +11636,32 @@ exports.ANDROID_MODELS = { 'ONEPLUS A6003': ['OnePlus', '6'], 'ONEPLUS A6010': ['OnePlus', '6T'], 'ONEPLUS A6013': ['OnePlus', '6T'], - 'HD190[01]!': ['OnePlus', '7T'], - 'HD191[03]!': ['OnePlus', '7T Pro'], + 'HD190[0135]!': ['OnePlus', '7T'], + 'HD191[0137]!': ['OnePlus', '7T Pro'], + 'OnePlus 7T Pro': ['OnePlus', '7T Pro'], 'GM190[0135]!': ['OnePlus', '7'], 'GM191[01357]!': ['OnePlus', '7 Pro'], + 'IN201[01357]!': ['OnePlus', '8'], + 'IN202[0135]!': ['OnePlus', '8 Pro'], + 'KB200[01357]!': ['OnePlus', '8T'], + LE2101: ['OnePlus', '9T'], + 'LE211[0135]!': ['OnePlus', '9'], + 'LE212[01357]!': ['OnePlus', '9 Pro'], + NE2213: ['OnePlus', '10 Pro'], 'ONE E1000': ['OnePlus', 'X'], 'ONE E1001': ['OnePlus', 'X'], 'ONE E1003': ['OnePlus', 'X'], 'ONE E1005': ['OnePlus', 'X'], + AC2001: ['OnePlus', 'Nord'], + AC2003: ['OnePlus', 'Nord'], + DN2101: ['OnePlus', 'Nord 2'], + DN2103: ['OnePlus', 'Nord 2'], + 'oneplus Nord 2 5G': ['OnePlus', 'Nord 2'], + EB2101: ['OnePlus', 'Nord CE'], + EB2103: ['OnePlus', 'Nord CE'], + IV2201: ['OnePlus', 'Nord CE 2'], + 'BE202[69]!': ['OnePlus', 'Nord N10'], + BE2013: ['OnePlus', 'Nord N100'], 'ONDA MID': ['Onda', 'MID', DeviceType.TABLET], 'ONDA A9 Core4': ['Onda', 'A9 Quad Core', DeviceType.TABLET], 'ONDA VI10': ['Onda', 'VI10', DeviceType.TABLET], @@ -11465,7 +11770,59 @@ exports.ANDROID_MODELS = { CPH1859: ['Oppo', 'F7 Youth'], CPH1881: ['Oppo', 'F9'], CPH1823: ['Oppo', 'F9 Pro'], + CPH1831: ['Oppo', 'R15 Pro'], + CPH1837: ['Oppo', 'A3'], + CPH1871: ['Oppo', 'Find X'], + CPH1875: ['Oppo', 'Find X'], + CPH1877: ['Oppo', 'RX17 Pro'], + CPH1893: ['Oppo', 'RX17 Neo'], + CPH1903: ['Oppo', 'A7'], + CPH1907: ['Oppo', 'Reno 2'], + CPH1909: ['Oppo', 'A5s'], + CPH1911: ['Oppo', 'F11'], + CPH1917: ['Oppo', 'Reno'], + CPH1919: ['Oppo', 'Reno 10x Zoom'], + CPH1920: ['Oppo', 'A5s'], + CPH1923: ['Oppo', 'A1k'], + CPH1931: ['Oppo', 'A5 (2020)'], + CPH1933: ['Oppo', 'A5 (2020)'], + CPH1951: ['Oppo', 'Reno 2Z'], CPH1969: ['Oppo', 'F11 Pro'], + CPH1989: ['Oppo', 'Reno 2 F'], + CPH2005: ['Oppo', 'Find X2 Lite'], + CPH2009: ['Oppo', 'Find X2 Neo'], + CPH2021: ['Oppo', 'A91'], + CPH2023: ['Oppo', 'Find X2'], + CPH2025: ['Oppo', 'Find X2 Pro'], + CPH2043: ['Oppo', 'Reno 3'], + CPH2065: ['Oppo', 'Reno 4Z'], + CPH2067: ['Oppo', 'A72'], + CPH2069: ['Oppo', 'A52'], + CPH2083: ['Oppo', 'A12'], + CPH2089: ['Oppo', 'Reno 4 Pro'], + CPH2091: ['Oppo', 'Reno 4'], + CPH2121: ['Oppo', 'A93'], + CPH2125: ['Oppo', 'Reno 4 Lite'], + CPH2127: ['Oppo', 'A53'], + CPH2135: ['Oppo', 'A53s'], + CPH2145: ['Oppo', 'Find X3 Lite'], + CPH2161: ['Oppo', 'A73'], + CPH2173: ['Oppo', 'Find X3 Pro'], + CPH2185: ['Oppo', 'A15'], + CPH2195: ['Oppo', 'A54'], + CPH2197: ['Oppo', 'A74'], + CPH2205: ['Oppo', 'Reno 5 Lite'], + CPH2207: ['Oppo', 'Find X3 Neo'], + CPH2211: ['Oppo', 'A94'], + CPH2219: ['Oppo', 'A74'], + CPH2247: ['Oppo', 'Reno 6 Pro'], + CPH2251: ['Oppo', 'Reno 6'], + CPH2269: ['Oppo', 'A16'], + CPH2271: ['Oppo', 'A16s'], + CPH2273: ['Oppo', 'A54s'], + CPH2305: ['Oppo', 'Find X5 Pro'], + CPH2307: ['Oppo', 'Find X5'], + CPH2371: ['Oppo', 'Reno 7'], 'Find 5': ['Oppo', 'Find 5'], X903: ['Oppo', 'Find Me X903'], X903S: ['Oppo', 'Find X903S'], @@ -11689,6 +12046,10 @@ exports.ANDROID_MODELS = { 'Bucare Y330-U05': ['Orinoquia', 'Bucare Y330'], 'Kavak Y625-U03': ['Orinoquia', 'Kavak Y625'], + 'C15 Pro': ['Oukitel', 'C15 Pro'], + 'C21 Pro': ['Oukitel', 'C21 Pro'], + B2021: ['Oukitel', 'B2021'], + 'K6000 Pro': ['Oukitel', 'K6000 Pro'], 'K10000 Pro': ['Oukitel', 'K10000 Pro'], '(OV-|Overmax|Vertis)!!': { @@ -11717,6 +12078,7 @@ exports.ANDROID_MODELS = { 'Vertis Famy': ['Overmax', 'Vertis Famy'] }, + OV10274G: ['Overmax', '1027'], Arctic450: ['Oysters', 'Arctic 450'], 'Oysters Pacific 800': ['Oysters', 'Pacific 800'], 'Oysters T3 3G': ['Oysters', 'T3'], @@ -12825,6 +13187,10 @@ exports.ANDROID_MODELS = { }, 'RoverPad 3W T71D': ['RoverPad', '3W T71D', DeviceType.TABLET], + RG650: ['RugGear', 'RG650'], + RG655: ['RugGear', 'RG655'], + RG725: ['RugGear', 'RG725'], + RG850: ['RugGear', 'RG850'], 'Snexian!!': { 'Snexian Mi320': ['S Nexian', 'Chronos Mi320'], @@ -13255,21 +13621,39 @@ exports.ANDROID_MODELS = { 'SMT-i9100': ['Samsung', 'Galaxy Tab 7.0', DeviceType.TABLET], 'SM-A[0-9]{3,3}!!': { + 'SM-A013!': ['Samsung', 'Galaxy A01 Core'], 'SM-A015!': ['Samsung', 'Galaxy A01'], + 'SM-A022!': ['Samsung', 'Galaxy A02'], + 'SM-A025!': ['Samsung', 'Galaxy A02s'], + 'SM-A032!': ['Samsung', 'Galaxy A03 Core'], + 'SM-A035!': ['Samsung', 'Galaxy A03'], + 'SM-A037!': ['Samsung', 'Galaxy A03s'], 'SM-A102!': ['Samsung', 'Galaxy A10e'], 'SM-A105!': ['Samsung', 'Galaxy A10'], - 'SM-A115!': ['Samsung', 'Galaxy A11'], 'SM-A107!': ['Samsung', 'Galaxy A10s'], + 'SM-A115!': ['Samsung', 'Galaxy A11'], + 'SM-A125!': ['Samsung', 'Galaxy A12'], + 'SM-A127!': ['Samsung', 'Galaxy A12'], + 'SM-A135!': ['Samsung', 'Galaxy A13'], 'SM-A202!': ['Samsung', 'Galaxy A20e'], 'SM-A205!': ['Samsung', 'Galaxy A20'], + 'SM-A207!': ['Samsung', 'Galaxy A20s'], 'SM-A215!': ['Samsung', 'Galaxy A21'], + 'SM-A217!': ['Samsung', 'Galaxy A21s'], + 'SM-A225!': ['Samsung', 'Galaxy A22'], + 'SM-A226!': ['Samsung', 'Galaxy A22 5G'], 'SM-A260!': ['Samsung', 'Galaxy A2 Core'], 'SM-A300!': ['Samsung', 'Galaxy A3'], 'SM-A305!': ['Samsung', 'Galaxy A30'], 'SM-A307!': ['Samsung', 'Galaxy A30s'], 'SM-A310!': ['Samsung', 'Galaxy A3 (2016)'], + 'SM-A315!': ['Samsung', 'Galaxy A31'], 'SM-A320!': ['Samsung', 'Galaxy A3 (2017)'], + 'SM-A325!': ['Samsung', 'Galaxy A32'], + 'SM-A326!': ['Samsung', 'Galaxy A32 5G'], 'SM-A405!': ['Samsung', 'Galaxy A40'], + 'SM-A415!': ['Samsung', 'Galaxy A41'], + 'SM-A426!': ['Samsung', 'Galaxy A42 5G'], 'SM-A430!': ['Samsung', 'Galaxy A4'], 'SM-A450!': ['Samsung', 'Galaxy A4 (2017)'], 'SM-A460!': ['Samsung', 'SM-A460'], @@ -13280,7 +13664,11 @@ exports.ANDROID_MODELS = { 'SM-A515!': ['Samsung', 'Galaxy A51'], 'SM-A516!': ['Samsung', 'Galaxy A51 5G'], 'SM-A520!': ['Samsung', 'Galaxy A5 (2017)'], + 'SM-A525!': ['Samsung', 'Galaxy A52'], + 'SM-A526!': ['Samsung', 'Galaxy A52 5G'], + 'SM-A528!': ['Samsung', 'Galaxy A52s 5G'], 'SM-A530!': ['Samsung', 'Galaxy A8 (2018)'], + 'SM-A536!': ['Samsung', 'Galaxy A53'], 'SM-A600!': ['Samsung', 'Galaxy A6 (2018)'], 'SM-A6050!': ['Samsung', 'Galaxy A9 Star Lite'], 'SM-A605!': ['Samsung', 'Galaxy A6+ (2018)'], @@ -13288,8 +13676,10 @@ exports.ANDROID_MODELS = { 'SM-A700!': ['Samsung', 'Galaxy A7'], 'SM-A705!': ['Samsung', 'Galaxy A70'], 'SM-A710!': ['Samsung', 'Galaxy A7 (2016)'], + 'SM-A715!': ['Samsung', 'Galaxy A71'], 'SM-A716!': ['Samsung', 'Galaxy A71 5G'], 'SM-A720!': ['Samsung', 'Galaxy A7 (2017)'], + 'SM-A725!': ['Samsung', 'Galaxy A72'], 'SM-A730!': ['Samsung', 'Galaxy A8+ (2018)'], 'SM-A750!': ['Samsung', 'Galaxy A7 (2018)'], 'SM-A800!': ['Samsung', 'Galaxy A8'], @@ -13297,6 +13687,7 @@ exports.ANDROID_MODELS = { 'SM-A810!': ['Samsung', 'Galaxy A8 (2016)'], 'SM-A850!': ['Samsung', 'Galaxy Alpha'], 'SM-A900!': ['Samsung', 'Galaxy A9 (2016)'], + 'SM-A908!': ['Samsung', 'Galaxy A90 5G'], 'SM-A910!': ['Samsung', 'Galaxy A9 Pro'], 'SM-A920!': ['Samsung', 'Galaxy A9 (2018)'] }, @@ -13318,11 +13709,15 @@ exports.ANDROID_MODELS = { }, 'SM-F[0-9]{3,3}!!': { + 'SM-F127!': ['Samsung', 'Galaxy F12'], 'SM-F700!': ['Samsung', 'Galaxy Z Flip'], 'SM-F707!': ['Samsung', 'Galaxy Z Flip 5G'], + 'SM-F711!': ['Samsung', 'Galaxy Z Flip3 5G'], 'SM-F900!': ['Samsung', 'Galaxy Fold'], + 'SM-F907!': ['Samsung', 'Galaxy Fold 5G'], 'SM-F910!': ['Samsung', 'Galaxy Z Fold2'], - 'SM-F916!': ['Samsung', 'Galaxy Z Fold2 5G'] + 'SM-F916!': ['Samsung', 'Galaxy Z Fold2 5G'], + 'SM-F926!': ['Samsung', 'Galaxy Z Fold3 5G'] }, 'SM-G[0-9]{3,3}!!': { @@ -13365,11 +13760,13 @@ exports.ANDROID_MODELS = { 'SM-G388!': ['Samsung', 'Galaxy Xcover 3'], 'SM-G389!': ['Samsung', 'Galaxy Xcover 3 VE'], 'SM-G390!': ['Samsung', 'Galaxy Xcover 4'], + 'SM-G398!': ['Samsung', 'Galaxy Xcover 4s'], 'SM-G420!': ['Samsung', 'SM-G420'], // Unknown 'SM-G430!': ['Samsung', 'SM-G430'], // Unknown 'SM-G480!': ['Samsung', 'Galaxy S8'], 'SM-G485!': ['Samsung', 'Galaxy S8+'], 'SM-G510!': ['Samsung', 'Galaxy Core Max'], + 'SM-G525!': ['Samsung', 'Galaxy Xcover 5'], 'SM-G530!': ['Samsung', 'Galaxy Grand Prime'], 'SM-G531!': ['Samsung', 'Galaxy Grand Prime VE'], 'SM-G532!': ['Samsung', 'Galaxy Grand Prime+'], @@ -13387,6 +13784,8 @@ exports.ANDROID_MODELS = { 'SM-G730!': ['Samsung', 'Galaxy S III Mini'], 'SM-G750!': ['Samsung', 'Galaxy Mega 2 '], 'SM-G770!': ['Samsung', 'Galaxy S10 Lite'], + 'SM-G780!': ['Samsung', 'Galaxy S20 FE'], + 'SM-G781!': ['Samsung', 'Galaxy S20 FE'], 'SM-G800!': ['Samsung', 'Galaxy S5 Mini'], 'SM-G850!': ['Samsung', 'Galaxy Alpha'], 'SM-G860!': ['Samsung', 'Galaxy S5 Sport'], @@ -13396,6 +13795,7 @@ exports.ANDROID_MODELS = { 'SM-G885[FSY]!': ['Samsung', 'Galaxy A8 Star'], 'SM-G8850!': ['Samsung', 'Galaxy A9 Star'], 'SM-G887!': ['Samsung', 'Galaxy A9 Pro (2019)'], + 'SM-G889!': ['Samsung', 'Galaxy Xcover FieldPro'], 'SM-G890!': ['Samsung', 'Galaxy S6 Active'], 'SM-G891!': ['Samsung', 'Galaxy S7 Active'], 'SM-G892!': ['Samsung', 'Galaxy S8 Active'], @@ -13424,7 +13824,11 @@ exports.ANDROID_MODELS = { 'SM-G981!': ['Samsung', 'Galaxy S20'], 'SM-G985!': ['Samsung', 'Galaxy S20+'], 'SM-G986!': ['Samsung', 'Galaxy S20+'], - 'SM-G988!': ['Samsung', 'Galaxy S20 Ultra'] + 'SM-G988!': ['Samsung', 'Galaxy S20 Ultra'], + 'SM-G990!': ['Samsung', 'Galaxy S21 FE'], + 'SM-G991!': ['Samsung', 'Galaxy S21'], + 'SM-G996!': ['Samsung', 'Galaxy S21+'], + 'SM-G998!': ['Samsung', 'Galaxy S21 Ultra'] }, 'SM-I9500': ['Samsung', 'Galaxy S4'], @@ -13467,14 +13871,25 @@ exports.ANDROID_MODELS = { }, 'SM-M[0-9]{3,4}!!': { + 'SM-M015!': ['Samsung', 'Galaxy M01'], 'SM-M105!': ['Samsung', 'Galaxy M10'], + 'SM-M115!': ['Samsung', 'Galaxy M11'], + 'SM-M127!': ['Samsung', 'Galaxy M12'], 'SM-M205!': ['Samsung', 'Galaxy M20'], - 'SM-M305!': ['Samsung', 'Galaxy M30'] + 'SM-M215!': ['Samsung', 'Galaxy M21'], + 'SM-M225!': ['Samsung', 'Galaxy M22'], + 'SM-M305!': ['Samsung', 'Galaxy M30'], + 'SM-M307!': ['Samsung', 'Galaxy M30s'], + 'SM-M315!': ['Samsung', 'Galaxy M31'], + 'SM-M317!': ['Samsung', 'Galaxy M31s'], + 'SM-M515!': ['Samsung', 'Galaxy M51'], + 'SM-M526!': ['Samsung', 'Galaxy M52'] }, 'SM-N[0-9]{3,4}!!': { 'SM-N750[025789][QV]?!': ['Samsung', 'Galaxy Note 3 Neo'], 'SM-N750[LS]?!': ['Samsung', 'Galaxy Note 3 Neo'], + 'SM-N770!': ['Samsung', 'Galaxy Note 10 Lite'], 'SM-N8000': ['Samsung', 'Galaxy Note 800', DeviceType.TABLET], 'SM-N900[0256789]?!': ['Samsung', 'Galaxy Note 3'], 'SM-N900!': ['Samsung', 'Galaxy Note 3'], @@ -13489,6 +13904,7 @@ exports.ANDROID_MODELS = { 'SM-N970!': ['Samsung', 'Galaxy Note 10'], 'SM-N975!': ['Samsung', 'Galaxy Note 10+'], 'SM-N976!': ['Samsung', 'Galaxy Note 10+ 5G'], + 'SM-N980!': ['Samsung', 'Galaxy Note 20'], 'SM-N981!': ['Samsung', 'Galaxy Note 20 5G'], 'SM-N986!': ['Samsung', 'Galaxy Note 20 Ultra 5G'] }, @@ -13498,7 +13914,7 @@ exports.ANDROID_MODELS = { 'SM-P55[015]!': ['Samsung', 'Galaxy Tab A Plus 9.7', DeviceType.TABLET], 'SM-P58[058]!': ['Samsung', 'Galaxy Tab A 10.1 with S Pen (2016)', DeviceType.TABLET], 'SM-P60[01257]!': ['Samsung', 'Galaxy Note 10.1 (2014)', DeviceType.TABLET], - 'SM-P61[0]!': ['Samsung', 'Galaxy Tab S6 Lite', DeviceType.TABLET], + 'SM-P61[05]!': ['Samsung', 'Galaxy Tab S6 Lite', DeviceType.TABLET], 'SM-P90[01257]!': ['Samsung', 'Galaxy Note Pro', DeviceType.TABLET] }, @@ -13519,10 +13935,13 @@ exports.ANDROID_MODELS = { 'SM-S780L': ['Samsung', 'Galaxy Mega 6.3'], 'SM-S820L': ['Samsung', 'Galaxy Core Prime'], 'SM-S890L': ['Samsung', 'Galaxy S4 Mini'], + 'SM-S901B': ['Samsung', 'Galaxy S22'], 'SM-S902L': ['Samsung', 'Galaxy S5'], 'SM-S903VL': ['Samsung', 'Galaxy S5'], 'SM-S906L': ['Samsung', 'Galaxy S6'], + 'SM-S906B': ['Samsung', 'Galaxy S22+'], 'SM-S907VL': ['Samsung', 'Galaxy S6'], + 'SM-S908B': ['Samsung', 'Galaxy S22 Ultra'], 'SM-S920L': ['Samsung', 'Galaxy Grand Prime'], 'SM-S975L': ['Samsung', 'Galaxy S4'], 'SM-S978L': ['Samsung', 'Galaxy E5'] @@ -13533,11 +13952,12 @@ exports.ANDROID_MODELS = { 'SM-T11[36]!': ['Samsung', 'Galaxy Tab 3V 7.0', DeviceType.TABLET], 'SM-T2105': ['Samsung', 'Galaxy Tab 3 Kids', DeviceType.TABLET], 'SM-T21[01257]!': ['Samsung', 'Galaxy Tab 3 7.0', DeviceType.TABLET], + 'SM-T22[05]!': ['Samsung', 'Galaxy Tab A7 Lite', DeviceType.TABLET], 'SM-T2519': ['Samsung', 'Galaxy Tab Q'], 'SM-T255[68S]!': ['Samsung', 'Galaxy Tab Q'], 'SM-T23[012579]!': ['Samsung', 'Galaxy Tab 4 7.0', DeviceType.TABLET], 'SM-T28[057]!': ['Samsung', 'Galaxy Tab A 7.0', DeviceType.TABLET], - 'SM-T29[0]!': ['Samsung', 'Galaxy Tab A 8.0 (2019)', DeviceType.TABLET], + 'SM-T29[05]!': ['Samsung', 'Galaxy Tab A 8.0 (2019)', DeviceType.TABLET], 'SM-T30[7]!': ['Samsung', 'Galaxy Tab A 8.4 (2020)', DeviceType.TABLET], 'SM-T31[0125]!': ['Samsung', 'Galaxy Tab 3 8.0', DeviceType.TABLET], 'SM-T32[0125]!': ['Samsung', 'Galaxy Tab Pro 8.4', DeviceType.TABLET], @@ -13549,6 +13969,7 @@ exports.ANDROID_MODELS = { 'SM-T38[05]!': ['Samsung', 'Galaxy Tab A 8.0 (2017)', DeviceType.TABLET], 'SM-T387!': ['Samsung', 'Galaxy Tab A 8.0 (2018)', DeviceType.TABLET], 'SM-T39[05]!': ['Samsung', 'Galaxy Tab Active2 8.0', DeviceType.TABLET], + 'SM-T50[05]!': ['Samsung', 'Galaxy Tab A7 10.4 (2020)', DeviceType.TABLET], 'SM-T51[05]!': ['Samsung', 'Galaxy Tab A 10.1 (2019)', DeviceType.TABLET], 'SM-T520CC': ['Samsung', 'Galaxy Tab Pro 10.1 Chef Collection', DeviceType.TABLET], 'SM-T52[057]!': ['Samsung', 'Galaxy Tab Pro 10.1', DeviceType.TABLET], @@ -13556,7 +13977,9 @@ exports.ANDROID_MODELS = { 'SM-T53[023]!': ['Samsung', 'Galaxy Tab 4 10.1', DeviceType.TABLET], 'SM-T53[6]!': ['Samsung', 'Galaxy Tab 4 10.1 Advanced', DeviceType.TABLET], 'SM-T53[157]!': ['Samsung', 'Galaxy Tab 4 10.0', DeviceType.TABLET], + 'SM-T54[05]!': ['Samsung', 'Galaxy Tab Active Pro', DeviceType.TABLET], 'SM-T55[015]!': ['Samsung', 'Galaxy Tab A 9.7', DeviceType.TABLET], + 'SM-T57[5]!': ['Samsung', 'Galaxy Tab Active3', DeviceType.TABLET], 'SM-T58[057]!': ['Samsung', 'Galaxy Tab A 10.1 (2016)', DeviceType.TABLET], 'SM-T583!': ['Samsung', 'Galaxy Tab Advanced2', DeviceType.TABLET], 'SM-T56[0127]!': ['Samsung', 'Galaxy Tab E 9.6', DeviceType.TABLET], @@ -13566,6 +13989,7 @@ exports.ANDROID_MODELS = { 'SM-T71[05]!': ['Samsung', 'Galaxy Tab S2 8.0', DeviceType.TABLET], 'SM-T71[39]!': ['Samsung', 'Galaxy Tab S2 8.0 (2016)', DeviceType.TABLET], 'SM-T72[057]!': ['Samsung', 'Galaxy Tab S5e', DeviceType.TABLET], + 'SM-T73[36]!': ['Samsung', 'Galaxy Tab S7 12.4 FE (2021)', DeviceType.TABLET], 'SM-T80[0157]!': ['Samsung', 'Galaxy Tab S 10.5', DeviceType.TABLET], 'SM-T81[057]!': ['Samsung', 'Galaxy Tab S2 9.7', DeviceType.TABLET], 'SM-T81[39]!': ['Samsung', 'Galaxy Tab S2 9.7 (2016)', DeviceType.TABLET], @@ -13573,12 +13997,19 @@ exports.ANDROID_MODELS = { 'SM-T82[057]!': ['Samsung', 'Galaxy Tab S3 9.7', DeviceType.TABLET], 'SM-T83[057]!': ['Samsung', 'Galaxy Tab S4 10.5', DeviceType.TABLET], 'SM-T86[057]!': ['Samsung', 'Galaxy Tab S6 10.5', DeviceType.TABLET], - 'SM-T87[0]!': ['Samsung', 'Galaxy Tab S7 11.0', DeviceType.TABLET], + 'SM-T87[05]!': ['Samsung', 'Galaxy Tab S7 11.0', DeviceType.TABLET], 'SM-T90[05]!': ['Samsung', 'Galaxy Tab Pro 12.2', DeviceType.TABLET], 'SM-T92[7]!': ['Samsung', 'Galaxy View2 (2019)', DeviceType.TABLET], - 'SM-T97[0]!': ['Samsung', 'Galaxy Tab S7+ 12.4', DeviceType.TABLET] + 'SM-T97[06]!': ['Samsung', 'Galaxy Tab S7+ 12.4 (2020)', DeviceType.TABLET] }, + 'SM-X200': ['Samsung', 'Galaxy Tab A8 10.5', DeviceType.TABLET], + 'SM-X205': ['Samsung', 'Galaxy Tab A8 10.5', DeviceType.TABLET], + 'SM-X700': ['Samsung', 'Galaxy Tab S8', DeviceType.TABLET], + 'SM-X800': ['Samsung', 'Galaxy Tab S8+', DeviceType.TABLET], + 'SM-X900': ['Samsung', 'Galaxy Tab S8 Ultra', DeviceType.TABLET], + 'SM-X906!': ['Samsung', 'Galaxy Tab S8 Ultra', DeviceType.TABLET], + 'SM-V700': ['Samsung', 'Galaxy Gear', DeviceType.WATCH], 'SM-W[0-9]{4,4}!!': { @@ -13872,6 +14303,8 @@ exports.ANDROID_MODELS = { 'EB-L76G-B': ['Sharp', 'EB-L76G-B', DeviceType.TABLET], RW107: ['Sharp', 'RW-T107', DeviceType.TABLET], + FS8032: ['Sharp', 'AQUOS S3 FS8032'], + 'SBM[0-9]0[0-9]SH!!': { SBM003SH: ['Sharp', 'GALAPAGOS 003SH', { carrier: 'Softbank' }], SBM005SH: ['Sharp', 'GALAPAGOS 005SH', { carrier: 'Softbank' }], @@ -13916,12 +14349,17 @@ exports.ANDROID_MODELS = { 'DM-01H': ['Sharp', 'DM-01H', { carrier: 'Disney Mobile' }], 'DM-01J': ['Sharp', 'DM-01J', { carrier: 'Disney Mobile' }], + 'SH-A01': ['Sharp', 'B10 SH-A01'], + 'SH-C02': ['Sharp', 'AQUOS V SH-C02'], + 'SH-D01': ['Sharp', 'AQUOS D10 SH-D01'], 'SH-M01': ['Sharp', 'AQUOS SH-M01'], 'SH-M02': ['Sharp', 'AQUOS SH-M02'], 'SH-M02-EVA20': ['Sharp', 'AQUOS SH-M02'], 'SH-M03': ['Sharp', 'AQUOS mini SH-M03'], + 'SH-M05': ['Sharp', 'AQUOS sense lite SH-M05'], 'SH-M07': ['Sharp', 'AQUOS sense plus SH-M07'], 'SH-RM02': ['Sharp', 'AQUOS SH-RM02'], + 'SH-Z01': ['Sharp', 'AQUOS C10 SH-Z01'], 'SH-[01][0-9][A-Z]!!': { 'SH-01D': ['Sharp', 'AQUOS PHONE SH-01D', { carrier: 'DoCoMo' }], @@ -14053,6 +14491,8 @@ exports.ANDROID_MODELS = { 'LC-((A|S|LX)[0-9]{1,3}[A-Z])!': ['Sharp', 'Aquos $1', DeviceType.TELEVISION], 'LCD-((S|V|LX|UF)[0-9]{1,3}[A-Z])!': ['Sharp', 'Aquos $1', DeviceType.TELEVISION], + SHIFT6m: ['Shift', 'SHIFT6m'], + 'X-treme PQ11': ['Sigma Mobile', 'X-treme PQ11'], 'X-treme PQ15': ['Sigma Mobile', 'X-treme PQ15'], 'X-tremePQ22': ['Sigma Mobile', 'X-treme PQ22'], @@ -14066,6 +14506,7 @@ exports.ANDROID_MODELS = { 'SPX-6': ['Simvalley', 'SPX-6'], 'SPX-12': ['Simvalley', 'SPX-12'], X720: ['Simmtronics', 'XPAD X-720', DeviceType.TABLET], + 'FINNEY U1': ['Sirin Labs', 'Finney U1'], 'HYPER X BLADE': ['SKK Mobile', 'Hyper X Blade'], 'Elite 5.5L+': ['Sky Devices', 'Elite 5.5L+'], @@ -14191,6 +14632,8 @@ exports.ANDROID_MODELS = { 'sonim/XP7700': ['Sonim', 'XP7700'] }, + XP8800: ['Sonim', 'XP8800'], + 'OMS1 6': ['Sony Ericsson', 'A8i'], 'C[0-9]{4,4}!!': { @@ -14290,16 +14733,38 @@ exports.ANDROID_MODELS = { 'H82(16|66|76|96)!': ['Sony', 'Xperia XZ2'], 'H83(14|24)!': ['Sony', 'Xperia XZ2 Compact'], 'H84(16)!': ['Sony', 'Xperia XZ3'], - 'H84(41)!': ['Sony', 'Xperia XZ1 Compact'] + 'H84(41)!': ['Sony', 'Xperia XZ1 Compact'], + 'H94(36|93)!': ['Sony', 'Xperia XZ3'] }, 'I[0-9]{4,4}!!': { 'I31(13|23)!': ['Sony', 'Xperia 10'], 'I32(13|23)!': ['Sony', 'Xperia 10 Plus'], + 'I33(12)!': ['Sony', 'Xperia L3'], 'I41(13|93)!': ['Sony', 'Xperia 10'], - 'I42(13|93)!': ['Sony', 'Xperia 10 Plus'] + 'I42(13|93)!': ['Sony', 'Xperia 10 Plus'], + 'I43(12|32)!': ['Sony', 'Xperia L3'] + }, + + 'J[0-9]{4,4}!!': { + 'J81(10|70)!': ['Sony', 'Xperia 1'], + 'J82(10|70)!': ['Sony', 'Xperia 5'], + 'J91(10)!': ['Sony', 'Xperia 1'], + 'J92(10|60)!': ['Sony', 'Xperia 5'] }, + 'XQ-AT51': ['Sony', 'Xperia 1 II'], + 'XQ-AT52': ['Sony', 'Xperia 1 II'], + 'XQ-BC52': ['Sony', 'Xperia 1 III'], + 'XQ-BC72': ['Sony', 'Xperia 1 III'], + 'XQ-AS52': ['Sony', 'Xperia 5 II'], + 'XQ-BQ52': ['Sony', 'Xperia 5 III'], + 'XQ-AU52': ['Sony', 'Xperia 10 II'], + 'XQ-BT52': ['Sony', 'Xperia 10 III'], + 'XQ-AD51': ['Sony', 'Xperia L4'], + 'XQ-AD52': ['Sony', 'Xperia L4'], + 'XQ-BE52': ['Sony', 'Xperia Pro-I'], + 'E[0-9]{2,2}[a-z]!!': { 'E10(a|i|iv)!': ['Sony Ericsson', 'Xperia X10 Mini'], // Robyn 'E15(a|av|i|iv|i-o)?$!': ['Sony Ericsson', 'Xperia X8'], // Shakira @@ -14999,6 +15464,11 @@ exports.ANDROID_MODELS = { 'Tabra QAV801': ['Tabra', 'QAV801', DeviceType.TABLET], + T671H: ['TCL', '20 SE'], + T774H: ['TCL', '20L'], + T775H: ['TCL', '20L+'], + T790Y: ['TCL', '10'], + 'TCL!!': { 'TCL-309T': ['TCL', '309T'], 'TCL-550': ['TCL', '550'], @@ -15197,6 +15667,7 @@ exports.ANDROID_MODELS = { 'TECNO-J7': ['Tecno', 'J7'], 'TECNO J7': ['Tecno', 'J7'], 'TECNO-J8': ['Tecno', 'J8'], + 'TECNO KC6S': ['Tecno', 'Spark 4 Air'], 'TECNO L3': ['Tecno', 'L3'], 'TECNO-L5': ['Tecno', 'L5'], 'TECNO L6': ['Tecno', 'L6'], @@ -15300,6 +15771,8 @@ exports.ANDROID_MODELS = { 'G18mini(C5B9)': ['Teclast', 'G18 mini', DeviceType.TABLET], 'G18d 3G四核(D3A2)': ['Teclast', 'G18d', DeviceType.TABLET], 'G18d mini(FV2C)': ['Teclast', 'G18d mini', DeviceType.TABLET], + 'M40 EEA': ['Teclast', 'M40', DeviceType.TABLET], + 'M40(N9H3)': ['Teclast', 'M40', DeviceType.TABLET], 'P10HD??(E6NA)': ['Teclast', 'P10HD', DeviceType.TABLET], P11HD: ['Teclast', 'P11HD', DeviceType.TABLET], 'P11HD四核(G9X6)': ['Teclast', 'P11HD', DeviceType.TABLET], @@ -15307,6 +15780,7 @@ exports.ANDROID_MODELS = { 'P11HD四核(G9X7)': ['Teclast', 'P11HD', DeviceType.TABLET], 'P19HD(E1K3)': ['Teclast', 'P19HD', DeviceType.TABLET], 'P19HD(E1K5)': ['Teclast', 'P19HD', DeviceType.TABLET], + 'P20HD EEA': ['Teclast', 'P20HD', DeviceType.TABLET], 'P70 3G八核(C2B7)': ['Teclast', 'P70 3G', DeviceType.TABLET], 'P70h(A5C2)': ['Teclast', 'P70h', DeviceType.TABLET], P72: ['Teclast', 'P72', DeviceType.TABLET], @@ -15478,6 +15952,7 @@ exports.ANDROID_MODELS = { 'Telpad QS': ['Telpad', 'Quad S', DeviceType.TABLET], T3696: ['Telsda', 'T3696'], 'Tensent S9000': ['Tensent', 'S9000'], + 'Teracube 2e': ['Teracube', '2e'], 'Hudl HT7S3': ['Tesco', 'Hudl', DeviceType.TABLET], 'Hudl 2': ['Tesco', 'Hudl 2', DeviceType.TABLET], 'TM-3200R': ['teXet', 'TM-3200R'], @@ -15825,8 +16300,31 @@ exports.ANDROID_MODELS = { }, A6S: ['TWM', 'Amazing A6S'], + 'Armor 2': ['Ulefone', 'Armor 2'], + 'Armor 3W': ['Ulefone', 'Armor 3W'], + 'Armor 3WT': ['Ulefone', 'Armor 3WT'], + 'Ulefone Armor 5': ['Ulefone', 'Armor 5'], + 'Armor 5S': ['Ulefone', 'Armor 5S'], + 'Armor 6E': ['Ulefone', 'Armor 6E'], + 'Armor 7': ['Ulefone', 'Armor 7'], + 'Armor 7E': ['Ulefone', 'Armor 7E'], + 'Armor 8': ['Ulefone', 'Armor 8'], + 'Armor 9': ['Ulefone', 'Armor 9'], + 'Armor 9E': ['Ulefone', 'Armor 9E'], + 'Armor 10 5G': ['Ulefone', 'Armor 10'], + 'Armor 11 5G': ['Ulefone', 'Armor 11'], + 'Armor 11T 5G': ['Ulefone', 'Armor 11T'], + 'Armor X5': ['Ulefone', 'Armor X5'], + 'Armor X7': ['Ulefone', 'Armor X7'], + 'Armor X7 Pro': ['Ulefone', 'Armor X7 Pro'], + 'Armor X8': ['Ulefone', 'Armor X8'], + 'Power Armor 13': ['Ulefone', 'Power Armor 13'], 'Be Touch 2': ['Ulefone', 'Be Touch 2'], 'Ulefone Be Touch2': ['Ulefone', 'Be Touch 2'], + 'Note 7P': ['Ulefone', 'Note 7P'], + 'Note 8P': ['Ulefone', 'Note 8P'], + 'Note 9P': ['Ulefone', 'Note 9P'], + 'Note 11P': ['Ulefone', 'Note 11P'], TB100: ['Unitech', 'TB100', DeviceType.TABLET], M70014: ['United Star Technology', 'M70014', DeviceType.TABLET], QOOQ: ['Unowhy', 'QOOQ', DeviceType.TABLET], @@ -15836,6 +16334,7 @@ exports.ANDROID_MODELS = { 'UMI-R1': ['UMI', 'R1'], 'UMI-R1(TD)': ['UMI', 'R1'], 'UMI S1': ['UMI', 'S1'], + 'UMIDIGI X': ['UMI', 'X'], 'UMI X1': ['UMI', 'X1'], 'UMI X1S': ['UMI', 'X1s'], 'UMI X1-PRO': ['UMI', 'X1'], @@ -15858,9 +16357,17 @@ exports.ANDROID_MODELS = { 'UMI ZERO': ['UMI', 'Zero'] }, + 'A9 Pro': ['UMI', 'A9 Pro'], + 'A11 Pro Max': ['UMI', 'A11 Pro Max'], + BISON: ['UMI', 'Bison'], + 'BISON Pro': ['UMI', 'Bison Pro'], + 'BISON GT': ['UMI', 'Bison GT'], 'eMAX mini': ['UMI', 'eMax mini'], 'Plus E': ['UMI', 'Plus E'], + Jelly2: ['Unihertz', 'Jelly 2'], + 'Titan pocket': ['Unihertz', 'Titan Pocket'], U1203: ['Uniscope', 'U1203'], + 'KT-101-A': ['Uniscom', 'KT-101-A', DeviceType.TABLET], 'Unusual!!': { 'UNUSUAL U7X': ['Unusual', 'U7X', DeviceType.TABLET], @@ -16020,6 +16527,7 @@ exports.ANDROID_MODELS = { 'Venus V3 5580': ['Vestel', 'Venus V3 5580'], VSP250g: ['Vestel', 'Venus V5'], VSP250s: ['Vestel', 'Venus V5'], + 'Venus Z20': ['Vestel', 'Venus Z20'], VT6078: ['VIA', 'ALTA DS', DeviceType.SIGNAGE], 'victorys s8': ["Victory's", 'S8'], @@ -16168,6 +16676,7 @@ exports.ANDROID_MODELS = { 'vivo E1t': ['Vivo', 'E1t'], 'vivo E3': ['Vivo', 'E3'], 'vivo E5': ['Vivo', 'E5'], + 'vivo NEX S': ['Vivo', 'NEX S'], 'vivo S1': ['Vivo', 'S1'], 'vivo S3': ['Vivo', 'S3'], 'vivo S3+': ['Vivo', 'S3+'], @@ -16200,6 +16709,12 @@ exports.ANDROID_MODELS = { 'vivo 1611': ['Vivo', 'V5 Plus'], 'vivo 1718': ['Vivo', 'V7'], 'vivo 1716': ['Vivo', 'V7 Plus'], + 'vivo 1724': ['Vivo', 'Y71'], + 'vivo 1804': ['Vivo', 'V11 Pro'], + 'vivo 1805': ['Vivo', 'NEX'], + 'vivo 1816': ['Vivo', 'Y91'], + 'vivo 1818': ['Vivo', 'V15 Pro'], + 'vivo 1902': ['Vivo', 'Y17'], 'vivo X1': ['Vivo', 'X1'], 'vivo X1S': ['Vivo', 'X1S'], 'vivo X1St': ['Vivo', 'X1S'], @@ -16369,6 +16884,14 @@ exports.ANDROID_MODELS = { 'vivo Y937': ['Vivo', 'Y937'] }, + V1916A: ['Vivo', 'iQOO Pro'], + V2023: ['Vivo', 'V20 SE'], + V2028: ['Vivo', 'Y11s'], + V2041: ['Vivo', 'Y72'], + V2056A: ['Vivo', 'X60 Pro+'], + V2109: ['Vivo', 'Y33s'], + V2141A: ['Vivo', 'iQOO 8 Pro'], + VTAB1008: ['Vizio', 'VTAB1008', DeviceType.TABLET], VTAB3010: ['Vizio', 'VTAB3010', DeviceType.TABLET], VAP430: ['Vizio', 'Co-Star', DeviceType.TELEVISION, Flag.GOOGLETV], @@ -16630,15 +17153,20 @@ exports.ANDROID_MODELS = { FEVER: ['Wiko', 'Fever'], GETAWAY: ['Wiko', 'Getaway'], GOA: ['Wiko', 'Goa'], + HARRY: ['Wiko', 'Harry'], + 'W-V600': ['Wiko', 'Harry 2'], HIGHWAY: ['Wiko', 'Highway'], 'HIGHWAY PURE': ['Wiko', 'Highway Pure'], 'HIGHWAY SIGNS': ['Wiko', 'Highway Signs'], IGGY: ['Wiko', 'Iggy'], JIMMY: ['Wiko', 'Jimmy'], + 'W K300': ['Wiko', 'Jerry 3'], KITE: ['Wiko', 'Kite'], LENNY: ['Wiko', 'Lenny'], LENNY2: ['Wiko', 'Lenny 2'], LENNY3: ['Wiko', 'Lenny 3'], + Lenny4: ['Wiko', 'Lenny 4'], + 'W K400': ['Wiko', 'Lenny 5'], OZZY: ['Wiko', 'Ozzy'], PULP: ['Wiko', 'Pulp'], 'PULP 4G': ['Wiko', 'Pulp'], @@ -16655,12 +17183,29 @@ exports.ANDROID_MODELS = { SUBLIM: ['Wiko', 'Sublim'], SUNSET: ['Wiko', 'Sunset'], SUNSET2: ['Wiko', 'Sunset 2'], + 'U FEEL LITE': ['Wiko', 'U Feel Lite'], + 'U FEEL PRIME': ['Wiko', 'U Feel Prime'], + 'U PULSE LITE': ['Wiko', 'U Pulse Lite'], + View: ['Wiko', 'View'], + 'View XL': ['Wiko', 'View XL'], + 'W P200': ['Wiko', 'View Max'], + 'W C800': ['Wiko', 'View2'], + 'View2 Go': ['Wiko', 'View2 Go'], + 'W C860': ['Wiko', 'View2 Pro'], + 'View2 Plus': ['Wiko', 'View2 Plus'], + 'W-P311-EEA': ['Wiko', 'View3'], + 'W-V800-EEA': ['Wiko', 'View3 Lite'], + 'W-V830-EEA': ['Wiko', 'View4'], + 'W-V730-EEA': ['Wiko', 'View4 Lite'], + 'W-V851-EEA': ['Wiko', 'View5'], WAX: ['Wiko', 'Wax'], + 'WIM Lite': ['Wiko', 'Wim Lite'], 'Wileyfox Spark': ['Wileyfox', 'Spark'], 'Wileyfox Spark +': ['Wileyfox', 'Spark +'], 'Wileyfox Spark X': ['Wileyfox', 'Spark X'], 'Wileyfox Storm': ['Wileyfox', 'Storm'], 'Wileyfox Swift': ['Wileyfox', 'Swift'], + 'Swift 2': ['Wileyfox', 'Swift 2'], 'Swift 2 Plus': ['Wileyfox', 'Swift 2 Plus'], 'Swift 2 X': ['Wileyfox', 'Swift 2 X'], N5PRO2jingying: ['Window', 'N5 Pro 2', DeviceType.MEDIA], @@ -16754,6 +17299,8 @@ exports.ANDROID_MODELS = { 'wm8710-tvbox': ['WonderMedia', 'WM8710', DeviceType.TELEVISION], 'WM8850-mid': ['WonderMedia', 'WM8850', DeviceType.TABLET], PAD1001: ['Wortmann', 'TERRA MOBILE PAD 1001', DeviceType.TABLET], + 'TERRA PAD 1004': ['Wortmann', 'TERRA PAD 1004', DeviceType.TABLET], + 'TERRA PAD 1005': ['Wortmann', 'TERRA PAD 1005', DeviceType.TABLET], 'Woxter!!': { 'Woxter android box 500': ['Woxter', 'Android TV 500', DeviceType.TELEVISION], @@ -16858,9 +17405,22 @@ exports.ANDROID_MODELS = { 'MI 8 SE': ['Xiaomi', 'Mi 8 SE'], 'MI 8 UD': ['Xiaomi', 'Mi 8 UD'], 'MI 8 Lite': ['Xiaomi', 'Mi 8 Lite'], + 'MI 8 Pro': ['Xiaomi', 'Mi 8 Pro'], 'MI 9': ['Xiaomi', 'Mi 9'], - 'Mi 9T Pro': ['Xiaomi', 'Mi 9T Pro'], + 'Mi 9 Lite': ['Xiaomi', 'Mi 9 Lite'], 'Mi9 Pro 5G': ['Xiaomi', 'Mi 9 Pro'], + 'Mi 9 SE': ['Xiaomi', 'Mi 9 SE'], + 'Mi 9T': ['Xiaomi', 'Mi 9T'], + 'Mi 9T Pro': ['Xiaomi', 'Mi 9T Pro'], + 'Mi 10': ['Xiaomi', 'Mi 10'], + 'Mi 10 Pro': ['Xiaomi', 'Mi 10 Pro'], + 'Mi 10 Lite 5G': ['Xiaomi', 'Mi 10 Lite'], + 'Mi 10T Lite': ['Xiaomi', 'Mi 10T Lite'], + 'Mi 11': ['Xiaomi', 'Mi 11'], + 'Mi 11 Lite 5G': ['Xiaomi', 'Mi 11 Lite'], + 'Mi Note 10': ['Xiaomi', 'Mi Note 10'], + 'Mi Note 10 Lite': ['Xiaomi', 'Mi Note 10 Lite'], + 'Mi Note 10 Pro': ['Xiaomi', 'Mi Note 10 Pro'], '(Xiaomi|Xiaomi Mi|MI) Note!!': { '(Xiaomi|Xiaomi Mi|MI) Note (LTE|4G)$!': ['Xiaomi', 'Mi Note'], @@ -16876,6 +17436,11 @@ exports.ANDROID_MODELS = { '(Xiaomi )?(MI )?MIX$!': ['Xiaomi', 'Mi MIX'], '(Xiaomi )?(MI )?MIX 2$!': ['Xiaomi', 'Mi MIX 2'], '(Xiaomi )?(MI )?MIX 2S$!': ['Xiaomi', 'Mi MIX 2S'], + 'MIX 3': ['Xiaomi', 'Mi MIX 3'], + 'Mi MIX 3': ['Xiaomi', 'Mi MIX 3'], + 'Mi MIX 3 5G': ['Xiaomi', 'Mi MIX 3'], + + 'MI PLAY': ['Xiaomi', 'Mi Play'], '(Xiaomi )?20!!': { '(Xiaomi )?20130(61)!': ['Xiaomi', 'Mi 3'], @@ -16904,15 +17469,23 @@ exports.ANDROID_MODELS = { '(Xiaomi )?(Redmi|HM) ?5$!': ['Xiaomi', 'Redmi 5'], '(Xiaomi )?(Redmi|HM) ?5 Plus!': ['Xiaomi', 'Redmi 5 Plus'], '(Xiaomi )?(Redmi|HM) ?5A!': ['Xiaomi', 'Redmi 5A'], + '(Xiaomi )?(Redmi|HM) ?6$!': ['Xiaomi', 'Redmi 6'], '(Xiaomi )?(Redmi|HM) ?6A!': ['Xiaomi', 'Redmi 6A'], '(Xiaomi )?(Redmi|HM) ?6 Pro!': ['Xiaomi', 'Redmi 6 Pro'], '(Xiaomi )?(Redmi|HM) ?7$!': ['Xiaomi', 'Redmi 7'], '(Xiaomi )?(Redmi|HM) ?7A!': ['Xiaomi', 'Redmi 7A'], '(Xiaomi )?(Redmi|HM) ?8$!': ['Xiaomi', 'Redmi 8'], + '(Xiaomi )?(Redmi|HM) ?8A!': ['Xiaomi', 'Redmi 8A'], + '(Xiaomi )?(Redmi|HM) ?9C!': ['Xiaomi', 'Redmi 9C'], + '(Xiaomi )?(Redmi|HM) ?9T!': ['Xiaomi', 'Redmi 9T'], + '(Xiaomi )?Redmi[ -]K20$!': ['Xiaomi', 'Redmi K20'], '(Xiaomi )?Redmi[ -]K20 Pro!': ['Xiaomi', 'Redmi K20 Pro'], + '(Xiaomi )?Redmi[ -]K30 5G!': ['Xiaomi', 'Redmi K30'], + '(Xiaomi )?Redmi[ -]K30 Pro!': ['Xiaomi', 'Redmi K30 Pro'], '(Xiaomi )?Redmi[ -]S2$!': ['Xiaomi', 'Redmi S2'], '(Xiaomi )?Redmi[ -]Y1$!': ['Xiaomi', 'Redmi Y1'], '(Xiaomi )?Redmi[ -]Y1 Lite!': ['Xiaomi', 'Redmi Y1 Lite'], + '(Xiaomi )?Redmi[ -]Y2$!': ['Xiaomi', 'Redmi Y2'], '(Xiaomi )?Redmi[ -]Go$!': ['Xiaomi', 'Redmi Go'] }, @@ -16926,9 +17499,15 @@ exports.ANDROID_MODELS = { '(Xiaomi )?Redmi[ -]Note ?5$!': ['Xiaomi', 'Redmi Note 5'], '(Xiaomi )?Redmi[ -]Note ?5A!': ['Xiaomi', 'Redmi Note 5A'], '(Xiaomi )?Redmi[ -]Note 5 Pro!': ['Xiaomi', 'Redmi Note 5 Pro'], + '(Xiaomi )?Redmi[ -]Note 6 Pro!': ['Xiaomi', 'Redmi Note 6 Pro'], '(Xiaomi )?Redmi[ -]Note 7$!': ['Xiaomi', 'Redmi Note 7'], '(Xiaomi )?Redmi[ -]Note 7 Pro!': ['Xiaomi', 'Redmi Note 7 Pro'], - '(Xiaomi )?Redmi[ -]Note 8$!': ['Xiaomi', 'Redmi Note 8'] + '(Xiaomi )?Redmi[ -]Note 8$!': ['Xiaomi', 'Redmi Note 8'], + '(Xiaomi )?Redmi[ -]Note 8 Pro!': ['Xiaomi', 'Redmi Note 8 Pro'], + '(Xiaomi )?Redmi[ -]Note 8T!': ['Xiaomi', 'Redmi Note 8T'], + '(Xiaomi )?Redmi[ -]Note 9$!': ['Xiaomi', 'Redmi Note 9'], + '(Xiaomi )?Redmi[ -]Note 9S!': ['Xiaomi', 'Redmi Note 9S'], + '(Xiaomi )?Redmi[ -]Note 9 Pro!': ['Xiaomi', 'Redmi Note 9 Pro'] }, '(Xiaomi |HM)?20!!': { @@ -16951,12 +17530,79 @@ exports.ANDROID_MODELS = { '(Xiaomi |HM)?20160(51)!': ['Xiaomi', 'Redmi Note 4'] }, + '21061119DG': ['Xiaomi', 'Redmi 10'], + '2201117TY': ['Xiaomi', 'Redmi Note 11'], + + '2107113SG': ['Xiaomi', 'Mi 11T Pro'], + '21081111RG': ['Xiaomi', 'Mi 11T'], + '2201122G': ['Xiaomi', 'Mi 12 Pro'], + '2201123G': ['Xiaomi', 'Mi 12'], + + '21091116AG': ['Xiaomi', 'Poco M4 Pro'], + '2201116PG': ['Xiaomi', 'Poco X4 Pro'], + + M1908C3JGG: ['Xiaomi', 'Redmi Note 8 (2021)'], + M2002J9G: ['Xiaomi', 'Mi 10 Lite'], + M2003J15SC: ['Xiaomi', 'Redmi Note 9'], + M2004J19C: ['Xiaomi', 'Redmi 9'], + M2004J7BC: ['Xiaomi', 'Redmi 10X Pro'], + M2006C3LG: ['Xiaomi', 'Redmi 9A'], + M2006C3LVG: ['Xiaomi', 'Redmi 9AT'], + M2006C3MG: ['Xiaomi', 'Redmi 9C'], + M2006C3MII: ['Xiaomi', 'Redmi 9'], + M2006C3MNG: ['Xiaomi', 'Redmi 9C'], + M2007J17G: ['Xiaomi', 'Mi 10T Lite'], + M2007J1SC: ['Xiaomi', 'Mi 10 Ultra'], + M2007J20CG: ['Xiaomi', 'Poco X3'], + M2007J22G: ['Xiaomi', 'Redmi Note 9T'], + M2007J3SG: ['Xiaomi', 'Mi 10T Pro'], + M2007J3SY: ['Xiaomi', 'Mi 10T'], + M2010J19CG: ['Xiaomi', 'Poco M3'], + M2010J19SG: ['Xiaomi', 'Redmi 9T'], + M2010J19SY: ['Xiaomi', 'Redmi 9T'], + M2011K2C: ['Xiaomi', 'Mi 11'], + M2011K2G: ['Xiaomi', 'Mi 11'], + M2012K11AG: ['Xiaomi', 'Poco F3'], + M2012K11AC: ['Xiaomi', 'Redmi K40'], + M2012K10C: ['Xiaomi', 'Redmi K40 Gaming'], + M2012K11G: ['Xiaomi', 'Mi 11i'], + M2101K6G: ['Xiaomi', 'Redmi Note 10 Pro'], + M2101K6P: ['Xiaomi', 'Redmi Note 10 Pro'], + M2101K7AG: ['Xiaomi', 'Redmi Note 10'], + M2101K7BG: ['Xiaomi', 'Redmi Note 10s'], + M2101K7BNY: ['Xiaomi', 'Redmi Note 10s'], + M2101K9AG: ['Xiaomi', 'Mi 11 Lite'], + M2101K9C: ['Xiaomi', 'Mi 11 Lite'], + M2101K9G: ['Xiaomi', 'Mi 11 Lite'], + M2102J20SG: ['Xiaomi', 'Poco X3 Pro'], + M2102J20SI: ['Xiaomi', 'Poco X3 Pro'], + M2102K1AC: ['Xiaomi', 'Mi 11 Pro'], + M2102K1C: ['Xiaomi', 'Mi 11 Ultra'], + M2102K1G: ['Xiaomi', 'Mi 11 Ultra'], + M2103K19G: ['Xiaomi', 'Redmi Note 10'], + M2103K19PG: ['Xiaomi', 'Poco M3 Pro'], + + '(Xiaomi |HM)?21!!': { + '(Xiaomi |HM)?21091(19)!': ['Xiaomi', 'Mi 11 Lite'] + }, + 'POCOPHONE F1': ['Xiaomi', 'Pocophone F1'], + 'POCO F1': ['Xiaomi', 'Pocophone F1'], + 'POCO F2 Pro': ['Xiaomi', 'Poco F2 Pro'], + 'POCO X2': ['Xiaomi', 'Poco X2'], + 'POCO X3 NFC': ['Xiaomi', 'Poco X3'], + 'POCO X3 Pro': ['Xiaomi', 'Poco X3 Pro'], + + 'SKR-H0': ['Xiaomi', 'Black Shark'], + 'DLT-H0': ['Xiaomi', 'Black Shark 2 Pro'], + 'SHARK PRS-H0': ['Xiaomi', 'Black Shark 4'], 'Xiaomi MDT2!': ['Xiaomi', 'Mi 5x'], 'Xiaomi MCT1!': ['Xiaomi', 'Mi 6'], 'Xiaomi MAT136!': ['Xiaomi', 'Redmi 4X'], 'Xiaomi MBT6A5!': ['Xiaomi', 'Redmi Note 4X'], + 'Xiaomi 11 Lite 5G NE': ['Xiaomi', '11 Lite'], + 'Xiaomi 11T Pro': ['Xiaomi', '11T Pro'], aqua: ['Xiaomi', 'Mi 4s'], capricorn: ['Xiaomi', 'Mi 5s'], @@ -16987,9 +17633,13 @@ exports.ANDROID_MODELS = { '(Xiaomi|Xiaomi Mi|MI) Pad!!': { '(Xiaomi|Xiaomi Mi|MI) Pad$!': ['Xiaomi', 'Mi Pad', DeviceType.TABLET], '(Xiaomi|Xiaomi Mi|MI) Pad 2!': ['Xiaomi', 'Mi Pad 2', DeviceType.TABLET], - '(Xiaomi|Xiaomi Mi|MI) Pad 3!': ['Xiaomi', 'Mi Pad 3', DeviceType.TABLET] + '(Xiaomi|Xiaomi Mi|MI) Pad 3!': ['Xiaomi', 'Mi Pad 3', DeviceType.TABLET], + '(Xiaomi|Xiaomi Mi|MI) Pad 4$!': ['Xiaomi', 'Mi Pad 4', DeviceType.TABLET], + '(Xiaomi|Xiaomi Mi|MI) Pad 4 Plus!': ['Xiaomi', 'Mi Pad 4 Plus', DeviceType.TABLET] }, + '21051182G': ['Xiaomi', 'Mi Pad 5', DeviceType.TABLET], + '(Xiaomi|Xiaomi Mi|MI)Box!!': { 'MiBOX iCNTV': ['Xiaomi', 'Mi Box 1', DeviceType.TELEVISION], '(Xiaomi|Xiaomi Mi|MI)Box1S!': ['Xiaomi', 'Mi Box 1S', DeviceType.TELEVISION], @@ -17558,7 +18208,10 @@ exports.ANDROID_MODELS = { NX563J: ['ZTE', 'Nubia Z17'], NX569H: ['ZTE', 'Nubia Z17 Mini'], NX513J: ['ZTE', 'Nubia My Prague'], - NX601J: ['ZTE', 'Nubia X6'] + NX601J: ['ZTE', 'Nubia X6'], + NX659J: ['ZTE', 'Nubia Red Magic'], + NX629J: ['ZTE', 'Nubia Red Magic 3'], + NX669J: ['ZTE', 'Nubia Red Magic 6'] }, 'ZTE K813': ['ZTE', 'K813'], @@ -18221,6 +18874,8 @@ exports.ANDROID_MODELS = { 'ZTE A2017': ['ZTE', 'Axon 7'], 'ZTE A2017G': ['ZTE', 'Axon 7'], 'ZTE A2017U': ['ZTE', 'Axon 7'], + 'ZTE A2020G Pro': ['ZTE', 'Axon 10 Pro'], + 'ZTE A2022PG': ['ZTE', 'Axon 30 Ultra'], 'ZTE B2015': ['ZTE', 'Axon Mini'], 'ZTE B2016': ['ZTE', 'Axon Mini'], 'ZTE B2017': ['ZTE', 'Axon Mini'], @@ -18464,6 +19119,7 @@ exports.ANDROID_MODELS = { 'GM 6': ['General Mobile', 'GM6'], 'GM 6 d': ['General Mobile', 'GM6'], 'GM 8 d': ['General Mobile', 'GM8'], + 'GM8 go': ['General Mobile', 'GM8 Go'], 'GM Discovery tab 8': ['General Mobile', 'tab 8', DeviceType.TABLET], etab5: ['General Mobile', 'Etab 5', DeviceType.TABLET], @@ -18867,6 +19523,35 @@ exports.ANDROID_MODELS = { }, 'Z4 mini': ['Q-Mobile', 'Noir Quatro Z4 mini'], + + RMX1911: ['Realme', '5'], + RMX1931: ['Realme', 'X2 Pro'], + RMX1971: ['Realme', '5 Pro'], + RMX1993: ['Realme', 'X2'], + RMX2001: ['Realme', '6'], + RMX2002: ['Realme', '6i'], + RMX2020: ['Realme', 'C3'], + RMX2030: ['Realme', '5i'], + RMX2063: ['Realme', '6 Pro'], + RMX2075: ['Realme', 'X50 Pro'], + RMX2086: ['Realme', 'X3 SuperZoom'], + RMX2111: ['Realme', '7'], + RMX2144: ['Realme', 'X50'], + RMX2155: ['Realme', '7'], + RMX2170: ['Realme', '7 Pro'], + RMX2185: ['Realme', 'C11'], + RMX2202: ['Realme', 'GT'], + RMX3081: ['Realme', '8 Pro'], + RMX3085: ['Realme', '8'], + RMX3201: ['Realme', 'C21'], + RMX3241: ['Realme', '8 5G'], + RMX3242: ['Realme', 'Narzo 30'], + RMX3263: ['Realme', 'C21Y'], + RMX3301: ['Realme', 'GT 2 Pro'], + RMX3311: ['Realme', 'GT 2'], + RMX3363: ['Realme', 'GT Master'], + RMX3370: ['Realme', 'GT Neo2'], + 'Soshphone 4G': ['SoshPhone', '4G'], AQT80: ['Sprint', 'Slate 8', DeviceType.TABLET], @@ -19068,7 +19753,9 @@ exports.ANDROID_MODELS = { 'VFD 1100': ['Vodafone', 'Tab Mini 7', DeviceType.TABLET], 'VFD 1300': ['Vodafone', 'Tab N8', DeviceType.TABLET], 'VFD 1400': ['Vodafone', 'Tab Prime 7', DeviceType.TABLET], - VFD1400: ['Vodafone', 'Tab Prime 7', DeviceType.TABLET] + VFD1400: ['Vodafone', 'Tab Prime 7', DeviceType.TABLET], + + TC26: ['Zebra', 'TC26', DeviceType.POS] }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-ios.js b/data/models-ios.js index 3d4a389..142fed1 100644 --- a/data/models-ios.js +++ b/data/models-ios.js @@ -56,6 +56,16 @@ exports.IOS_MODELS = { 'iPhone12,1': ['Apple', 'iPhone 11', DeviceType.MOBILE], 'iPhone12,3': ['Apple', 'iPhone 11 Pro', DeviceType.MOBILE], 'iPhone12,5': ['Apple', 'iPhone 11 Pro Max', DeviceType.MOBILE], + 'iPhone12,8': ['Apple', 'iPhone SE (2nd gen)', DeviceType.MOBILE], + 'iPhone13,1': ['Apple', 'iPhone 12 Mini', DeviceType.MOBILE], + 'iPhone13,2': ['Apple', 'iPhone 12', DeviceType.MOBILE], + 'iPhone13,3': ['Apple', 'iPhone 12 Pro', DeviceType.MOBILE], + 'iPhone13,4': ['Apple', 'iPhone 12 Pro Max', DeviceType.MOBILE], + 'iPhone14,2': ['Apple', 'iPhone 13 Pro', DeviceType.MOBILE], + 'iPhone14,3': ['Apple', 'iPhone 13 Pro Max', DeviceType.MOBILE], + 'iPhone14,4': ['Apple', 'iPhone 13 Mini', DeviceType.MOBILE], + 'iPhone14,5': ['Apple', 'iPhone 13', DeviceType.MOBILE], + 'iPod1,1': ['Apple', 'iPod touch', DeviceType.MEDIA], 'iPod2,1': ['Apple', 'iPod touch (2nd gen)', DeviceType.MEDIA], 'iPod3,1': ['Apple', 'iPod touch (3rd gen)', DeviceType.MEDIA], @@ -113,10 +123,30 @@ exports.IOS_MODELS = { 'iPad8,6': ['Apple', 'iPad Pro (12.9″, 3rd gen)', DeviceType.TABLET], 'iPad8,7': ['Apple', 'iPad Pro (12.9″, 3rd gen)', DeviceType.TABLET], 'iPad8,8': ['Apple', 'iPad Pro (12.9″, 3rd gen)', DeviceType.TABLET], + 'iPad8,9': ['Apple', 'iPad Pro (11.0″, 4th gen)', DeviceType.TABLET], + 'iPad8,10': ['Apple', 'iPad Pro (11.0″, 4th gen)', DeviceType.TABLET], + 'iPad8,11': ['Apple', 'iPad Pro (12.9″, 4th gen)', DeviceType.TABLET], + 'iPad8,12': ['Apple', 'iPad Pro (12.9″, 4th gen)', DeviceType.TABLET], 'iPad11,1': ['Apple', 'iPad mini (5th gen)', DeviceType.TABLET], 'iPad11,2': ['Apple', 'iPad mini (5th gen)', DeviceType.TABLET], 'iPad11,3': ['Apple', 'iPad Air (3rd gen)', DeviceType.TABLET], - 'iPad11,4': ['Apple', 'iPad Air (3rd gen)', DeviceType.TABLET] + 'iPad11,4': ['Apple', 'iPad Air (3rd gen)', DeviceType.TABLET], + 'iPad11,6': ['Apple', 'iPad (8th gen)', DeviceType.TABLET], + 'iPad11,7': ['Apple', 'iPad (8th gen)', DeviceType.TABLET], + 'iPad12,1': ['Apple', 'iPad (9th gen)', DeviceType.TABLET], + 'iPad12,2': ['Apple', 'iPad (9th gen)', DeviceType.TABLET], + 'iPad14,1': ['Apple', 'iPad mini (6th gen)', DeviceType.TABLET], + 'iPad14,2': ['Apple', 'iPad mini (6th gen)', DeviceType.TABLET], + 'iPad13,1': ['Apple', 'iPad Air (4th gen)', DeviceType.TABLET], + 'iPad13,2': ['Apple', 'iPad Air (4th gen)', DeviceType.TABLET], + 'iPad13,4': ['Apple', 'iPad Pro (11.0″, 5th gen)', DeviceType.TABLET], + 'iPad13,5': ['Apple', 'iPad Pro (11.0″, 5th gen)', DeviceType.TABLET], + 'iPad13,6': ['Apple', 'iPad Pro (11.0″, 5th gen)', DeviceType.TABLET], + 'iPad13,7': ['Apple', 'iPad Pro (11.0″, 5th gen)', DeviceType.TABLET], + 'iPad13,8': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], + 'iPad13,9': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], + 'iPad13,10': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], + 'iPad13,11': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET] }; /* This file is automatically generated, do not edit manually! */ diff --git a/package.json b/package.json index 062605d..295226f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "which-browser", - "version": "0.6.1", + "version": "0.7.0", "description": "Browser sniffing tool and UA parser. Browser sniffing gone too far — A useragent parser library for JavaScript", "main": "src/Parser.js", "types": "which-browser.d.ts", diff --git a/src/Analyser/Camouflage.js b/src/Analyser/Camouflage.js index 4ebada1..fb2c3fc 100644 --- a/src/Analyser/Camouflage.js +++ b/src/Analyser/Camouflage.js @@ -99,7 +99,7 @@ class Camouflage { if (this.data.isBrowser('Chrome')) { if ( /(?:Chrome|CrMo|CriOS)\//u.test(ua) && - !/(?:Chrome|CrMo|CriOS)\/([0-9]{1,3}\.[0-9]\.[0-9]{3,4}\.[0-9]+)/u.test(ua) + !/(?:Chrome|CrMo|CriOS)\/([0-9]{1,3}\.[0-9]\.(0\.0|[0-9]{3,4}\.[0-9]+))/u.test(ua) ) { this.data.features.push('wrongVersion'); this.data.camouflage = true; diff --git a/src/Analyser/Corrections.js b/src/Analyser/Corrections.js index a17df6f..68aadef 100644 --- a/src/Analyser/Corrections.js +++ b/src/Analyser/Corrections.js @@ -93,7 +93,7 @@ class Corrections { static hideBrowserOnDeviceTypeGaming() { if ( this.data.device.model && - this.data.device.model === 'Playstation 2' && + this.data.device.model === 'PlayStation 2' && this.data.browser.name === 'Internet Explorer' ) { this.data.browser.reset(); diff --git a/src/Analyser/Header/Useragent/Browser.js b/src/Analyser/Header/Useragent/Browser.js index 4ba0b32..8076723 100644 --- a/src/Analyser/Header/Useragent/Browser.js +++ b/src/Analyser/Header/Useragent/Browser.js @@ -128,6 +128,7 @@ class Browser { this.data.browser.type = Constants.browserType.BROWSER; this.data.browser.stock = false; + let reduced = false; let version = ''; if ((match = /(?:Chrome|CrMo|CriOS)\/([0-9.]*)/u.exec(ua))) { version = match[1]; @@ -135,17 +136,25 @@ class Browser { if ((match = /Browser\/Chrome([0-9.]*)/u.exec(ua))) { version = match[1]; } + + if ((match = /Chrome\/([789][0-9]|[1-9][0-9][0-9])\.0\.0\.0 /u.exec(ua))) { + reduced = true; + } this.data.browser.version = new Version({value: version}); if (this.data.os.name && this.data.os.name === 'Android') { - const channel = Chrome.getChannel('mobile', this.data.browser.version.value); - - if (channel === 'stable') { + if (reduced) { this.data.browser.version.details = 1; - } else if (channel === 'beta') { - this.data.browser.channel = 'Beta'; } else { - this.data.browser.channel = 'Dev'; + const channel = Chrome.getChannel('mobile', this.data.browser.version.value); + + if (channel === 'stable') { + this.data.browser.version.details = 1; + } else if (channel === 'beta') { + this.data.browser.channel = 'Beta'; + } else { + this.data.browser.channel = 'Dev'; + } } /* Webview for Android 4.4 and higher */ @@ -293,18 +302,22 @@ class Browser { this.data.device.identified |= Constants.id.PATTERN; this.data.device.type = Constants.deviceType.DESKTOP; } else { - const channel = Chrome.getChannel('desktop', version); + if (reduced) { + this.data.browser.version.details = 1; + } else { + const channel = Chrome.getChannel('desktop', version); - if (channel === 'stable') { - if (version.split('.')[1] === '0') { - this.data.browser.version.details = 1; + if (channel === 'stable') { + if (version.split('.')[1] === '0') { + this.data.browser.version.details = 1; + } else { + this.data.browser.version.details = 2; + } + } else if (channel === 'beta') { + this.data.browser.channel = 'Beta'; } else { - this.data.browser.version.details = 2; + this.data.browser.channel = 'Dev'; } - } else if (channel === 'beta') { - this.data.browser.channel = 'Beta'; - } else { - this.data.browser.channel = 'Dev'; } } @@ -410,7 +423,9 @@ class Browser { if ( this.data.device.model && - (this.data.device.model === 'Xbox 360' || this.data.device.model === 'Xbox One') + (this.data.device.model === 'Xbox 360' || + this.data.device.model === 'Xbox One' || + this.data.device.model === 'Xbox Series X') ) { this.data.browser.name = 'Internet Explorer'; } @@ -1452,7 +1467,7 @@ class Browser { if (['ACCESS/NFPS', 'SUNSOFT/EnjoyMagic'].includes(match[1])) { this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation 2', + model: 'PlayStation 2', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); @@ -2085,7 +2100,7 @@ class Browser { static detectMobileBrowsers(ua) { if ( - !/(Ninesky|Skyfire|Dolphin|QQ|360|QHBrowser|Mercury|iBrowser|Puffin|MiniB|MxNitro|Sogou|Xiino|Palmscape|WebPro|Vision|MiuiBrowser)/iu.test( + !/(Huawei|Ninesky|Skyfire|Dolphin|QQ|360|QHBrowser|Mercury|iBrowser|Puffin|MiniB|MxNitro|Sogou|Xiino|Palmscape|WebPro|Vision|MiuiBrowser)/iu.test( ua ) ) { @@ -2093,6 +2108,14 @@ class Browser { } let match; + + /* Huawei Browser */ + if ((match = /HuaweiBrowser\/([0-9.]*)/u.exec(ua))) { + this.data.browser.name = 'Huawei Browser'; + this.data.browser.version = new Version({value: match[1], details: 2}); + this.data.browser.type = Constants.browserType.BROWSER; + } + /* Xiaomi MIUI Browser */ if ((match = /MiuiBrowser\/([0-9.]*)/u.exec(ua))) { this.data.browser.name = 'MIUI Browser'; @@ -2544,7 +2567,7 @@ class Browser { if (/SPS/u.test(ua)) { this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation 2', + model: 'PlayStation 2', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); diff --git a/src/Analyser/Header/Useragent/Device/Gaming.js b/src/Analyser/Header/Useragent/Device/Gaming.js index 586bc7d..44d77e9 100644 --- a/src/Analyser/Header/Useragent/Device/Gaming.js +++ b/src/Analyser/Header/Useragent/Device/Gaming.js @@ -124,7 +124,7 @@ class Gaming { this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation Portable', + model: 'PlayStation Portable', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.PORTABLE, }); @@ -138,25 +138,25 @@ class Gaming { this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation Vita', + model: 'PlayStation Vita', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.PORTABLE, }); if (/VTE\//u.test(ua)) { - this.data.device.model = 'Playstation TV'; + this.data.device.model = 'PlayStation TV'; this.data.device.subtype = Constants.deviceSubType.CONSOLE; } } /* PlayStation 2 */ - if (/Playstation2/u.test(ua) || /\(PS2/u.test(ua)) { + if (/PlayStation2/iu.test(ua) || /\(PS2/u.test(ua)) { this.data.os.reset(); this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation 2', + model: 'PlayStation 2', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); @@ -176,7 +176,7 @@ class Gaming { this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation 3', + model: 'PlayStation 3', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); @@ -190,28 +190,30 @@ class Gaming { this.data.device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation 4', + model: 'PlayStation 4', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); } - } - - /* Microsoft Xbox */ - static detectXbox(ua) { - /* Xbox 360 */ + /* PlayStation 5 */ - if (/Xbox\)$/u.test(ua)) { + if (/PlayStation 5/iu.test(ua) || /\(PS5/u.test(ua)) { this.data.os.reset(); + this.data.os.identifyVersion(/PlayStation 5 ([0-9.]*)/u, ua); + this.data.device.setIdentification({ - manufacturer: 'Microsoft', - model: 'Xbox 360', + manufacturer: 'Sony', + model: 'PlayStation 5', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); } + } + + /* Microsoft Xbox */ + static detectXbox(ua) { /* Xbox One */ if (/Xbox One\)/u.test(ua)) { @@ -230,6 +232,26 @@ class Gaming { type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); + + /* Xbox Series X */ + } else if (/Xbox Series X\)/u.test(ua)) { + this.data.os.reset(); + this.data.device.setIdentification({ + manufacturer: 'Microsoft', + model: 'Xbox Series X', + type: Constants.deviceType.GAMING, + subtype: Constants.deviceSubType.CONSOLE, + }); + + /* Xbox 360 */ + } else if (/Xbox\)$/u.test(ua)) { + this.data.os.reset(); + this.data.device.setIdentification({ + manufacturer: 'Microsoft', + model: 'Xbox 360', + type: Constants.deviceType.GAMING, + subtype: Constants.deviceSubType.CONSOLE, + }); } } diff --git a/src/Analyser/Header/Useragent/Os.js b/src/Analyser/Header/Useragent/Os.js index 02736ec..f88dea7 100644 --- a/src/Analyser/Header/Useragent/Os.js +++ b/src/Analyser/Header/Useragent/Os.js @@ -288,6 +288,10 @@ class Os { if ((match = /;\+? ?(?:\*\*)?([^;]*[^;\s]);?\s+(?:BUILD|Build|build)/u.exec(ua))) { candidates.push(match[1]); } + } else if ((match = /\(Linux; Android [0-9\.]+; ([^\/]+)(; wv)?\) AppleWebKit/u.exec(ua))) { + /* New style minimal Android useragent string */ + + candidates.push(match[1]); } else if (/Release\//iu.test(ua)) { /* WAP style useragent strings */ const Useragent = require('../../Header/Useragent.js'); @@ -315,7 +319,7 @@ class Os { /* Old Android useragent strings */ if ( - (match = /Linux; (?:arm; |arm_64; )?(?:U; )?Android [^;]+; (?:[a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?; )?(?:[^;]+; ?)?([^)\/;]+)\)/u.exec( + (match = /Linux; (?:arm; |arm_64; )?(?:U; )?Android [^;]+; (?:[a-zA-Z][a-zA-Z](?:[-_][a-zA-Z][a-zA-Z])?; )?(?:[^;]+; ?)?([^\/;]+)\) /u.exec( ua )) ) { @@ -348,12 +352,22 @@ class Os { continue; } + /* Ignore "K" or "Unspecified Device" as a device, as it is a dummy value used by Chrome UA reduction */ + + if (candidates[c] == 'K' || candidates[c] == 'Unspecified Device') { + candidates.splice(c, 1); + continue; + } + candidates[c] = candidates[c].replace(/^[a-zA-Z][a-zA-Z][-_][a-zA-Z][a-zA-Z]\s+/u, ''); candidates[c] = candidates[c].replace( /(.*) - [0-9\.]+ - (?:with Google Apps - )?API [0-9]+ - [0-9]+x[0-9]+/, '$1' ); candidates[c] = candidates[c].replace(/^sprd-/u, ''); + candidates[c] = candidates[c].replace(/^HarmonyOS; /u, ''); + candidates[c] = candidates[c].replace(/; GMSCore.*/u, ''); + candidates[c] = candidates[c].replace(/; HMSCore.*/u, ''); } candidates = [...new Set(candidates)]; @@ -442,6 +456,17 @@ class Os { } } + /* Harmony OS */ + + if ((match = /HarmonyOS/u.exec(ua))) { + this.data.os.name = 'Harmony OS'; + this.data.os.version = new Version(); + + if ((match = /; Android ([0-9\.]+);/u.exec(ua))) { + this.data.os.family = new Family({name: 'Android', version: new Version({value: match[1], details: 3})}); + } + } + /* Aliyun OS */ if (/Aliyun/u.test(ua) || /YunOs/iu.test(ua)) { @@ -1635,7 +1660,7 @@ class Os { let match; if ((match = /(?:web|hpw)OS\/(?:HP webOS )?([0-9.]*)/u.exec(ua))) { this.data.os.name = 'webOS'; - this.data.os.version = new Version({value: match[1], details: 2}); + this.data.os.version = new Version({value: match[1]}); this.data.device.type = /Tablet/iu.test(ua) ? Constants.deviceType.TABLET : Constants.deviceType.MOBILE; this.data.device.generic = false; } diff --git a/src/data/Applications.js b/src/data/Applications.js index 8513d92..13e8088 100644 --- a/src/data/Applications.js +++ b/src/data/Applications.js @@ -91,6 +91,10 @@ class Applications { * @return {Browser} */ static identifyBot(ua = '') { + if (!ua) { + return; + } + if (ua.match(Applications.BOTS_REGEX)) { for (let item of Applications.BOTS) { let match; diff --git a/src/model/Version.js b/src/model/Version.js index 08d4b28..63eb941 100644 --- a/src/model/Version.js +++ b/src/model/Version.js @@ -71,7 +71,7 @@ class Version extends Base { * @return {object} */ getParts() { - const parts = this.value.split('.'); + const parts = this.value ? this.value.split('.') : []; return { major: Number(parts[0] || 0), minor: Number(parts[1] || 0), diff --git a/test/data/bots/generic.yaml b/test/data/bots/generic.yaml index 6cc74b2..666c2b0 100644 --- a/test/data/bots/generic.yaml +++ b/test/data/bots/generic.yaml @@ -1,1022 +1,1000 @@ -- headers: "User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.0" - result: { browser: { name: Bing, version: "1.1" }, device: { type: bot } } - readable: "Bing 1.1" -- headers: "User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.4.5.3000 Firefox/38" - result: { browser: { name: Bing, version: "1.1" }, device: { type: bot } } - readable: "Bing 1.1" -- headers: "User-Agent: 360spider-image" - result: { browser: { name: 360spider }, device: { type: bot } } - readable: 360spider -- headers: "User-Agent: 5acd734a-1ed3-4a17-ad9d-0b09ae7bc2d2/Nutch-1.7" - result: - { browser: { name: "Apache Nutch", version: "1.7" }, device: { type: bot } } - readable: "Apache Nutch 1.7" -- headers: "User-Agent: ADmantX Platform Semantic Analyzer - ADmantX Inc. - www.admantx.com - support@admantx.com" - result: { browser: { name: ADmantX }, device: { type: bot } } - readable: ADmantX -- headers: "User-Agent: Aboundex/0.3 (http://www.aboundex.com/crawler/)" - result: { browser: { name: Aboundex, version: "0.3" }, device: { type: bot } } - readable: "Aboundex 0.3" -- headers: "User-Agent: Ad Muncher v4.93.33707/4957" - result: - { - browser: { name: "Ad Muncher", version: 4.93.33707 }, - device: { type: bot }, - } - readable: "Ad Muncher 4.93.33707" -- headers: "User-Agent: AddThis.com robot tech.support@clearspring.com" - result: { browser: { name: AddThis.com }, device: { type: bot } } - readable: AddThis.com -- headers: "User-Agent: AdsBot-Google ( http://www.google.com/adsbot.html)" - result: { browser: { name: "Google Ads Bot" }, device: { type: bot } } - readable: "Google Ads Bot" -- headers: "User-Agent: AdsBot-Google (+http://www.google.com/adsbot.html)" - result: { browser: { name: "Google Ads Bot" }, device: { type: bot } } - readable: "Google Ads Bot" -- headers: "User-Agent: AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari" - result: { browser: { name: "Google Ads Bot" }, device: { type: bot } } - readable: "Google Ads Bot" -- headers: "User-Agent: AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36" - result: { browser: { name: "Google Ads Bot" }, device: { type: bot } } - readable: "Google Ads Bot" -- headers: "User-Agent: AmorankSpider/0.1; +http://amorank.com/webcrawler.html" - result: - { - browser: { name: "Amorank Spider", version: "0.1" }, - device: { type: bot }, - } - readable: "Amorank Spider 0.1" -- headers: "User-Agent: AppEngine-Google; (+http://code.google.com/appengine; appid: xbmacx)" - result: { browser: { name: "Google App Engine" }, device: { type: bot } } - readable: "Google App Engine" -- headers: "User-Agent: ArchiveTeam ArchiveBot/20140807.01 (wpull 0.37a1) and not Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36" - result: { browser: { name: ArchiveBot }, device: { type: bot } } - readable: ArchiveBot -- headers: "User-Agent: Backlink-Ceck.de (+http://www.backlink-check.de/bot.html)" - result: { browser: { name: Backlink-Check }, device: { type: bot } } - readable: Backlink-Check -- headers: "User-Agent: BacklinkCrawler (http://www.backlinktest.com/crawler.html)" - result: { browser: { name: BacklinkCrawler }, device: { type: bot } } - readable: BacklinkCrawler -- headers: "User-Agent: Baiduspider ( http://www.baidu.com/search/spider.htm)" - result: { browser: { name: Baiduspider }, device: { type: bot } } - readable: Baiduspider -- headers: "User-Agent: Baiduspider+(+http://www.baidu.com/search/spider_jp.html)" - result: { browser: { name: Baiduspider }, device: { type: bot } } - readable: Baiduspider -- headers: "User-Agent: Bloglovin/1.0 (http://www.bloglovin.com; 1 subscribers)" - result: - { browser: { name: Bloglovin, version: "1.0" }, device: { type: bot } } - readable: "Bloglovin 1.0" -- headers: "User-Agent: BlogramCrawler/1.0.1(+http://blogram.jp/)" - result: { browser: { name: Blogram, version: 1.0.1 }, device: { type: bot } } - readable: "Blogram 1.0.1" -- headers: "User-Agent: Browsershots" - result: { browser: { name: Browsershots }, device: { type: bot } } - readable: Browsershots -- headers: "User-Agent: Cliqzbot/0.1 (+http://cliqz.com/company/cliqzbot)" - result: { browser: { name: Cliqzbot, version: "0.1" }, device: { type: bot } } - readable: "Cliqzbot 0.1" -- headers: "User-Agent: CommaFeed/1.0 (http://www.commafeed.com)" - result: - { browser: { name: CommaFeed, version: "1.0" }, device: { type: bot } } - readable: "CommaFeed 1.0" -- headers: "User-Agent: CrawlerProcess (http://www.PowerMapper.com) /5.5.678.0" - result: - { - browser: { name: PowerMapper, version: 5.5.678.0 }, - device: { type: bot }, - } - readable: "PowerMapper 5.5.678.0" -- headers: "User-Agent: Curious George - www.analyticsseo.com/crawler" - result: { browser: { name: "Analytics SEO" }, device: { type: bot } } - readable: "Analytics SEO" -- headers: "User-Agent: Data-Hotel-Watchdog/1.1" - result: - { - browser: { name: "Data Hotel Watchdog", version: "1.1" }, - device: { type: bot }, - } - readable: "Data Hotel Watchdog 1.1" -- headers: "User-Agent: DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)" - result: - { - browser: { name: "Googlebot Mobile", version: "2.1" }, - device: { type: bot }, - } - readable: "Googlebot Mobile 2.1" -- headers: "User-Agent: DoCoMo/2.0 P900i(c100;TB;W24H11) (compatible; ichiro/mobile goo; +http://help.goo.ne.jp/help/article/1142/)" - result: { browser: { name: Goo }, device: { type: bot } } - readable: Goo -- headers: "User-Agent: DoCoMo/2.0 SH905i(c100;TB;W24H16) (compatible; Mediapartners-Google/2.1; +http://www.google.com/bot.html)" - result: - { - browser: { name: "Google Mediapartners", version: "2.1" }, - device: { type: bot }, - } - readable: "Google Mediapartners 2.1" -- headers: "User-Agent: ExactSeek Crawler (nutch 1.4)/Nutch-1.4 (ExactSeek Crawler; http://www.exactseek.com)" - result: { browser: { name: ExactSeek }, device: { type: bot } } - readable: ExactSeek -- headers: "User-Agent: FAST Enterprise Crawler/5.3.4 (crawler@fast.no)" - result: - { - browser: { name: "FAST Enterprise Crawler", version: 5.3.4 }, - device: { type: bot }, - } - readable: "FAST Enterprise Crawler 5.3.4" -- headers: "User-Agent: FAST-WebCrawler/3.8 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)" - result: - { - browser: { name: "FAST Web Crawler", version: "3.8" }, - device: { type: bot }, - } - readable: "FAST Web Crawler 3.8" -- headers: "User-Agent: Python-urllib/3.8" - result: { browser: { name: Python, version: "3.8" }, device: { type: bot } } - readable: "Python 3.8" -- headers: "User-Agent: python-requests/2.22.0" - result: { browser: { name: Python, version: 2.22.0 }, device: { type: bot } } - readable: "Python 2.22.0" -- headers: "User-Agent: FTRF: Friendly robot/1.3" - result: - { - browser: { name: "FTRF: Friendly Robot", version: "1.3" }, - device: { type: bot }, - } - readable: "FTRF: Friendly Robot 1.3" -- headers: "User-Agent: FacebookSecurity/2.1 ([www.FacebookSecurity.com])" - result: { browser: { name: Facebook, version: "2.1" }, device: { type: bot } } - readable: "Facebook 2.1" -- headers: "User-Agent: Fastladder FeedFetcher/0.01 (http://fastladder.com/; 27 subscribers)" - result: - { browser: { name: Fastladder, version: "0.01" }, device: { type: bot } } - readable: "Fastladder 0.01" -- headers: "User-Agent: Feed Wrangler/1.0 (3 subscribers; feed-id=248559; http://feedwrangler.net; Allow like Gecko)" - result: - { browser: { name: FeedWrangler, version: "1.0" }, device: { type: bot } } - readable: "FeedWrangler 1.0" -- headers: "User-Agent: FeedBurner/1.0 (http://www.FeedBurner.com)" - result: - { - browser: { name: "Google FeedBurner", version: "1.0" }, - device: { type: bot }, - } - readable: "Google FeedBurner 1.0" -- headers: "User-Agent: FeedFetcher-Google; ( http://www.google.com/feedfetcher.html)" - result: { browser: { name: "Google Feedfetcher" }, device: { type: bot } } - readable: "Google Feedfetcher" -- headers: "User-Agent: Feedbin - 9 subscribers" - result: { browser: { name: Feedbin }, device: { type: bot } } - readable: Feedbin -- headers: "User-Agent: Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 19 subscribers; feed-id=13965549748850348809)" - result: { browser: { name: "Google Feedfetcher" }, device: { type: bot } } - readable: "Google Feedfetcher" -- headers: "User-Agent: FeedlyApp/1.0 (http://www.feedly.com)" - result: { browser: { name: Feedly, version: "1.0" }, device: { type: bot } } - readable: "Feedly 1.0" -- headers: "User-Agent: FeedlyBot/1.0 (http://feedly.com)" - result: { browser: { name: Feedly, version: "1.0" }, device: { type: bot } } - readable: "Feedly 1.0" -- headers: "User-Agent: Feedspot http://www.feedspot.com" - result: { browser: { name: Feedspot }, device: { type: bot } } - readable: Feedspot -- headers: "User-Agent: Fever/1.38 (Feed Parser; http://feedafever.com; Allow like Gecko)" - result: { browser: { name: Fever, version: "1.38" }, device: { type: bot } } - readable: "Fever 1.38" -- headers: "User-Agent: Flamingo_SearchEngine (+http://www.flamingosearch.com/bot)" - result: { browser: { name: "Flamingo Search" }, device: { type: bot } } - readable: "Flamingo Search" -- headers: "User-Agent: Google-Sitemaps/1.0" - result: - { - browser: { name: "Google Sitemaps", version: "1.0" }, - device: { type: bot }, - } - readable: "Google Sitemaps 1.0" -- headers: "User-Agent: GoogleProducer; (+http://goo.gl/7y4SX)" - result: { browser: { name: "Google Play Newsstand" }, device: { type: bot } } - readable: "Google Play Newsstand" -- headers: "User-Agent: Googlebot (gocrawl v0.4)" - result: { browser: { name: Gocrawl, version: "0.4" }, device: { type: bot } } - readable: "Gocrawl 0.4" -- headers: "User-Agent: Googlebot-Image/1.0" - result: - { - browser: { name: "Googlebot Image", version: "1.0" }, - device: { type: bot }, - } - readable: "Googlebot Image 1.0" -- headers: "User-Agent: Googlebot-News" - result: { browser: { name: "Google News" }, device: { type: bot } } - readable: "Google News" -- headers: "User-Agent: Googlebot-Video/1.0" - result: - { - browser: { name: "Googlebot Video", version: "1.0" }, - device: { type: bot }, - } - readable: "Googlebot Video 1.0" -- headers: "User-Agent: Googlebot/2.1 ( http://www.googlebot.com/bot.html)" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Googlebot/2.1(+http://www.googlebot.com/bot.html)" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Mediapartners-Google" - result: { browser: { name: "Google Mediapartners" }, device: { type: bot } } - readable: "Google Mediapartners" -- headers: "User-Agent: MetaFeedly/1.0 (http://www.feedly.com)" - result: { browser: { name: Feedly, version: "1.0" }, device: { type: bot } } - readable: "Feedly 1.0" -- headers: "User-Agent: Mozilla/2.0 (compatible; Ask Jeeves/Teoma)" - result: { browser: { name: "Ask Jeeves" }, device: { type: bot } } - readable: "Ask Jeeves" -- headers: "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)" - result: - { browser: { name: "Google Wireless Transcoder" }, device: { type: bot } } - readable: "Google Wireless Transcoder" -- headers: "User-Agent: Mozilla/5.0 (Android; Mobile; rv:29.0) Gecko/29.0 Firefox/29.0 AppEngine-Google; (+http://code.google.com/appengine; appid: s~oldecreator)" - result: { browser: { name: "Google App Engine" }, device: { type: bot } } - readable: "Google App Engine" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; generic) AppleWebKit/537.4 (KHTML, like Gecko; Google Web Preview) Version/4.0 Mobile Safari/537.4" - result: { browser: { name: "Google Web Preview" }, device: { type: bot } } - readable: "Google Web Preview" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.11067 BingPreview/1.0b" - result: - { browser: { name: "Bing Preview", version: "1.0" }, device: { type: bot } } - readable: "Bing Preview 1.0" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1; 360Spider" - result: { browser: { name: 360spider }, device: { type: bot } } - readable: 360spider -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1626.1 Safari/537.36 AppEngine-Google; (+http://code.google.com/appengine; appid: s~hex-plus)" - result: { browser: { name: "Google App Engine" }, device: { type: bot } } - readable: "Google App Engine" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko AppEngine-Google; (+http://code.google.com/appengine; appid: s~oowsxs)" - result: { browser: { name: "Google App Engine" }, device: { type: bot } } - readable: "Google App Engine" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/538.14 (KHTML, like Gecko) BingPreview/1.0b" - result: - { browser: { name: "Bing Preview", version: "1.0" }, device: { type: bot } } - readable: "Bing Preview 1.0" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 AppEngine-Google; (+http://code.google.com/appengine; appid: s~chengzhoukun)" - result: { browser: { name: "Google App Engine" }, device: { type: bot } } - readable: "Google App Engine" -- headers: "User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Nokia; Lumia 520) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0 BingPreview/1.0b" - result: - { browser: { name: "Bing Preview", version: "1.0" }, device: { type: bot } } - readable: "Bing Preview 1.0" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36" - result: { browser: { name: "Google Page Speed" }, device: { type: bot } } - readable: "Google Page Speed" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36 GoogleBot/2.1" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0.1453 Safari/537.36" - result: { browser: { name: "Google Web Preview" }, device: { type: bot } } - readable: "Google Web Preview" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.18) Gecko/20110622 HeartRails_Capture/1.0.5 (+http://capture.heartrails.com/) Namoroka/3.6.18" - result: - { - browser: { name: "HeartRails Capture", version: 1.0.5 }, - device: { type: bot }, - } - readable: "HeartRails Capture 1.0.5" -- headers: "User-Agent: Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/webcrawler.html) Gecko/2008032620" - result: { browser: { name: 80legs, version: "0.83" }, device: { type: bot } } - readable: "80legs 0.83" -- headers: "User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) ASProxy/5.5b5" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) BingPreview/1.0b" - result: - { browser: { name: "Bing Preview", version: "1.0" }, device: { type: bot } } - readable: "Bing Preview 1.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; WOW64; Trident/6.0; BingPreview/1.0b)" - result: - { browser: { name: "Bing Preview", version: "1.0" }, device: { type: bot } } - readable: "Bing Preview 1.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) CrawlerProcess (http://www.PowerMapper.com) /5.10.736.0" - result: - { - browser: { name: PowerMapper, version: 5.10.736.0 }, - device: { type: bot }, - } - readable: "PowerMapper 5.10.736.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider" - result: { browser: { name: 360spider }, device: { type: bot } } - readable: 360spider -- headers: "User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)" - result: { browser: { name: "Yahoo! Slurp" }, device: { type: bot } } - readable: "Yahoo! Slurp" -- headers: "User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)" - result: - { browser: { name: "Yahoo! Slurp", version: "3.0" }, device: { type: bot } } - readable: "Yahoo! Slurp 3.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) NOT Firefox/3.5" - result: - { browser: { name: "Yahoo! Slurp", version: "3.0" }, device: { type: bot } } - readable: "Yahoo! Slurp 3.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; bingbot/2.0 +http://www.bing.com/bingbot.htm)" - result: { browser: { name: Bing, version: "2.0" }, device: { type: bot } } - readable: "Bing 2.0" -- headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; )"' - result: { browser: { name: Bing, version: "2.0" }, device: { type: bot } } - readable: "Bing 2.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; bingbot/2.1; +http://www.bing.com/bingbot.htm)" - result: { browser: { name: Bing, version: "2.1" }, device: { type: bot } } - readable: "Bing 2.1" -- headers: "User-Agent: Mozilla/5.0 (compatible; heritrix/1.14.4 +http://netarkivet.dk/webcrawler/)" - result: - { browser: { name: CiteSeerX, version: 1.14.4 }, device: { type: bot } } - readable: "CiteSeerX 1.14.4" -- headers: "User-Agent: Mozilla/5.0 (compatible; heritrix/3.1.2-SNAPSHOT-20131029-0036 +http://archive.org/details/archive.org_bot)" - result: { browser: { name: Archive.org }, device: { type: bot } } - readable: Archive.org -- headers: "User-Agent: Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13" - result: { browser: { name: "Google Web Preview" }, device: { type: bot } } - readable: "Google Web Preview" -- headers: "User-Agent: Mozilla/5.0 (en-us) AppleWebKit/534.14 (KHTML, like Gecko; Google Wireless Transcoder) Chrome/9.0.597 Safari/534.14" - result: - { browser: { name: "Google Wireless Transcoder" }, device: { type: bot } } - readable: "Google Wireless Transcoder" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)" - result: { browser: { name: Bing, version: "2.0" }, device: { type: bot } } - readable: "Bing 2.0" -- headers: "User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview Analytics) Chrome/27.0.1453 Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Mozilla/5.0 AppleWebKit/537.4 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.4" - result: - { browser: { name: Googlebot, version: "2.1" }, device: { type: bot } } - readable: "Googlebot 2.1" -- headers: "User-Agent: Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)" - result: - { browser: { name: Baiduspider, version: "2.0" }, device: { type: bot } } - readable: "Baiduspider 2.0" -- headers: "User-Agent: Opera/30.0.1835.59 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/29.16 AppleWebKit/599.0+ (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 FAST-WebCrawler/3.8" - result: - { - browser: { name: "FAST Web Crawler", version: "3.8" }, - device: { type: bot }, - } - readable: "FAST Web Crawler 3.8" -- headers: "User-Agent: Scrapy/0.24.6 (+http://scrapy.org)" - result: { browser: { name: Scrapy, version: 0.24.6 }, device: { type: bot } } - readable: "Scrapy 0.24.6" -- headers: "User-Agent: Wget/1.11.4" - result: { browser: { name: Wget, version: 1.11.4 }, device: { type: bot } } - readable: "Wget 1.11.4" -- headers: "User-Agent: Wget/1.15 (linux-gnu)" - result: { browser: { name: Wget, version: "1.15" }, device: { type: bot } } - readable: "Wget 1.15" -- headers: "User-Agent: Wget/1.16.1 (darwin14.0.0)" - result: { browser: { name: Wget, version: 1.16.1 }, device: { type: bot } } - readable: "Wget 1.16.1" -- headers: "User-Agent: Wget/1.6" - result: { browser: { name: Wget, version: "1.6" }, device: { type: bot } } - readable: "Wget 1.6" -- headers: "User-Agent: facebookexternalhit/1.1" - result: { browser: { name: Facebook, version: "1.1" }, device: { type: bot } } - readable: "Facebook 1.1" -- headers: "User-Agent: facebookexternalhit/1.1 (+http(s)://www.facebook.com/externalhit_uatext.php)" - result: { browser: { name: Facebook, version: "1.1" }, device: { type: bot } } - readable: "Facebook 1.1" -- headers: "User-Agent: facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" - result: { browser: { name: Facebook, version: "1.1" }, device: { type: bot } } - readable: "Facebook 1.1" -- headers: "User-Agent: facebookscraper/1.0( http://www.facebook.com/sharescraper_help.php)" - result: { browser: { name: Facebook, version: "1.0" }, device: { type: bot } } - readable: "Facebook 1.0" -- headers: "User-Agent: grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)" - result: { browser: { name: Grub, version: 1.5.3 }, device: { type: bot } } - readable: "Grub 1.5.3" -- headers: "User-Agent: mapion-news-bot/1.0 (http://www.mapion.co.jp/news/)" - result: - { - browser: { name: "Mapian News Bot", version: "1.0" }, - device: { type: bot }, - } - readable: "Mapian News Bot 1.0" -- headers: "User-Agent: msnbot-NewsBlogs/2.0b (+http://search.msn.com/msnbot.htm)" - result: { browser: { name: Bing, version: "2.0" }, device: { type: bot } } - readable: "Bing 2.0" -- headers: "User-Agent: msnbot/1.1 ( http://search.msn.com/msnbot.htm)" - result: { browser: { name: Bing, version: "1.1" }, device: { type: bot } } - readable: "Bing 1.1" -- headers: "User-Agent: msnbot/2.0b ( http://search.msn.com/msnbot.htm)" - result: { browser: { name: Bing, version: "2.0" }, device: { type: bot } } - readable: "Bing 2.0" -- headers: "User-Agent: Mozilla/3.0 (compatible; Indy Library)" - result: { browser: { name: "Borland Delphi" }, device: { type: bot } } - readable: "Borland Delphi" -- headers: "User-Agent: 1NET/Crawler (compatible; 1NET; robot; http://www.1NET.gr)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: abot/0.1 (abot; http://www.abot.com; abot@abot.com)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: Amfibibot/0.07 (Amfibi Robot; http://www.amfibi.com; agent@amfibi.com)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: envolk/1.7 (+http://www.envolk.com/envolkspiderinfo.html)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: EnaBot/1.2 (http://www.enaball.com/crawler.html)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: EuripBot/0.5 (+http://www.eurip.com) PreCheck" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: FaviconArchiver/1.0 (+http://moblur.org/workshop/favicon_archive/)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: Feedfetcher-feedraider; (+http://feedraider.com/help/feedfetcher.html; X subscribers; Allow like Gecko)" - result: { device: { type: bot } } - readable: "an unknown bot" -- headers: "User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; GomezAgent 2.0; Windows NT)" - result: - { browser: { name: GomezAgent, version: "2.0" }, device: { type: bot } } - readable: "GomezAgent 2.0" -- headers: "User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M700; OpVer 19.123.2.733) OrangeBot-Mobile 2008.0 (mobilesearch.support@orange-ftgroup.com)" - result: { browser: { name: OrangeBot }, device: { type: bot } } - readable: OrangeBot -- headers: "User-Agent: Mozilla/5.0 (compatible; XML Sitemaps Generator; http://www.xml-sitemaps.com) Gecko XML-Sitemaps/1.0" - result: - { - browser: { name: "XML Sitemaps Generator", version: "1.0" }, - device: { type: bot }, - } - readable: "XML Sitemaps Generator 1.0" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) MsnBot-Media /1.0b" - result: { browser: { name: Bing, version: "1.0" }, device: { type: bot } } - readable: "Bing 1.0" -- headers: "User-Agent: Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daumoa 4.0" - result: { browser: { name: Daumoa, version: "4.0" }, device: { type: bot } } - readable: "Daumoa 4.0" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 - James BOT - WebCrawler http://cognitiveseo.com/bot.html" - result: { browser: { name: JamesBOT }, device: { type: bot } } - readable: JamesBOT -- headers: "User-Agent: Pinterest/0.1" - readable: "Pinterest 0.1" - result: - { browser: { name: Pinterest, version: "0.1" }, device: { type: bot } } -- headers: "User-Agent: Pinterest/0.2 (+http://www.pinterest.com/)" - readable: "Pinterest 0.2" - result: - { browser: { name: Pinterest, version: "0.2" }, device: { type: bot } } -- headers: "User-Agent: Facebookexternalhit/1.1; kakaotalk-scrap/1.0; +https: //devtalk.kakao.com/t/scrap/33984" - readable: "KakaoTalk Bot 1.0" - result: - { - browser: { name: "KakaoTalk Bot", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; CloudFlare-AlwaysOnline/1.0; +http://www.cloudflare.com/always-online) AppleWebKit/534.34" - readable: "Cloudflare Always Online 1.0" - result: - { - browser: { name: "Cloudflare Always Online", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/79.0.3945.130 Safari/537.36 (compatible; Cloudflare SpeedTest/1.0; +https://blog.cloudflare.com/new-speed-page/)" - readable: "Cloudflare SpeedTest 1.0" - result: - { - browser: { name: "Cloudflare SpeedTest", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Cloudflare Diagnostics" - readable: "Cloudflare Diagnostics" - result: { browser: { name: "Cloudflare Diagnostics" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Cloudflare-AMP/1.0; +https://amp.cloudflare.com/doc/fetcher.html) AppleWebKit/534.34" - readable: "Cloudflare AMP 1.0" - result: - { - browser: { name: "Cloudflare AMP", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)" - readable: "Moz 1.1" - result: { browser: { name: Moz, version: "1.1" }, device: { type: bot } } -- headers: "User-Agent: rogerbot/1.0 (http://www.moz.com/dp/rogerbot, rogerbot-crawler@moz.com)" - readable: "Moz 1.0" - result: { browser: { name: Moz, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Nimbostratus-Bot/v1.3.2; http://cloudsystemnetworks.com)" - readable: "Nimbostratus 1.3.2" - result: - { browser: { name: Nimbostratus, version: 1.3.2 }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; SemrushBot/6~bl; +http://www.semrush.com/bot.html)" - readable: "Semrush 6" - result: { browser: { name: Semrush, version: "6" }, device: { type: bot } } -- headers: "User-Agent: Buck/2.2; (+https://app.hypefactors.com/media-monitoring/about.html)" - readable: "Buck 2.2" - result: { browser: { name: Buck, version: "2.2" }, device: { type: bot } } -- headers: "User-Agent: DomainCrawler/3.0 (info@domaincrawler.com; http://www.domaincrawler.com/example.com)" - readable: "DomainCrawler 3.0" - result: - { browser: { name: DomainCrawler, version: "3.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Img/2.0; +http://go.mail.ru/help/robots)" - readable: "Mail.ru Bot 2.0" - result: - { browser: { name: "Mail.ru Bot", version: "2.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)" - readable: Bytespider - result: { browser: { name: Bytespider }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 compatible; yelpspider/yelpspider-1.0 (Crawlerbot run by Yelp Inc; yelpbot at yelp dot com)" - readable: "Yelp Spider 1.0" - result: - { browser: { name: "Yelp Spider", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)" - readable: "Slackbot Link Checker 1.0" - result: - { - browser: { name: "Slackbot Link Checker", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Florienzh/1.0" - readable: "Florienzh 1.0" - result: - { browser: { name: Florienzh, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)" - readable: "Discord 2.0" - result: { browser: { name: Discord, version: "2.0" }, device: { type: bot } } -- headers: "User-Agent: Voat.co OpenGraph Parser" - readable: Voat - result: { browser: { name: Voat }, device: { type: bot } } -- headers: "User-Agent: PocketImageCache/1.0" - readable: "Pocket 1.0" - result: { browser: { name: Pocket, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: PocketParser/2.0 (+https://getpocket.com/pocketparser_ua)" - readable: "Pocket 2.0" - result: { browser: { name: Pocket, version: "2.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Wappalyzer; https://www.wappalyzer.com)" - readable: Wappalyzer - result: { browser: { name: Wappalyzer }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Wappalyzer)" - readable: Wappalyzer - result: { browser: { name: Wappalyzer }, device: { type: bot } } -- headers: "User-Agent: Wappalyzer" - readable: Wappalyzer - result: { browser: { name: Wappalyzer }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko; compatible; BuiltWith/1.0; +http://builtwith.com/biup) Chrome/74.0.3729.131 Safari/537.36" - readable: "BuiltWith 1.0" - result: - { browser: { name: BuiltWith, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: TrustedSite Crawler" - readable: TrustedSite - result: { browser: { name: TrustedSite }, device: { type: bot } } -- headers: "User-Agent: IDG/UK (http://spaziodati.eu/)" - readable: SpazioDati - result: { browser: { name: SpazioDati }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0+(compatible; MxToolbox/Beta7; http://www.mxtoolbox.com/)" - readable: "MxToolbox 7" - result: - { browser: { name: MxToolbox, version: Beta7 }, device: { type: bot } } -- headers: "User-Agent: CCBot/2.0 (http://commoncrawl.org/faq/)" - readable: "Common Crawl Bot 2.0" - result: - { - browser: { name: "Common Crawl Bot", version: "2.0" }, - device: { type: bot }, - } -- headers: "User-Agent: CCResearchBot/1.0 commoncrawl.org/research//Nutch-1.7-SNAPSHOT" - readable: "Common Crawl Research Bot 1.0" - result: - { - browser: { name: "Common Crawl Research Bot", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; redditbot/1.0; +http://www.reddit.com/feedback)" - readable: "Reddit Bot 1.0" - result: - { browser: { name: "Reddit Bot", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/4.0 (compatible; Netcraft Web Server Survey)" - readable: "Netcraft Web Server Survey Bot" - result: - { - browser: { name: "Netcraft Web Server Survey Bot" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; +info@netcraft.com)" - readable: "Netcraft Survey Agent Bot 1.0" - result: - { - browser: { name: "Netcraft Survey Agent Bot", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: NETCRAFT" - readable: "Netcraft Bot" - result: { browser: { name: "Netcraft Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Netcraft SSL Server Survey - contact info@netcraft.com)" - readable: "Netcraft SSL Server Survey Bot" - result: - { - browser: { name: "Netcraft SSL Server Survey Bot" }, - device: { type: bot }, - } -- headers: "User-Agent: Netcraft SSL Server Survey - contact info@netcraft.com" - readable: "Netcraft SSL Server Survey Bot" - result: - { - browser: { name: "Netcraft SSL Server Survey Bot" }, - device: { type: bot }, - } -- headers: "User-Agent: Netcraft SSL Server Survey" - readable: "Netcraft SSL Server Survey Bot" - result: - { - browser: { name: "Netcraft SSL Server Survey Bot" }, - device: { type: bot }, - } -- headers: "User-Agent: Embed PHP library" - readable: "Embed PHP Library" - result: { browser: { name: "Embed PHP Library" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)" - readable: "Blex Bot 1.0" - result: - { browser: { name: "Blex Bot", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; BLEXBotTest/1.0; +http://webmeup.com/crawler.html)" - readable: "Blex Test Bot 1.0" - result: - { - browser: { name: "Blex Test Bot", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: DomainStatsBot/1.0 (https://domainstats.com/pages/our-bot)" - readable: "Domain Stats Bot 1.0" - result: - { - browser: { name: "Domain Stats Bot", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; SEOkicks-Robot; +http://www.seokicks.de/robot.html)" - readable: "SEOkicks Bot" - result: { browser: { name: "SEOkicks Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler)" - readable: "Mega Index Bot 2.0" - result: - { - browser: { name: "Mega Index Bot", version: "2.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; LinkpadBot/2.3; +http://linkpad.org/robot/)" - readable: "Linkpad Bot 2.3" - result: - { browser: { name: "Linkpad Bot", version: "2.3" }, device: { type: bot } } -- headers: "User-Agent: SearchAtlas.com SEO Crawler" - readable: "Search Atlas Bot" - result: { browser: { name: "Search Atlas Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Dataprovider.com)" - readable: "Dataprovider Bot" - result: { browser: { name: "Dataprovider Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)" - readable: "Ahrefs Bot 7.0" - result: - { browser: { name: "Ahrefs Bot", version: "7.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/)" - readable: "Ahrefs Bot 6.1" - result: - { browser: { name: "Ahrefs Bot", version: "6.1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsBot/2.0; +http://ahrefs.com/robot/)" - readable: "Ahrefs Bot 2.0" - result: - { browser: { name: "Ahrefs Bot", version: "2.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsBot/7.0; News; +http://ahrefs.com/robot/)" - readable: "Ahrefs News Bot 7.0" - result: - { - browser: { name: "Ahrefs News Bot", version: "7.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsBot/5.2; News; +http://ahrefs.com/robot/)" - readable: "Ahrefs News Bot 5.2" - result: - { - browser: { name: "Ahrefs News Bot", version: "5.2" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsBot/7.0; SA; +http://ahrefs.com/robot/)" - readable: "Ahrefs SA Bot 7.0" - result: - { - browser: { name: "Ahrefs SA Bot", version: "7.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; AhrefsSiteAudit/6.1; +http://ahrefs.com/robot/)" - readable: "Ahrefs Site Audit Bot 6.1" - result: - { - browser: { name: "Ahrefs Site Audit Bot", version: "6.1" }, - device: { type: bot }, - } -- headers: "User-Agent: AhrefsBot.Feeds v0.1; http://ahrefs.com/" - readable: "Ahrefs Feeds Bot 0.1" - result: - { - browser: { name: "Ahrefs Feeds Bot", version: "0.1" }, - device: { type: bot }, - } -- headers: "User-Agent: serpstatbot/1.0 (advanced backlink tracking bot; curl/7.58.0; http://serpstatbot.com/; abuse@serpstatbot.com)" - readable: "Serp Stat 1.0" - result: - { browser: { name: "Serp Stat", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)" - readable: "Majestic MJ12 Bot 1.4.8" - result: - { - browser: { name: "Majestic MJ12 Bot", version: 1.4.8 }, - device: { type: bot }, - } -- headers: "User-Agent: mj12bot" - readable: "Majestic MJ12 Bot" - result: { browser: { name: "Majestic MJ12 Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)" - readable: "Apple Bot 0.1" - result: - { browser: { name: "Apple Bot", version: "0.1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Applebot/0.3; +http://www.apple.com/go/applebot)" - readable: "Apple Bot 0.3" - result: - { browser: { name: "Apple Bot", version: "0.3" }, device: { type: bot } } -- headers: "User-Agent: AppleNewsBot" - readable: "Apple News Bot" - result: { browser: { name: "Apple News Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Gowikibot/1.0; +http://www.gowikibot.com)" - readable: "Gowikibot 1.0" - result: - { browser: { name: Gowikibot, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 TinEye/1.0 (via http://www.tineye.com/)" - readable: "TinEye Bot 1.0" - result: - { browser: { name: "TinEye Bot", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; TinEye-bot/1.31; +http://www.tineye.com/crawler.html)" - readable: "TinEye Bot 1.31" - result: - { browser: { name: "TinEye Bot", version: "1.31" }, device: { type: bot } } -- headers: "User-Agent: psbot/0.1 (+http://www.picsearch.com/bot.html)" - readable: "Picsearch Bot 0.1" - result: - { - browser: { name: "Picsearch Bot", version: "0.1" }, - device: { type: bot }, - } -- headers: "User-Agent: psbot-page (+http://www.picsearch.com/bot.html)" - readable: "Picsearch Bot" - result: { browser: { name: "Picsearch Bot" }, device: { type: bot } } -- headers: "User-Agent: psbot-image (+http://www.picsearch.com/bot.html)" - readable: "Picsearch Bot" - result: { browser: { name: "Picsearch Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0 (IndeedBot 1.1)" - readable: "IndeedBot 1.1" - result: - { browser: { name: IndeedBot, version: "1.1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; YioopBot; +https://www.yioop.com/bot.php)" - readable: "Yioop Bot" - result: { browser: { name: "Yioop Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; DuckDuckBot-Https/1.1; https://duckduckgo.com/duckduckbot)" - readable: "DuckDuckGo Https Bot 1.1" - result: - { - browser: { name: "DuckDuckGo Https Bot", version: "1.1" }, - device: { type: bot }, - } -- headers: "User-Agent: DuckDuckBot/1.1; (+http://duckduckgo.com/duckduckbot.html)" - readable: "DuckDuckGo Bot 1.1" - result: - { - browser: { name: "DuckDuckGo Bot", version: "1.1" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; DuckDuckGo-Favicons-Bot/1.0; +http://duckduckgo.com)" - readable: "DuckDuckGo Favicons Bot 1.0" - result: - { - browser: { name: "DuckDuckGo Favicons Bot", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: node-fetch/1.0 (+https://github.com/bitinn/node-fetch)" - readable: "Node Fetch 1.0" - result: - { browser: { name: "Node Fetch", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Go-http-client/1.1" - readable: "Go Http Client 1.1" - result: - { - browser: { name: "Go Http Client", version: "1.1" }, - device: { type: bot }, - } -- headers: "User-Agent: go-httpclient v0.5.1" - readable: "Go Http Client 0.5.1" - result: - { - browser: { name: "Go Http Client", version: 0.5.1 }, - device: { type: bot }, - } -- headers: "User-Agent: bl.uk_lddc_bot/3.4.0-20200518 (+http://www.bl.uk/aboutus/legaldeposit/websites/websites/faqswebmaster/index.html)" - readable: "British Library 3.4.0" - result: - { - browser: { name: "British Library", version: 3.4.0 }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; SputnikFaviconBot/1.2; +http://corp.sputnik.ru/webmaster)" - readable: "Sputnik Favicon Bot 1.2" - result: - { - browser: { name: "Sputnik Favicon Bot", version: "1.2" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; SputnikBot/2.3; +http://corp.sputnik.ru/webmaster)" - readable: "Sputnik Bot 2.3" - result: - { browser: { name: "Sputnik Bot", version: "2.3" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; SputnikImageBot/2.3; +http://corp.sputnik.ru/webmaster)" - readable: "Sputnik Image Bot 2.3" - result: - { - browser: { name: "Sputnik Image Bot", version: "2.3" }, - device: { type: bot }, - } -- headers: "User-Agent: DMCA.com Page Protection Crawling Service" - readable: DMCA - result: { browser: { name: DMCA }, device: { type: bot } } -- headers: "User-Agent: Made by ZmEu @ WhiteHat Team – http://www.whitehat.ro" - readable: ZmEu - result: { browser: { name: ZmEu }, device: { type: bot } } -- headers: "User-Agent: netEstate NE Crawler (+http://www.website-datenbank.de/)" - readable: "netEstate NE Crawler" - result: { browser: { name: "netEstate NE Crawler" }, device: { type: bot } } -- headers: "User-Agent: Gofeed/1.0" - readable: "Gofeed 1.0" - result: { browser: { name: Gofeed, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: istellabot/t.1.13" - readable: "Istellabot 1.13" - result: - { browser: { name: Istellabot, version: "1.13" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36" - readable: "Yisou Spider 5.0" - result: - { browser: { name: "Yisou Spider", version: "5.0" }, device: { type: bot } } -- headers: "User-Agent: YisouSpider" - readable: "Yisou Spider" - result: { browser: { name: "Yisou Spider" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; LetsearchBot/1.0; +https://letsearch.ru/bots)" - readable: "LetsearchBot 1.0" - result: - { browser: { name: LetsearchBot, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Seeker v.1 http://LookSeek.com/seeker/" - readable: "LookSeek 1" - result: { browser: { name: LookSeek, version: "1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; vuhuvBot/1.0; +http://vuhuv.com/bot.html)" - readable: "VuhuvBot 1.0" - result: { browser: { name: VuhuvBot, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Seekport Crawler; http://seekport.com/)" - readable: "Seekport Crawler" - result: { browser: { name: "Seekport Crawler" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; coccocbot-web/1.0; +http://help.coccoc.com/searchengine)" - readable: "Coccocbot Web 1.0" - result: - { - browser: { name: "Coccocbot Web", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; coccocbot-image/1.0; +http://help.coccoc.com/searchengine)" - readable: "Coccocbot Image 1.0" - result: - { - browser: { name: "Coccocbot Image", version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; Clarabot/1.4; +http://www.clarabot.info/bots)" - readable: "Clarabot 1.4" - result: { browser: { name: Clarabot, version: "1.4" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; MojeekBot/0.9; +https://www.mojeek.com/bot.html)" - readable: "MojeekBot 0.9" - result: - { browser: { name: MojeekBot, version: "0.9" }, device: { type: bot } } -- headers: "User-Agent: Xenu Link Sleuth/1.3.9 beta" - readable: "Xenu Link Sleuth 1.3.9" - result: - { - browser: { name: "Xenu Link Sleuth", version: 1.3.9 }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; Adsbot/3.1)" - readable: "Adsbot 3.1" - result: { browser: { name: Adsbot, version: "3.1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Barkrowler/0.9; +https://babbar.tech/crawler)" - readable: "Barkrowler 0.9" - result: - { browser: { name: Barkrowler, version: "0.9" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; VelenPublicWebCrawler/1.0; +https://velen.io)" - readable: "VelenPublicWebCrawler 1.0" - result: - { - browser: { name: VelenPublicWebCrawler, version: "1.0" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; evc-batch/2.0)" - readable: "Evc-batch 2.0" - result: - { browser: { name: Evc-batch, version: "2.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; AspiegelBot)" - readable: "Petal Bot" - result: { browser: { name: "Petal Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; PetalBot;+https://aspiegel.com/petalbot)" - readable: "Petal Bot" - result: { browser: { name: "Petal Bot" }, device: { type: bot } } -- headers: "User-Agent: (compatible;PetalBot;+https://aspiegel.com/petalbot)" - readable: "Petal Bot" - result: { browser: { name: "Petal Bot" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (iodc; odysseus 24842-138-041020155614-449; +https://iodc.co.uk)" - readable: Iodc - result: { browser: { name: Iodc }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; IODC-Odysseus Survey 46182-100-271115114504-101; +https://iodc.co.uk)" - readable: Iodc - result: { browser: { name: Iodc }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (X11; Datanyze; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" - readable: Datanyze - result: { browser: { name: Datanyze }, device: { type: bot } } -- headers: "User-Agent: okhttp/3.4.1" - readable: "OkHttp 3.4.1" - result: { browser: { name: OkHttp, version: 3.4.1 }, device: { type: bot } } -- headers: "User-Agent: AbtestCenter-okhttp/1.0" - readable: "OkHttp 1.0" - result: { browser: { name: OkHttp, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5" - readable: "Skype Url Preview 0.5" - result: - { - browser: { name: "Skype Url Preview", version: "0.5" }, - device: { type: bot }, - } -- headers: "User-Agent: Mozilla/5.0 (compatible; BuzzSumo; +http://www.buzzsumo.com/bot.html)" - readable: BuzzSumo - result: { browser: { name: BuzzSumo }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; U; Hootsuite-WebFeed/1.0; mailto:abuse@hootsuite.com)" - readable: "HootSuite 1.0" - result: - { browser: { name: HootSuite, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: HootSuite Image proxy (hosting@hootsuite.com)" - readable: HootSuite - result: { browser: { name: HootSuite }, device: { type: bot } } -- headers: "User-Agent: MindsMediaProxy/3.0 (+http://www.minds.com/)" - readable: "Minds 3.0" - result: { browser: { name: Minds, version: "3.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; PlurkBot/1.0; +https://www.plurk.com/) Firefox/61.0" - readable: "Plurk Bot 1.0" - result: - { browser: { name: "Plurk Bot", version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; blogger.com)" - readable: "Blogger Bot" - result: { browser: { name: "Blogger Bot" }, device: { type: bot } } -- headers: "User-Agent: Mediumbot-MetaTagFetcher/0.3 (+https://medium.com/)" - readable: "Medium Bot 0.3" - result: - { browser: { name: "Medium Bot", version: "0.3" }, device: { type: bot } } -- headers: "User-Agent: Mediumbot-ProxyFetcher/0.1 (+https://medium.com/)" - readable: "Medium Bot 0.1" - result: - { browser: { name: "Medium Bot", version: "0.1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; HubSpot Crawler; web-crawlers@hubspot.com)" - readable: "HubSpot Crawler" - result: { browser: { name: "HubSpot Crawler" }, device: { type: bot } } -- headers: "User-Agent: OdklBot/1.0 (share@odnoklassniki.ru)" - readable: "OdklBot 1.0" - result: { browser: { name: OdklBot, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; OdklBot/1.0 like Linux; klass@odnoklassniki.ru)" - readable: "OdklBot 1.0" - result: { browser: { name: OdklBot, version: "1.0" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; Daum/4.1; +http://cs.daum.net/faq/15/4118.html?faqId=28966)" - readable: "Daum 4.1" - result: { browser: { name: Daum, version: "4.1" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (compatible; vkShare; +http://vk.com/dev/Share)" - readable: vkShare - result: { browser: { name: vkShare }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.0 Safari/537.36 (compatible; Linespider/1.1; +https://lin.ee/4dwXkTH)" - readable: "Line Bot 1.1" - result: - { browser: { name: "Line Bot", version: "1.1" }, device: { type: bot } } -- headers: "User-Agent: httpunit/1.5" - readable: "HttpUnit 1.5" - result: { browser: { name: HttpUnit, version: "1.5" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 Google Favicon" - readable: "Google Favicon" - result: { browser: { name: "Google Favicon" }, device: { type: bot } } -- headers: "User-Agent: Mozilla/5.0 zgrab/0.x" - readable: Zgrab - result: { browser: { name: Zgrab }, device: { type: bot } } +- + headers: 'User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.0' + result: { browser: { name: Bing, version: '1.1' }, device: { type: bot } } + readable: 'Bing 1.1' +- + headers: 'User-Agent: (Windows NT 10.0; Googlebot Googlebot-Image/1.0 msnbot-media/1.1 facebookexternalhit/1.1 Trident/7.0) Maxthon/4.4.5.3000 Firefox/38' + result: { browser: { name: Bing, version: '1.1' }, device: { type: bot } } + readable: 'Bing 1.1' +- + headers: 'User-Agent: 360spider-image' + result: { browser: { name: 360spider }, device: { type: bot } } + readable: 360spider +- + headers: 'User-Agent: 5acd734a-1ed3-4a17-ad9d-0b09ae7bc2d2/Nutch-1.7' + result: { browser: { name: 'Apache Nutch', version: '1.7' }, device: { type: bot } } + readable: 'Apache Nutch 1.7' +- + headers: 'User-Agent: ADmantX Platform Semantic Analyzer - ADmantX Inc. - www.admantx.com - support@admantx.com' + result: { browser: { name: ADmantX }, device: { type: bot } } + readable: ADmantX +- + headers: 'User-Agent: Aboundex/0.3 (http://www.aboundex.com/crawler/)' + result: { browser: { name: Aboundex, version: '0.3' }, device: { type: bot } } + readable: 'Aboundex 0.3' +- + headers: 'User-Agent: Ad Muncher v4.93.33707/4957' + result: { browser: { name: 'Ad Muncher', version: 4.93.33707 }, device: { type: bot } } + readable: 'Ad Muncher 4.93.33707' +- + headers: 'User-Agent: AddThis.com robot tech.support@clearspring.com' + result: { browser: { name: AddThis.com }, device: { type: bot } } + readable: AddThis.com +- + headers: 'User-Agent: AdsBot-Google ( http://www.google.com/adsbot.html)' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AdsBot-Google (+http://www.google.com/adsbot.html)' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit (KHTML, like Gecko) Mobile Safari' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36' + result: { browser: { name: 'Google Ads Bot' }, device: { type: bot } } + readable: 'Google Ads Bot' +- + headers: 'User-Agent: AmorankSpider/0.1; +http://amorank.com/webcrawler.html' + result: { browser: { name: 'Amorank Spider', version: '0.1' }, device: { type: bot } } + readable: 'Amorank Spider 0.1' +- + headers: 'User-Agent: AppEngine-Google; (+http://code.google.com/appengine; appid: xbmacx)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: ArchiveTeam ArchiveBot/20140807.01 (wpull 0.37a1) and not Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36' + result: { browser: { name: ArchiveBot }, device: { type: bot } } + readable: ArchiveBot +- + headers: 'User-Agent: Backlink-Ceck.de (+http://www.backlink-check.de/bot.html)' + result: { browser: { name: Backlink-Check }, device: { type: bot } } + readable: Backlink-Check +- + headers: 'User-Agent: BacklinkCrawler (http://www.backlinktest.com/crawler.html)' + result: { browser: { name: BacklinkCrawler }, device: { type: bot } } + readable: BacklinkCrawler +- + headers: 'User-Agent: Baiduspider ( http://www.baidu.com/search/spider.htm)' + result: { browser: { name: Baiduspider }, device: { type: bot } } + readable: Baiduspider +- + headers: 'User-Agent: Baiduspider+(+http://www.baidu.com/search/spider_jp.html)' + result: { browser: { name: Baiduspider }, device: { type: bot } } + readable: Baiduspider +- + headers: 'User-Agent: Bloglovin/1.0 (http://www.bloglovin.com; 1 subscribers)' + result: { browser: { name: Bloglovin, version: '1.0' }, device: { type: bot } } + readable: 'Bloglovin 1.0' +- + headers: 'User-Agent: BlogramCrawler/1.0.1(+http://blogram.jp/)' + result: { browser: { name: Blogram, version: 1.0.1 }, device: { type: bot } } + readable: 'Blogram 1.0.1' +- + headers: 'User-Agent: Browsershots' + result: { browser: { name: Browsershots }, device: { type: bot } } + readable: Browsershots +- + headers: 'User-Agent: Cliqzbot/0.1 (+http://cliqz.com/company/cliqzbot)' + result: { browser: { name: Cliqzbot, version: '0.1' }, device: { type: bot } } + readable: 'Cliqzbot 0.1' +- + headers: 'User-Agent: CommaFeed/1.0 (http://www.commafeed.com)' + result: { browser: { name: CommaFeed, version: '1.0' }, device: { type: bot } } + readable: 'CommaFeed 1.0' +- + headers: 'User-Agent: CrawlerProcess (http://www.PowerMapper.com) /5.5.678.0' + result: { browser: { name: PowerMapper, version: 5.5.678.0 }, device: { type: bot } } + readable: 'PowerMapper 5.5.678.0' +- + headers: 'User-Agent: Curious George - www.analyticsseo.com/crawler' + result: { browser: { name: 'Analytics SEO' }, device: { type: bot } } + readable: 'Analytics SEO' +- + headers: 'User-Agent: Data-Hotel-Watchdog/1.1' + result: { browser: { name: 'Data Hotel Watchdog', version: '1.1' }, device: { type: bot } } + readable: 'Data Hotel Watchdog 1.1' +- + headers: 'User-Agent: DoCoMo/2.0 N905i(c100;TB;W24H16) (compatible; Googlebot-Mobile/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: 'Googlebot Mobile', version: '2.1' }, device: { type: bot } } + readable: 'Googlebot Mobile 2.1' +- + headers: 'User-Agent: DoCoMo/2.0 P900i(c100;TB;W24H11) (compatible; ichiro/mobile goo; +http://help.goo.ne.jp/help/article/1142/)' + result: { browser: { name: Goo }, device: { type: bot } } + readable: Goo +- + headers: 'User-Agent: DoCoMo/2.0 SH905i(c100;TB;W24H16) (compatible; Mediapartners-Google/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: 'Google Mediapartners', version: '2.1' }, device: { type: bot } } + readable: 'Google Mediapartners 2.1' +- + headers: 'User-Agent: ExactSeek Crawler (nutch 1.4)/Nutch-1.4 (ExactSeek Crawler; http://www.exactseek.com)' + result: { browser: { name: ExactSeek }, device: { type: bot } } + readable: ExactSeek +- + headers: 'User-Agent: FAST Enterprise Crawler/5.3.4 (crawler@fast.no)' + result: { browser: { name: 'FAST Enterprise Crawler', version: 5.3.4 }, device: { type: bot } } + readable: 'FAST Enterprise Crawler 5.3.4' +- + headers: 'User-Agent: FAST-WebCrawler/3.8 (atw-crawler at fast dot no; http://fast.no/support/crawler.asp)' + result: { browser: { name: 'FAST Web Crawler', version: '3.8' }, device: { type: bot } } + readable: 'FAST Web Crawler 3.8' +- + headers: 'User-Agent: FTRF: Friendly robot/1.3' + result: { browser: { name: 'FTRF: Friendly Robot', version: '1.3' }, device: { type: bot } } + readable: 'FTRF: Friendly Robot 1.3' +- + headers: 'User-Agent: FacebookSecurity/2.1 ([www.FacebookSecurity.com])' + result: { browser: { name: Facebook, version: '2.1' }, device: { type: bot } } + readable: 'Facebook 2.1' +- + headers: 'User-Agent: Fastladder FeedFetcher/0.01 (http://fastladder.com/; 27 subscribers)' + result: { browser: { name: Fastladder, version: '0.01' }, device: { type: bot } } + readable: 'Fastladder 0.01' +- + headers: 'User-Agent: Feed Wrangler/1.0 (3 subscribers; feed-id=248559; http://feedwrangler.net; Allow like Gecko)' + result: { browser: { name: FeedWrangler, version: '1.0' }, device: { type: bot } } + readable: 'FeedWrangler 1.0' +- + headers: 'User-Agent: FeedBurner/1.0 (http://www.FeedBurner.com)' + result: { browser: { name: 'Google FeedBurner', version: '1.0' }, device: { type: bot } } + readable: 'Google FeedBurner 1.0' +- + headers: 'User-Agent: FeedFetcher-Google; ( http://www.google.com/feedfetcher.html)' + result: { browser: { name: 'Google Feedfetcher' }, device: { type: bot } } + readable: 'Google Feedfetcher' +- + headers: 'User-Agent: Feedbin - 9 subscribers' + result: { browser: { name: Feedbin }, device: { type: bot } } + readable: Feedbin +- + headers: 'User-Agent: Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 19 subscribers; feed-id=13965549748850348809)' + result: { browser: { name: 'Google Feedfetcher' }, device: { type: bot } } + readable: 'Google Feedfetcher' +- + headers: 'User-Agent: FeedlyApp/1.0 (http://www.feedly.com)' + result: { browser: { name: Feedly, version: '1.0' }, device: { type: bot } } + readable: 'Feedly 1.0' +- + headers: 'User-Agent: FeedlyBot/1.0 (http://feedly.com)' + result: { browser: { name: Feedly, version: '1.0' }, device: { type: bot } } + readable: 'Feedly 1.0' +- + headers: 'User-Agent: Feedspot http://www.feedspot.com' + result: { browser: { name: Feedspot }, device: { type: bot } } + readable: Feedspot +- + headers: 'User-Agent: Fever/1.38 (Feed Parser; http://feedafever.com; Allow like Gecko)' + result: { browser: { name: Fever, version: '1.38' }, device: { type: bot } } + readable: 'Fever 1.38' +- + headers: 'User-Agent: Flamingo_SearchEngine (+http://www.flamingosearch.com/bot)' + result: { browser: { name: 'Flamingo Search' }, device: { type: bot } } + readable: 'Flamingo Search' +- + headers: 'User-Agent: Google-Sitemaps/1.0' + result: { browser: { name: 'Google Sitemaps', version: '1.0' }, device: { type: bot } } + readable: 'Google Sitemaps 1.0' +- + headers: 'User-Agent: GoogleProducer; (+http://goo.gl/7y4SX)' + result: { browser: { name: 'Google Play Newsstand' }, device: { type: bot } } + readable: 'Google Play Newsstand' +- + headers: 'User-Agent: Googlebot (gocrawl v0.4)' + result: { browser: { name: Gocrawl, version: '0.4' }, device: { type: bot } } + readable: 'Gocrawl 0.4' +- + headers: 'User-Agent: Googlebot-Image/1.0' + result: { browser: { name: 'Googlebot Image', version: '1.0' }, device: { type: bot } } + readable: 'Googlebot Image 1.0' +- + headers: 'User-Agent: Googlebot-News' + result: { browser: { name: 'Google News' }, device: { type: bot } } + readable: 'Google News' +- + headers: 'User-Agent: Googlebot-Video/1.0' + result: { browser: { name: 'Googlebot Video', version: '1.0' }, device: { type: bot } } + readable: 'Googlebot Video 1.0' +- + headers: 'User-Agent: Googlebot/2.1 ( http://www.googlebot.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Googlebot/2.1(+http://www.googlebot.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mediapartners-Google' + result: { browser: { name: 'Google Mediapartners' }, device: { type: bot } } + readable: 'Google Mediapartners' +- + headers: 'User-Agent: MetaFeedly/1.0 (http://www.feedly.com)' + result: { browser: { name: Feedly, version: '1.0' }, device: { type: bot } } + readable: 'Feedly 1.0' +- + headers: 'User-Agent: Mozilla/2.0 (compatible; Ask Jeeves/Teoma)' + result: { browser: { name: 'Ask Jeeves' }, device: { type: bot } } + readable: 'Ask Jeeves' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)' + result: { browser: { name: 'Google Wireless Transcoder' }, device: { type: bot } } + readable: 'Google Wireless Transcoder' +- + headers: 'User-Agent: Mozilla/5.0 (Android; Mobile; rv:29.0) Gecko/29.0 Firefox/29.0 AppEngine-Google; (+http://code.google.com/appengine; appid: s~oldecreator)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; generic) AppleWebKit/537.4 (KHTML, like Gecko; Google Web Preview) Version/4.0 Mobile Safari/537.4' + result: { browser: { name: 'Google Web Preview' }, device: { type: bot } } + readable: 'Google Web Preview' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.11067 BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1; 360Spider' + result: { browser: { name: 360spider }, device: { type: bot } } + readable: 360spider +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1626.1 Safari/537.36 AppEngine-Google; (+http://code.google.com/appengine; appid: s~hex-plus)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko AppEngine-Google; (+http://code.google.com/appengine; appid: s~oowsxs)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/538.14 (KHTML, like Gecko) BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 AppEngine-Google; (+http://code.google.com/appengine; appid: s~chengzhoukun)' + result: { browser: { name: 'Google App Engine' }, device: { type: bot } } + readable: 'Google App Engine' +- + headers: 'User-Agent: Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Nokia; Lumia 520) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Mobile Safari/537.36 Edge/12.0 BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36' + result: { browser: { name: 'Google Page Speed' }, device: { type: bot } } + readable: 'Google Page Speed' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Page Speed Insights) Chrome/27.0.1453 Safari/537.36 GoogleBot/2.1' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview) Chrome/27.0.1453 Safari/537.36' + result: { browser: { name: 'Google Web Preview' }, device: { type: bot } } + readable: 'Google Web Preview' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.2.18) Gecko/20110622 HeartRails_Capture/1.0.5 (+http://capture.heartrails.com/) Namoroka/3.6.18' + result: { browser: { name: 'HeartRails Capture', version: 1.0.5 }, device: { type: bot } } + readable: 'HeartRails Capture 1.0.5' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; 008/0.83; http://www.80legs.com/webcrawler.html) Gecko/2008032620' + result: { browser: { name: 80legs, version: '0.83' }, device: { type: bot } } + readable: '80legs 0.83' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) ASProxy/5.5b5' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0) BingPreview/1.0b' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; WOW64; Trident/6.0; BingPreview/1.0b)' + result: { browser: { name: 'Bing Preview', version: '1.0' }, device: { type: bot } } + readable: 'Bing Preview 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0) CrawlerProcess (http://www.PowerMapper.com) /5.10.736.0' + result: { browser: { name: PowerMapper, version: 5.10.736.0 }, device: { type: bot } } + readable: 'PowerMapper 5.10.736.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0); 360Spider' + result: { browser: { name: 360spider }, device: { type: bot } } + readable: 360spider +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)' + result: { browser: { name: 'Yahoo! Slurp' }, device: { type: bot } } + readable: 'Yahoo! Slurp' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)' + result: { browser: { name: 'Yahoo! Slurp', version: '3.0' }, device: { type: bot } } + readable: 'Yahoo! Slurp 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp) NOT Firefox/3.5' + result: { browser: { name: 'Yahoo! Slurp', version: '3.0' }, device: { type: bot } } + readable: 'Yahoo! Slurp 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.0 +http://www.bing.com/bingbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.0; )"' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; bingbot/2.1; +http://www.bing.com/bingbot.htm)' + result: { browser: { name: Bing, version: '2.1' }, device: { type: bot } } + readable: 'Bing 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; heritrix/1.14.4 +http://netarkivet.dk/webcrawler/)' + result: { browser: { name: CiteSeerX, version: 1.14.4 }, device: { type: bot } } + readable: 'CiteSeerX 1.14.4' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; heritrix/3.1.2-SNAPSHOT-20131029-0036 +http://archive.org/details/archive.org_bot)' + result: { browser: { name: Archive.org }, device: { type: bot } } + readable: Archive.org +- + headers: 'User-Agent: Mozilla/5.0 (en-us) AppleWebKit/525.13 (KHTML, like Gecko; Google Web Preview) Version/3.1 Safari/525.13' + result: { browser: { name: 'Google Web Preview' }, device: { type: bot } } + readable: 'Google Web Preview' +- + headers: 'User-Agent: Mozilla/5.0 (en-us) AppleWebKit/534.14 (KHTML, like Gecko; Google Wireless Transcoder) Chrome/9.0.597 Safari/534.14' + result: { browser: { name: 'Google Wireless Transcoder' }, device: { type: bot } } + readable: 'Google Wireless Transcoder' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; Google Web Preview Analytics) Chrome/27.0.1453 Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0 AppleWebKit/537.4 (KHTML, like Gecko; compatible; Googlebot/2.1; +http://www.google.com/bot.html) Safari/537.4' + result: { browser: { name: Googlebot, version: '2.1' }, device: { type: bot } } + readable: 'Googlebot 2.1' +- + headers: 'User-Agent: Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)' + result: { browser: { name: Baiduspider, version: '2.0' }, device: { type: bot } } + readable: 'Baiduspider 2.0' +- + headers: 'User-Agent: Opera/30.0.1835.59 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/29.16 AppleWebKit/599.0+ (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36 FAST-WebCrawler/3.8' + result: { browser: { name: 'FAST Web Crawler', version: '3.8' }, device: { type: bot } } + readable: 'FAST Web Crawler 3.8' +- + headers: 'User-Agent: Python-urllib/3.8' + result: { browser: { name: Python, version: '3.8' }, device: { type: bot } } + readable: 'Python 3.8' +- + headers: 'User-Agent: python-requests/2.22.0' + result: { browser: { name: Python, version: 2.22.0 }, device: { type: bot } } + readable: 'Python 2.22.0' +- + headers: 'User-Agent: Scrapy/0.24.6 (+http://scrapy.org)' + result: { browser: { name: Scrapy, version: 0.24.6 }, device: { type: bot } } + readable: 'Scrapy 0.24.6' +- + headers: 'User-Agent: Wget/1.11.4' + result: { browser: { name: Wget, version: 1.11.4 }, device: { type: bot } } + readable: 'Wget 1.11.4' +- + headers: 'User-Agent: Wget/1.15 (linux-gnu)' + result: { browser: { name: Wget, version: '1.15' }, device: { type: bot } } + readable: 'Wget 1.15' +- + headers: 'User-Agent: Wget/1.16.1 (darwin14.0.0)' + result: { browser: { name: Wget, version: 1.16.1 }, device: { type: bot } } + readable: 'Wget 1.16.1' +- + headers: 'User-Agent: Wget/1.6' + result: { browser: { name: Wget, version: '1.6' }, device: { type: bot } } + readable: 'Wget 1.6' +- + headers: 'User-Agent: facebookexternalhit/1.1' + result: { browser: { name: Facebook, version: '1.1' }, device: { type: bot } } + readable: 'Facebook 1.1' +- + headers: 'User-Agent: facebookexternalhit/1.1 (+http(s)://www.facebook.com/externalhit_uatext.php)' + result: { browser: { name: Facebook, version: '1.1' }, device: { type: bot } } + readable: 'Facebook 1.1' +- + headers: 'User-Agent: facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)' + result: { browser: { name: Facebook, version: '1.1' }, device: { type: bot } } + readable: 'Facebook 1.1' +- + headers: 'User-Agent: facebookscraper/1.0( http://www.facebook.com/sharescraper_help.php)' + result: { browser: { name: Facebook, version: '1.0' }, device: { type: bot } } + readable: 'Facebook 1.0' +- + headers: 'User-Agent: grub-client-1.5.3; (grub-client-1.5.3; Crawl your own stuff with http://grub.org)' + result: { browser: { name: Grub, version: 1.5.3 }, device: { type: bot } } + readable: 'Grub 1.5.3' +- + headers: 'User-Agent: mapion-news-bot/1.0 (http://www.mapion.co.jp/news/)' + result: { browser: { name: 'Mapian News Bot', version: '1.0' }, device: { type: bot } } + readable: 'Mapian News Bot 1.0' +- + headers: 'User-Agent: msnbot-NewsBlogs/2.0b (+http://search.msn.com/msnbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: msnbot/1.1 ( http://search.msn.com/msnbot.htm)' + result: { browser: { name: Bing, version: '1.1' }, device: { type: bot } } + readable: 'Bing 1.1' +- + headers: 'User-Agent: msnbot/2.0b ( http://search.msn.com/msnbot.htm)' + result: { browser: { name: Bing, version: '2.0' }, device: { type: bot } } + readable: 'Bing 2.0' +- + headers: 'User-Agent: Mozilla/3.0 (compatible; Indy Library)' + result: { browser: { name: 'Borland Delphi' }, device: { type: bot } } + readable: 'Borland Delphi' +- + headers: 'User-Agent: 1NET/Crawler (compatible; 1NET; robot; http://www.1NET.gr)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: abot/0.1 (abot; http://www.abot.com; abot@abot.com)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: Amfibibot/0.07 (Amfibi Robot; http://www.amfibi.com; agent@amfibi.com)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: envolk/1.7 (+http://www.envolk.com/envolkspiderinfo.html)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: EnaBot/1.2 (http://www.enaball.com/crawler.html)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: EuripBot/0.5 (+http://www.eurip.com) PreCheck' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: FaviconArchiver/1.0 (+http://moblur.org/workshop/favicon_archive/)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: Feedfetcher-feedraider; (+http://feedraider.com/help/feedfetcher.html; X subscribers; Allow like Gecko)' + result: { device: { type: bot } } + readable: 'an unknown bot' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; GomezAgent 2.0; Windows NT)' + result: { browser: { name: GomezAgent, version: '2.0' }, device: { type: bot } } + readable: 'GomezAgent 2.0' +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320; SPV M700; OpVer 19.123.2.733) OrangeBot-Mobile 2008.0 (mobilesearch.support@orange-ftgroup.com)' + result: { browser: { name: OrangeBot }, device: { type: bot } } + readable: OrangeBot +- + headers: 'User-Agent: Mozilla/5.0 (compatible; XML Sitemaps Generator; http://www.xml-sitemaps.com) Gecko XML-Sitemaps/1.0' + result: { browser: { name: 'XML Sitemaps Generator', version: '1.0' }, device: { type: bot } } + readable: 'XML Sitemaps Generator 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534+ (KHTML, like Gecko) MsnBot-Media /1.0b' + result: { browser: { name: Bing, version: '1.0' }, device: { type: bot } } + readable: 'Bing 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE or Firefox mutant; not on Windows server;) Daumoa 4.0' + result: { browser: { name: Daumoa, version: '4.0' }, device: { type: bot } } + readable: 'Daumoa 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 - James BOT - WebCrawler http://cognitiveseo.com/bot.html' + result: { browser: { name: JamesBOT }, device: { type: bot } } + readable: JamesBOT +- + headers: 'User-Agent: Pinterest/0.1' + readable: 'Pinterest 0.1' + result: { browser: { name: Pinterest, version: '0.1' }, device: { type: bot } } +- + headers: 'User-Agent: Pinterest/0.2 (+http://www.pinterest.com/)' + readable: 'Pinterest 0.2' + result: { browser: { name: Pinterest, version: '0.2' }, device: { type: bot } } +- + headers: 'User-Agent: Facebookexternalhit/1.1; kakaotalk-scrap/1.0; +https: //devtalk.kakao.com/t/scrap/33984' + readable: 'KakaoTalk Bot 1.0' + result: { browser: { name: 'KakaoTalk Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; CloudFlare-AlwaysOnline/1.0; +http://www.cloudflare.com/always-online) AppleWebKit/534.34' + readable: 'Cloudflare Always Online 1.0' + result: { browser: { name: 'Cloudflare Always Online', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/79.0.3945.130 Safari/537.36 (compatible; Cloudflare SpeedTest/1.0; +https://blog.cloudflare.com/new-speed-page/)' + readable: 'Cloudflare SpeedTest 1.0' + result: { browser: { name: 'Cloudflare SpeedTest', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Cloudflare Diagnostics' + readable: 'Cloudflare Diagnostics' + result: { browser: { name: 'Cloudflare Diagnostics' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Cloudflare-AMP/1.0; +https://amp.cloudflare.com/doc/fetcher.html) AppleWebKit/534.34' + readable: 'Cloudflare AMP 1.0' + result: { browser: { name: 'Cloudflare AMP', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; DotBot/1.1; http://www.opensiteexplorer.org/dotbot, help@moz.com)' + readable: 'Moz 1.1' + result: { browser: { name: Moz, version: '1.1' }, device: { type: bot } } +- + headers: 'User-Agent: rogerbot/1.0 (http://www.moz.com/dp/rogerbot, rogerbot-crawler@moz.com)' + readable: 'Moz 1.0' + result: { browser: { name: Moz, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Nimbostratus-Bot/v1.3.2; http://cloudsystemnetworks.com)' + readable: 'Nimbostratus 1.3.2' + result: { browser: { name: Nimbostratus, version: 1.3.2 }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; SemrushBot/6~bl; +http://www.semrush.com/bot.html)' + readable: 'Semrush 6' + result: { browser: { name: Semrush, version: '6' }, device: { type: bot } } +- + headers: 'User-Agent: Buck/2.2; (+https://app.hypefactors.com/media-monitoring/about.html)' + readable: 'Buck 2.2' + result: { browser: { name: Buck, version: '2.2' }, device: { type: bot } } +- + headers: 'User-Agent: DomainCrawler/3.0 (info@domaincrawler.com; http://www.domaincrawler.com/example.com)' + readable: 'DomainCrawler 3.0' + result: { browser: { name: DomainCrawler, version: '3.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/Img/2.0; +http://go.mail.ru/help/robots)' + readable: 'Mail.ru Bot 2.0' + result: { browser: { name: 'Mail.ru Bot', version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; Bytespider; https://zhanzhang.toutiao.com/)' + readable: Bytespider + result: { browser: { name: Bytespider }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 compatible; yelpspider/yelpspider-1.0 (Crawlerbot run by Yelp Inc; yelpbot at yelp dot com)' + readable: 'Yelp Spider 1.0' + result: { browser: { name: 'Yelp Spider', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)' + readable: 'Slackbot Link Checker 1.0' + result: { browser: { name: 'Slackbot Link Checker', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Florienzh/1.0' + readable: 'Florienzh 1.0' + result: { browser: { name: Florienzh, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Discordbot/2.0; +https://discordapp.com)' + readable: 'Discord 2.0' + result: { browser: { name: Discord, version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: Voat.co OpenGraph Parser' + readable: Voat + result: { browser: { name: Voat }, device: { type: bot } } +- + headers: 'User-Agent: PocketImageCache/1.0' + readable: 'Pocket 1.0' + result: { browser: { name: Pocket, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: PocketParser/2.0 (+https://getpocket.com/pocketparser_ua)' + readable: 'Pocket 2.0' + result: { browser: { name: Pocket, version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Wappalyzer; https://www.wappalyzer.com)' + readable: Wappalyzer + result: { browser: { name: Wappalyzer }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Wappalyzer)' + readable: Wappalyzer + result: { browser: { name: Wappalyzer }, device: { type: bot } } +- + headers: 'User-Agent: Wappalyzer' + readable: Wappalyzer + result: { browser: { name: Wappalyzer }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko; compatible; BuiltWith/1.0; +http://builtwith.com/biup) Chrome/74.0.3729.131 Safari/537.36' + readable: 'BuiltWith 1.0' + result: { browser: { name: BuiltWith, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: TrustedSite Crawler' + readable: TrustedSite + result: { browser: { name: TrustedSite }, device: { type: bot } } +- + headers: 'User-Agent: IDG/UK (http://spaziodati.eu/)' + readable: SpazioDati + result: { browser: { name: SpazioDati }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0+(compatible; MxToolbox/Beta7; http://www.mxtoolbox.com/)' + readable: 'MxToolbox 7' + result: { browser: { name: MxToolbox, version: Beta7 }, device: { type: bot } } +- + headers: 'User-Agent: CCBot/2.0 (http://commoncrawl.org/faq/)' + readable: 'Common Crawl Bot 2.0' + result: { browser: { name: 'Common Crawl Bot', version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: CCResearchBot/1.0 commoncrawl.org/research//Nutch-1.7-SNAPSHOT' + readable: 'Common Crawl Research Bot 1.0' + result: { browser: { name: 'Common Crawl Research Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; redditbot/1.0; +http://www.reddit.com/feedback)' + readable: 'Reddit Bot 1.0' + result: { browser: { name: 'Reddit Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; Netcraft Web Server Survey)' + readable: 'Netcraft Web Server Survey Bot' + result: { browser: { name: 'Netcraft Web Server Survey Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; NetcraftSurveyAgent/1.0; +info@netcraft.com)' + readable: 'Netcraft Survey Agent Bot 1.0' + result: { browser: { name: 'Netcraft Survey Agent Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: NETCRAFT' + readable: 'Netcraft Bot' + result: { browser: { name: 'Netcraft Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Netcraft SSL Server Survey - contact info@netcraft.com)' + readable: 'Netcraft SSL Server Survey Bot' + result: { browser: { name: 'Netcraft SSL Server Survey Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Netcraft SSL Server Survey - contact info@netcraft.com' + readable: 'Netcraft SSL Server Survey Bot' + result: { browser: { name: 'Netcraft SSL Server Survey Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Netcraft SSL Server Survey' + readable: 'Netcraft SSL Server Survey Bot' + result: { browser: { name: 'Netcraft SSL Server Survey Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Embed PHP library' + readable: 'Embed PHP Library' + result: { browser: { name: 'Embed PHP Library' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)' + readable: 'Blex Bot 1.0' + result: { browser: { name: 'Blex Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; BLEXBotTest/1.0; +http://webmeup.com/crawler.html)' + readable: 'Blex Test Bot 1.0' + result: { browser: { name: 'Blex Test Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: DomainStatsBot/1.0 (https://domainstats.com/pages/our-bot)' + readable: 'Domain Stats Bot 1.0' + result: { browser: { name: 'Domain Stats Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; SEOkicks-Robot; +http://www.seokicks.de/robot.html)' + readable: 'SEOkicks Bot' + result: { browser: { name: 'SEOkicks Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler)' + readable: 'Mega Index Bot 2.0' + result: { browser: { name: 'Mega Index Bot', version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; LinkpadBot/2.3; +http://linkpad.org/robot/)' + readable: 'Linkpad Bot 2.3' + result: { browser: { name: 'Linkpad Bot', version: '2.3' }, device: { type: bot } } +- + headers: 'User-Agent: SearchAtlas.com SEO Crawler' + readable: 'Search Atlas Bot' + result: { browser: { name: 'Search Atlas Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Dataprovider.com)' + readable: 'Dataprovider Bot' + result: { browser: { name: 'Dataprovider Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsBot/7.0; +http://ahrefs.com/robot/)' + readable: 'Ahrefs Bot 7.0' + result: { browser: { name: 'Ahrefs Bot', version: '7.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsBot/6.1; +http://ahrefs.com/robot/)' + readable: 'Ahrefs Bot 6.1' + result: { browser: { name: 'Ahrefs Bot', version: '6.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsBot/2.0; +http://ahrefs.com/robot/)' + readable: 'Ahrefs Bot 2.0' + result: { browser: { name: 'Ahrefs Bot', version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsBot/7.0; News; +http://ahrefs.com/robot/)' + readable: 'Ahrefs News Bot 7.0' + result: { browser: { name: 'Ahrefs News Bot', version: '7.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsBot/5.2; News; +http://ahrefs.com/robot/)' + readable: 'Ahrefs News Bot 5.2' + result: { browser: { name: 'Ahrefs News Bot', version: '5.2' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsBot/7.0; SA; +http://ahrefs.com/robot/)' + readable: 'Ahrefs SA Bot 7.0' + result: { browser: { name: 'Ahrefs SA Bot', version: '7.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; AhrefsSiteAudit/6.1; +http://ahrefs.com/robot/)' + readable: 'Ahrefs Site Audit Bot 6.1' + result: { browser: { name: 'Ahrefs Site Audit Bot', version: '6.1' }, device: { type: bot } } +- + headers: 'User-Agent: AhrefsBot.Feeds v0.1; http://ahrefs.com/' + readable: 'Ahrefs Feeds Bot 0.1' + result: { browser: { name: 'Ahrefs Feeds Bot', version: '0.1' }, device: { type: bot } } +- + headers: 'User-Agent: serpstatbot/1.0 (advanced backlink tracking bot; curl/7.58.0; http://serpstatbot.com/; abuse@serpstatbot.com)' + readable: 'Serp Stat 1.0' + result: { browser: { name: 'Serp Stat', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)' + readable: 'Majestic MJ12 Bot 1.4.8' + result: { browser: { name: 'Majestic MJ12 Bot', version: 1.4.8 }, device: { type: bot } } +- + headers: 'User-Agent: mj12bot' + readable: 'Majestic MJ12 Bot' + result: { browser: { name: 'Majestic MJ12 Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15 (Applebot/0.1; +http://www.apple.com/go/applebot)' + readable: 'Apple Bot 0.1' + result: { browser: { name: 'Apple Bot', version: '0.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25 (compatible; Applebot/0.3; +http://www.apple.com/go/applebot)' + readable: 'Apple Bot 0.3' + result: { browser: { name: 'Apple Bot', version: '0.3' }, device: { type: bot } } +- + headers: 'User-Agent: AppleNewsBot' + readable: 'Apple News Bot' + result: { browser: { name: 'Apple News Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Gowikibot/1.0; +http://www.gowikibot.com)' + readable: 'Gowikibot 1.0' + result: { browser: { name: Gowikibot, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36 TinEye/1.0 (via http://www.tineye.com/)' + readable: 'TinEye Bot 1.0' + result: { browser: { name: 'TinEye Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; TinEye-bot/1.31; +http://www.tineye.com/crawler.html)' + readable: 'TinEye Bot 1.31' + result: { browser: { name: 'TinEye Bot', version: '1.31' }, device: { type: bot } } +- + headers: 'User-Agent: psbot/0.1 (+http://www.picsearch.com/bot.html)' + readable: 'Picsearch Bot 0.1' + result: { browser: { name: 'Picsearch Bot', version: '0.1' }, device: { type: bot } } +- + headers: 'User-Agent: psbot-page (+http://www.picsearch.com/bot.html)' + readable: 'Picsearch Bot' + result: { browser: { name: 'Picsearch Bot' }, device: { type: bot } } +- + headers: 'User-Agent: psbot-image (+http://www.picsearch.com/bot.html)' + readable: 'Picsearch Bot' + result: { browser: { name: 'Picsearch Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:38.0) Gecko/20100101 Firefox/38.0 (IndeedBot 1.1)' + readable: 'IndeedBot 1.1' + result: { browser: { name: IndeedBot, version: '1.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; YioopBot; +https://www.yioop.com/bot.php)' + readable: 'Yioop Bot' + result: { browser: { name: 'Yioop Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; DuckDuckBot-Https/1.1; https://duckduckgo.com/duckduckbot)' + readable: 'DuckDuckGo Https Bot 1.1' + result: { browser: { name: 'DuckDuckGo Https Bot', version: '1.1' }, device: { type: bot } } +- + headers: 'User-Agent: DuckDuckBot/1.1; (+http://duckduckgo.com/duckduckbot.html)' + readable: 'DuckDuckGo Bot 1.1' + result: { browser: { name: 'DuckDuckGo Bot', version: '1.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; DuckDuckGo-Favicons-Bot/1.0; +http://duckduckgo.com)' + readable: 'DuckDuckGo Favicons Bot 1.0' + result: { browser: { name: 'DuckDuckGo Favicons Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: node-fetch/1.0 (+https://github.com/bitinn/node-fetch)' + readable: 'Node Fetch 1.0' + result: { browser: { name: 'Node Fetch', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Go-http-client/1.1' + readable: 'Go Http Client 1.1' + result: { browser: { name: 'Go Http Client', version: '1.1' }, device: { type: bot } } +- + headers: 'User-Agent: go-httpclient v0.5.1' + readable: 'Go Http Client 0.5.1' + result: { browser: { name: 'Go Http Client', version: 0.5.1 }, device: { type: bot } } +- + headers: 'User-Agent: bl.uk_lddc_bot/3.4.0-20200518 (+http://www.bl.uk/aboutus/legaldeposit/websites/websites/faqswebmaster/index.html)' + readable: 'British Library 3.4.0' + result: { browser: { name: 'British Library', version: 3.4.0 }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; SputnikFaviconBot/1.2; +http://corp.sputnik.ru/webmaster)' + readable: 'Sputnik Favicon Bot 1.2' + result: { browser: { name: 'Sputnik Favicon Bot', version: '1.2' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; SputnikBot/2.3; +http://corp.sputnik.ru/webmaster)' + readable: 'Sputnik Bot 2.3' + result: { browser: { name: 'Sputnik Bot', version: '2.3' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; SputnikImageBot/2.3; +http://corp.sputnik.ru/webmaster)' + readable: 'Sputnik Image Bot 2.3' + result: { browser: { name: 'Sputnik Image Bot', version: '2.3' }, device: { type: bot } } +- + headers: 'User-Agent: DMCA.com Page Protection Crawling Service' + readable: DMCA + result: { browser: { name: DMCA }, device: { type: bot } } +- + headers: 'User-Agent: Made by ZmEu @ WhiteHat Team – http://www.whitehat.ro' + readable: ZmEu + result: { browser: { name: ZmEu }, device: { type: bot } } +- + headers: 'User-Agent: netEstate NE Crawler (+http://www.website-datenbank.de/)' + readable: 'netEstate NE Crawler' + result: { browser: { name: 'netEstate NE Crawler' }, device: { type: bot } } +- + headers: 'User-Agent: Gofeed/1.0' + readable: 'Gofeed 1.0' + result: { browser: { name: Gofeed, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: istellabot/t.1.13' + readable: 'Istellabot 1.13' + result: { browser: { name: Istellabot, version: '1.13' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 YisouSpider/5.0 Safari/537.36' + readable: 'Yisou Spider 5.0' + result: { browser: { name: 'Yisou Spider', version: '5.0' }, device: { type: bot } } +- + headers: 'User-Agent: YisouSpider' + readable: 'Yisou Spider' + result: { browser: { name: 'Yisou Spider' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; LetsearchBot/1.0; +https://letsearch.ru/bots)' + readable: 'LetsearchBot 1.0' + result: { browser: { name: LetsearchBot, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Seeker v.1 http://LookSeek.com/seeker/' + readable: 'LookSeek 1' + result: { browser: { name: LookSeek, version: '1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; vuhuvBot/1.0; +http://vuhuv.com/bot.html)' + readable: 'VuhuvBot 1.0' + result: { browser: { name: VuhuvBot, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Seekport Crawler; http://seekport.com/)' + readable: 'Seekport Crawler' + result: { browser: { name: 'Seekport Crawler' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; coccocbot-web/1.0; +http://help.coccoc.com/searchengine)' + readable: 'Coccocbot Web 1.0' + result: { browser: { name: 'Coccocbot Web', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; coccocbot-image/1.0; +http://help.coccoc.com/searchengine)' + readable: 'Coccocbot Image 1.0' + result: { browser: { name: 'Coccocbot Image', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Clarabot/1.4; +http://www.clarabot.info/bots)' + readable: 'Clarabot 1.4' + result: { browser: { name: Clarabot, version: '1.4' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; MojeekBot/0.9; +https://www.mojeek.com/bot.html)' + readable: 'MojeekBot 0.9' + result: { browser: { name: MojeekBot, version: '0.9' }, device: { type: bot } } +- + headers: 'User-Agent: Xenu Link Sleuth/1.3.9 beta' + readable: 'Xenu Link Sleuth 1.3.9' + result: { browser: { name: 'Xenu Link Sleuth', version: 1.3.9 }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Adsbot/3.1)' + readable: 'Adsbot 3.1' + result: { browser: { name: Adsbot, version: '3.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Barkrowler/0.9; +https://babbar.tech/crawler)' + readable: 'Barkrowler 0.9' + result: { browser: { name: Barkrowler, version: '0.9' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; VelenPublicWebCrawler/1.0; +https://velen.io)' + readable: 'VelenPublicWebCrawler 1.0' + result: { browser: { name: VelenPublicWebCrawler, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; evc-batch/2.0)' + readable: 'Evc-batch 2.0' + result: { browser: { name: Evc-batch, version: '2.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; AspiegelBot)' + readable: 'Petal Bot' + result: { browser: { name: 'Petal Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 7.0;) AppleWebKit/537.36 (KHTML, like Gecko) Mobile Safari/537.36 (compatible; PetalBot;+https://aspiegel.com/petalbot)' + readable: 'Petal Bot' + result: { browser: { name: 'Petal Bot' }, device: { type: bot } } +- + headers: 'User-Agent: (compatible;PetalBot;+https://aspiegel.com/petalbot)' + readable: 'Petal Bot' + result: { browser: { name: 'Petal Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (iodc; odysseus 24842-138-041020155614-449; +https://iodc.co.uk)' + readable: Iodc + result: { browser: { name: Iodc }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; IODC-Odysseus Survey 46182-100-271115114504-101; +https://iodc.co.uk)' + readable: Iodc + result: { browser: { name: Iodc }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Datanyze; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' + readable: Datanyze + result: { browser: { name: Datanyze }, device: { type: bot } } +- + headers: 'User-Agent: okhttp/3.4.1' + readable: 'OkHttp 3.4.1' + result: { browser: { name: OkHttp, version: 3.4.1 }, device: { type: bot } } +- + headers: 'User-Agent: AbtestCenter-okhttp/1.0' + readable: 'OkHttp 1.0' + result: { browser: { name: OkHttp, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) SkypeUriPreview Preview/0.5' + readable: 'Skype Url Preview 0.5' + result: { browser: { name: 'Skype Url Preview', version: '0.5' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; BuzzSumo; +http://www.buzzsumo.com/bot.html)' + readable: BuzzSumo + result: { browser: { name: BuzzSumo }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; U; Hootsuite-WebFeed/1.0; mailto:abuse@hootsuite.com)' + readable: 'HootSuite 1.0' + result: { browser: { name: HootSuite, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: HootSuite Image proxy (hosting@hootsuite.com)' + readable: HootSuite + result: { browser: { name: HootSuite }, device: { type: bot } } +- + headers: 'User-Agent: MindsMediaProxy/3.0 (+http://www.minds.com/)' + readable: 'Minds 3.0' + result: { browser: { name: Minds, version: '3.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; PlurkBot/1.0; +https://www.plurk.com/) Firefox/61.0' + readable: 'Plurk Bot 1.0' + result: { browser: { name: 'Plurk Bot', version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; blogger.com)' + readable: 'Blogger Bot' + result: { browser: { name: 'Blogger Bot' }, device: { type: bot } } +- + headers: 'User-Agent: Mediumbot-MetaTagFetcher/0.3 (+https://medium.com/)' + readable: 'Medium Bot 0.3' + result: { browser: { name: 'Medium Bot', version: '0.3' }, device: { type: bot } } +- + headers: 'User-Agent: Mediumbot-ProxyFetcher/0.1 (+https://medium.com/)' + readable: 'Medium Bot 0.1' + result: { browser: { name: 'Medium Bot', version: '0.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; HubSpot Crawler; web-crawlers@hubspot.com)' + readable: 'HubSpot Crawler' + result: { browser: { name: 'HubSpot Crawler' }, device: { type: bot } } +- + headers: 'User-Agent: OdklBot/1.0 (share@odnoklassniki.ru)' + readable: 'OdklBot 1.0' + result: { browser: { name: OdklBot, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; OdklBot/1.0 like Linux; klass@odnoklassniki.ru)' + readable: 'OdklBot 1.0' + result: { browser: { name: OdklBot, version: '1.0' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; Daum/4.1; +http://cs.daum.net/faq/15/4118.html?faqId=28966)' + readable: 'Daum 4.1' + result: { browser: { name: Daum, version: '4.1' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (compatible; vkShare; +http://vk.com/dev/Share)' + readable: vkShare + result: { browser: { name: vkShare }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.0 Safari/537.36 (compatible; Linespider/1.1; +https://lin.ee/4dwXkTH)' + readable: 'Line Bot 1.1' + result: { browser: { name: 'Line Bot', version: '1.1' }, device: { type: bot } } +- + headers: 'User-Agent: httpunit/1.5' + readable: 'HttpUnit 1.5' + result: { browser: { name: HttpUnit, version: '1.5' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 Google Favicon' + readable: 'Google Favicon' + result: { browser: { name: 'Google Favicon' }, device: { type: bot } } +- + headers: 'User-Agent: Mozilla/5.0 zgrab/0.x' + readable: Zgrab + result: { browser: { name: Zgrab }, device: { type: bot } } \ No newline at end of file diff --git a/test/data/desktop/browser-chrome.yaml b/test/data/desktop/browser-chrome.yaml index 379d969..c76ec07 100644 --- a/test/data/desktop/browser-chrome.yaml +++ b/test/data/desktop/browser-chrome.yaml @@ -1,214 +1,72 @@ -- headers: "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0" - result: - { - browser: { name: Chrome, version: 4.0.202.0, type: browser }, - engine: { name: Webkit, version: "532.0" }, - os: { name: "OS X", alias: "Mac OS X", version: "10.5" }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Chrome Dev 4.0.202.0 on Mac OS X 10.5" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4" - result: - { - browser: { name: Chrome, version: "5", type: browser }, - engine: { name: Webkit, version: "533.4" }, - os: { name: "OS X", alias: "Mac OS X", version: "10.6" }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Chrome 5 on Mac OS X 10.6" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2" - result: - { - browser: { name: Chrome, version: "15", type: browser }, - engine: { name: Webkit, version: "535.2" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Chrome 15 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13" - result: - { - browser: { name: Chrome, version: 0.2.149.27, type: browser }, - engine: { name: Webkit, version: "525.13" }, - os: { name: Windows, version: { value: "5.0", alias: "2000" } }, - device: { type: desktop }, - } - readable: "Chrome Beta 0.2.149.27 on Windows 2000" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19" - result: - { - browser: { name: Chrome, version: 0.2.153.0, type: browser }, - engine: { name: Webkit, version: "525.19" }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Chrome Dev 0.2.153.0 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19" - result: - { - browser: { name: Chrome, version: 0.4.154.18, type: browser }, - engine: { name: Webkit, version: "525.19" }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Chrome Beta 0.4.154.18 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19" - result: - { - browser: { name: Chrome, version: "1", type: browser }, - engine: { name: Webkit, version: "525.19" }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Chrome 1 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13" - result: - { - browser: { name: Chrome, version: 0.2.149.6, type: browser }, - engine: { name: Webkit, version: "525.13" }, - os: { name: Windows, version: { value: "5.2", alias: "Server 2003" } }, - device: { type: desktop }, - } - readable: "Chrome Beta 0.2.149.6 on Windows Server 2003" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4" - result: - { - browser: { name: Chrome, version: "2", type: browser }, - engine: { name: Webkit, version: "530.4" }, - os: { name: Windows, version: { value: "5.2", alias: "Server 2003" } }, - device: { type: desktop }, - } - readable: "Chrome 2 on Windows Server 2003" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19" - result: - { - browser: { name: Chrome, version: "1", type: browser }, - engine: { name: Webkit, version: "525.19" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Chrome 1 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8" - result: - { - browser: { name: Chrome, version: 2.0.156.1, type: browser }, - engine: { name: Webkit, version: "528.8" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Chrome Dev 2.0.156.1 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3" - result: - { - browser: { name: Chrome, version: 3.0.193.2, type: browser }, - engine: { name: Webkit, version: "531.3" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Chrome Dev 3.0.193.2 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19" - result: - { - browser: { name: Chrome, version: 0.3.154.9, type: browser }, - engine: { name: Webkit, version: "525.19" }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Chrome Beta 0.3.154.9 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1025 Safari/532.5" - result: - { - browser: { name: Chrome, version: "4.1", type: browser }, - engine: { name: Webkit, version: "532.5" }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Chrome 4.1 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; it-IT) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.25 Safari/532.5" - result: - { - browser: { name: Chrome, version: "4", type: browser }, - engine: { name: Webkit, version: "532.5" }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Chrome 4 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16" - result: - { - browser: { name: Chrome, version: "10", type: browser }, - engine: { name: Webkit, version: "534.16" }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Chrome 10 on Linux" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" - result: - { - browser: { name: Chrome, version: "61", type: browser }, - engine: { name: Blink }, - os: - { - alias: macOS, - name: "OS X", - version: { nickname: Sierra, value: "10.12" }, - }, - device: { manufacturer: Apple, model: Macintosh, type: desktop }, - } - readable: "Chrome 61 on macOS Sierra 10.12" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36" - result: - { - browser: { name: Chrome, version: "65", type: browser }, - engine: { name: Blink }, - os: - { - alias: macOS, - name: "OS X", - version: { nickname: "High Sierra", value: "10.13" }, - }, - device: { manufacturer: Apple, model: Macintosh, type: desktop }, - } - readable: "Chrome 65 on macOS High Sierra 10.13" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36" - result: - { - browser: { name: Chrome, version: "87", type: browser }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.0", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Chrome 87 on macOS Big Sur 11.0" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 12_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36" - result: - { - browser: { name: Chrome, version: "98", type: browser }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "12.2", nickname: "Monterey" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Chrome 98 on macOS Monterey 12.2" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36" - result: - { - browser: { name: Chrome, version: "100", type: browser }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "10.15", nickname: "Catalina" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Chrome 100 on macOS Catalina 10.15" +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.202.0 Safari/532.0' + result: { browser: { name: Chrome, version: 4.0.202.0, type: browser }, engine: { name: Webkit, version: '532.0' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.5' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Chrome Dev 4.0.202.0 on Mac OS X 10.5' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4' + result: { browser: { name: Chrome, version: '5', type: browser }, engine: { name: Webkit, version: '533.4' }, os: { name: 'OS X', alias: 'Mac OS X', version: '10.6' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Chrome 5 on Mac OS X 10.6' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2' + result: { browser: { name: Chrome, version: '15', type: browser }, engine: { name: Webkit, version: '535.2' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome 15 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13' + result: { browser: { name: Chrome, version: 0.2.149.27, type: browser }, engine: { name: Webkit, version: '525.13' }, os: { name: Windows, version: { value: '5.0', alias: '2000' } }, device: { type: desktop } } + readable: 'Chrome Beta 0.2.149.27 on Windows 2000' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.2.153.0 Safari/525.19' + result: { browser: { name: Chrome, version: 0.2.153.0, type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome Dev 0.2.153.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.4.154.18 Safari/525.19' + result: { browser: { name: Chrome, version: 0.4.154.18, type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome Beta 0.4.154.18 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.39 Safari/525.19' + result: { browser: { name: Chrome, version: '1', type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Chrome 1 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.6 Safari/525.13' + result: { browser: { name: Chrome, version: 0.2.149.6, type: browser }, engine: { name: Webkit, version: '525.13' }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Chrome Beta 0.2.149.6 on Windows Server 2003' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US) AppleWebKit/530.4 (KHTML, like Gecko) Chrome/2.0.172.0 Safari/530.4' + result: { browser: { name: Chrome, version: '2', type: browser }, engine: { name: Webkit, version: '530.4' }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Chrome 2 on Windows Server 2003' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.43 Safari/525.19' + result: { browser: { name: Chrome, version: '1', type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome 1 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/528.8 (KHTML, like Gecko) Chrome/2.0.156.1 Safari/528.8' + result: { browser: { name: Chrome, version: 2.0.156.1, type: browser }, engine: { name: Webkit, version: '528.8' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome Dev 2.0.156.1 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/531.3 (KHTML, like Gecko) Chrome/3.0.193.2 Safari/531.3' + result: { browser: { name: Chrome, version: 3.0.193.2, type: browser }, engine: { name: Webkit, version: '531.3' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Chrome Dev 3.0.193.2 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/0.3.154.9 Safari/525.19' + result: { browser: { name: Chrome, version: 0.3.154.9, type: browser }, engine: { name: Webkit, version: '525.19' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chrome Beta 0.3.154.9 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.1.249.1025 Safari/532.5' + result: { browser: { name: Chrome, version: '4.1', type: browser }, engine: { name: Webkit, version: '532.5' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chrome 4.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; it-IT) AppleWebKit/532.5 (KHTML, like Gecko) Chrome/4.0.249.25 Safari/532.5' + result: { browser: { name: Chrome, version: '4', type: browser }, engine: { name: Webkit, version: '532.5' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Chrome 4 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.11 Safari/534.16' + result: { browser: { name: Chrome, version: '10', type: browser }, engine: { name: Webkit, version: '534.16' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Chrome 10 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36' + result: { browser: { name: Chrome, version: '87', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.0', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Chrome 87 on macOS Big Sur 11.0' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36' + readable: 'Chrome 100 on macOS Catalina 10.15' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/desktop/browser-firefox.yaml b/test/data/desktop/browser-firefox.yaml index 231054b..e0b91ac 100644 --- a/test/data/desktop/browser-firefox.yaml +++ b/test/data/desktop/browser-firefox.yaml @@ -1,600 +1,260 @@ -- headers: "User-Agent: Mozilla/5.0 (BeOS; U; Haiku BePC; xx; rv:1.8.1.25pre) Gecko/20120930 BonEcho/2.0.0.22pre" - result: - { - browser: { name: Firefox, version: 2.0.0.22, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: Haiku }, - device: { type: desktop }, - } - readable: "Firefox BonEcho 2.0.0.22 on Haiku" -- headers: "User-Agent: Mozilla/5.0 (ChoX11; U; RISC OS; xx; rv:1.8.1.20) Gecko/20090803 BonEcho/2.0.0.20" - result: - { - browser: { name: Firefox, version: 2.0.0.20, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: "RISC OS" }, - device: { type: desktop }, - } - readable: "Firefox BonEcho 2.0.0.20 on RISC OS" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20121220 Firefox/19.0" - result: - { - browser: { name: Firefox, version: "19.0", type: browser }, - engine: { name: Gecko, version: "19.0" }, - os: - { name: "OS X", version: { value: "10.8", nickname: "Mountain Lion" } }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Firefox 19.0 on OS X Mountain Lion 10.8" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20130102 Firefox/20.0" - result: - { - browser: { name: Firefox, version: "20.0", type: browser }, - engine: { name: Gecko, version: "20.0" }, - os: - { name: "OS X", version: { value: "10.8", nickname: "Mountain Lion" } }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Firefox 20.0 on OS X Mountain Lion 10.8" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.8; xx; rv:1.9.0.19) Gecko/2010031218 Firefox/3.0.19" - result: - { - browser: { name: Firefox, version: 3.0.19, type: browser }, - engine: { name: Gecko, version: 1.9.0 }, - os: - { name: "OS X", version: { value: "10.8", nickname: "Mountain Lion" } }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Firefox 3.0.19 on OS X Mountain Lion 10.8" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; xx; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12" - result: - { - browser: { name: Firefox, version: 1.5.0.12, type: browser }, - engine: { name: Gecko, version: 1.8.0 }, - os: { name: "OS X" }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Firefox 1.5.0.12 on OS X" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; xx; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15" - result: - { - browser: { name: Firefox, version: 2.0.0.15, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: "OS X" }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Firefox 2.0.0.15 on OS X" -- headers: "User-Agent: Mozilla/5.0 (OS/2; U; Warp 3; xx; rv:1.8.1.17) Gecko/20080925 Firefox/2.0.0.17" - result: - { - browser: { name: Firefox, version: 2.0.0.17, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: OS/2, version: { value: "3", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 2.0.0.17 on OS/2 Warp 3" -- headers: "User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.7.12) Gecko/20050922 Firefox/1.0.7" - result: - { - browser: { name: Firefox, version: 1.0.7, type: browser }, - engine: { name: Gecko, version: 1.7.12 }, - os: { name: OS/2, version: { value: "4.5", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 1.0.7 on OS/2 Warp 4.5" -- headers: "User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.8.1.11) Gecko/20071209 Firefox/2.0.0.11" - result: - { - browser: { name: Firefox, version: 2.0.0.11, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: OS/2, version: { value: "4.5", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 2.0.0.11 on OS/2 Warp 4.5" -- headers: "User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.9) Gecko/20100101 Firefox/10.0.9" - result: - { - browser: { name: Firefox, version: 10.0.9, type: browser }, - engine: { name: Gecko, version: 10.0.9 }, - os: { name: OS/2, version: { value: "4.5", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 10.0.9 on OS/2 Warp 4.5" -- headers: "User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox/17.0" - result: - { - browser: { name: Firefox, version: "17.0", type: browser }, - engine: { name: Gecko, version: "17.0" }, - os: { name: OS/2, version: { value: "4.5", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 17.0 on OS/2 Warp 4.5" -- headers: "User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0" - result: - { - browser: { name: Firefox, version: "31.0", type: browser }, - engine: { name: Gecko, version: "31.0" }, - os: { name: OS/2, version: { value: "4.5", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 31.0 on OS/2 Warp 4.5" -- headers: "User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:6.0) Gecko/20100101 Firefox/6.0" - result: - { - browser: { name: Firefox, version: "6.0", type: browser }, - engine: { name: Gecko, version: "6.0" }, - os: { name: OS/2, version: { value: "4.5", nickname: Warp } }, - device: { type: desktop }, - } - readable: "Firefox 6.0 on OS/2 Warp 4.5" -- headers: "User-Agent: Mozilla/5.0 (Photon; U; QNX x86pc; xx; rv:1.8.1.20) Gecko/-0000001 BonEcho/2.0.0.20" - result: - { - browser: { name: Firefox, version: 2.0.0.20, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: QNX }, - device: { type: mobile, subtype: feature }, - } - readable: "Firefox BonEcho 2.0.0.20 on QNX" -- headers: "User-Agent: Mozilla/5.0 (Photon; U; QNX x86pc; xx; rv:1.8.1.5pre) Gecko/20070709 BonEcho/2.0.0.5pre" - result: - { - browser: { name: Firefox, version: 2.0.0.5, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: QNX }, - device: { type: mobile, subtype: feature }, - } - readable: "Firefox BonEcho 2.0.0.5 on QNX" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 4.0; rv:35.0) Gecko/20100101 Firefox/35.0" - result: - { - browser: { name: Firefox, version: "35.0", type: browser }, - engine: { name: Gecko, version: "35.0" }, - os: { name: Windows, version: { value: "4.0", alias: "NT 4.0" } }, - device: { type: desktop }, - } - readable: "Firefox 35.0 on Windows NT 4.0" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20120329 Firefox/13.0a2" - result: - { - browser: { name: Firefox, version: 13.0a2, type: browser }, - engine: { name: Gecko, version: "13.0" }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Firefox Aurora 13.0a2 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/19.0 Firefox/19.0" - result: - { - browser: { name: Firefox, version: "19.0", type: browser }, - engine: { name: Gecko, version: "19.0" }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Firefox 19.0 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0b6) Gecko/20100101 Firefox/4.0b6" - result: - { - browser: { name: Firefox, version: 4.0b6, type: browser }, - engine: { name: Gecko, version: 2.0b6 }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Firefox Beta 4.0b6 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0" - result: - { - browser: { name: Firefox, version: "15.0", type: browser }, - engine: { name: Gecko, version: "15.0" }, - os: { name: Windows, version: { value: "5.2", alias: "Server 2003" } }, - device: { type: desktop }, - } - readable: "Firefox 15.0 on Windows Server 2003" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:21.0) Gecko/20130113 Firefox/21.0" - result: - { - browser: { name: Firefox, version: "21.0", type: browser }, - engine: { name: Gecko, version: "21.0" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Firefox 21.0 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:3.0) Gecko/20100101 Firefox/3.0" - result: - { - browser: { name: Firefox, version: "3.0", type: browser }, - engine: { name: Gecko, version: "3.0" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Firefox 3.0 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:5.0) Gecko/20100101 Firefox/5.0" - result: - { - browser: { name: Firefox, version: "5.0", type: browser }, - engine: { name: Gecko, version: "5.0" }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Firefox 5.0 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20130627 Firefox/25.0" - result: - { - browser: { name: Firefox, version: "25.0", type: browser }, - engine: { name: Gecko, version: "25.0" }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Firefox 25.0 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/16.0 Firefox/16.0" - result: - { - browser: { name: Firefox, version: "16.0", type: browser }, - engine: { name: Gecko, version: "16.0" }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Firefox 16.0 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:7.0) Gecko/20110814 Firefox/7.0" - result: - { - browser: { name: Firefox, version: "7.0", type: browser }, - engine: { name: Gecko, version: "7.0" }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Firefox 7.0 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20130129 Firefox/20.0" - result: - { - browser: { name: Firefox, version: "20.0", type: browser }, - engine: { name: Gecko, version: "20.0" }, - os: { name: Windows, version: { value: "6.2", alias: "8" } }, - device: { type: desktop }, - } - readable: "Firefox 20.0 on Windows 8" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Win95; xx; rv:1.7.13) Gecko/20060410 Firefox/1.0.8" - result: - { - browser: { name: Firefox, version: 1.0.8, type: browser }, - engine: { name: Gecko, version: 1.7.13 }, - os: { name: Windows, version: { value: "4.0", alias: "95" } }, - device: { type: desktop }, - } - readable: "Firefox 1.0.8 on Windows 95" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Win98; xx; rv:1.7.12) Gecko/20050915 Firefox/1.0.7" - result: - { - browser: { name: Firefox, version: 1.0.7, type: browser }, - engine: { name: Gecko, version: 1.7.12 }, - os: { name: Windows, version: { value: "4.1", alias: "98" } }, - device: { type: desktop }, - } - readable: "Firefox 1.0.7 on Windows 98" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; xx; rv:1.8.1) Gecko/20061010 Firefox/2.0" - result: - { - browser: { name: Firefox, version: "2.0", type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: Windows, version: { value: "4.0", alias: "NT 4.0" } }, - device: { type: desktop }, - } - readable: "Firefox 2.0 on Windows NT 4.0" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx; rv:1.9.1.5pre) Gecko/20091017 Shiretoko/3.5.5pre" - result: - { - browser: { name: Firefox, version: 3.5.5, type: browser }, - engine: { name: Gecko, version: 1.9.1 }, - os: { name: Windows, version: { value: "5.1", alias: XP } }, - device: { type: desktop }, - } - readable: "Firefox Shiretoko 3.5.5 on Windows XP" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12" - result: - { - browser: { name: Firefox, version: 3.0.12, type: browser }, - engine: { name: Gecko, version: 1.9.0 }, - os: { name: Windows, version: { value: "6.0", alias: Vista } }, - device: { type: desktop }, - } - readable: "Firefox 3.0.12 on Windows Vista" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1" - result: - { - browser: - { - name: Firebird, - family: { name: Firefox, version: 0.6.1 }, - version: 0.6.1, - type: browser, - }, - engine: { name: Gecko, version: 1.5a }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Firebird 0.6.1 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.8.1.22pre) Gecko/20090330 BonEcho/2.0.0.22pre" - result: - { - browser: { name: Firefox, version: 2.0.0.22, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Firefox BonEcho 2.0.0.22 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.9.3a4pre) Gecko/20100405 Minefield/3.7a4pre" - result: - { - browser: { name: Firefox, version: 3.7a4, type: browser }, - engine: { name: Gecko, version: 1.9.3a4pre }, - os: { name: Windows, version: { value: "6.1", alias: "7" } }, - device: { type: desktop }, - } - readable: "Firefox Minefield 3.7a4 on Windows 7" -- headers: "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.2; xx; rv:1.5) Gecko/20031006 Firebird/0.7" - result: - { - browser: - { - name: Firebird, - family: { name: Firefox, version: "0.7" }, - version: "0.7", - type: browser, - }, - engine: { name: Gecko, version: "1.5" }, - os: { name: Windows, version: { value: "6.2", alias: "8" } }, - device: { type: desktop }, - } - readable: "Firebird 0.7 on Windows 8" -- headers: "User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0" - result: - { - browser: { name: Firefox, version: "41.0", type: browser }, - engine: { name: Gecko, version: "41.0" }, - os: { name: Fedora }, - device: { type: desktop }, - } - readable: "Firefox 41.0 on Fedora" -- headers: "User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/201071 Firefox/17.0" - result: - { - browser: { name: Firefox, version: "17.0", type: browser }, - engine: { name: Gecko, version: "17.0" }, - os: { name: FreeBSD, family: BSD }, - device: { type: desktop }, - } - readable: "Firefox 17.0 on FreeBSD" -- headers: "User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:27.0) Gecko/20100101 Firefox/27.0" - result: - { - browser: { name: Firefox, version: "27.0", type: browser }, - engine: { name: Gecko, version: "27.0" }, - os: { name: FreeBSD, family: BSD }, - device: { type: desktop }, - } - readable: "Firefox 27.0 on FreeBSD" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) Gecko/20100101 Firefox/17.0" - result: - { - browser: { name: Firefox, version: "17.0", type: browser }, - engine: { name: Gecko }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox 17.0 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20130117 Firefox/20.0 Aurora/20.0a2" - result: - { - browser: { name: Firefox, version: 20.0a2, type: browser }, - engine: { name: Gecko, version: "20.0" }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox Aurora 20.0a2 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20130614 Firefox/24.0" - result: - { - browser: { name: Firefox, version: "24.0", type: browser }, - engine: { name: Gecko, version: "24.0" }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox 24.0 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20130717 Firefox/24.0 Aurora/24.0a2" - result: - { - browser: { name: Firefox, version: 24.0a2, type: browser }, - engine: { name: Gecko, version: "24.0" }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox Aurora 24.0a2 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 Aurora/27.0a2" - result: - { - browser: { name: Firefox, version: 27.0a2, type: browser }, - engine: { name: Gecko, version: "27.0" }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox Aurora 27.0a2 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111218 Firefox/8.0" - result: - { - browser: { name: Firefox, version: "8.0", type: browser }, - engine: { name: Gecko, version: "8.0" }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox 8.0 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; OpenBSD amd64; rv:12.0) Gecko/20100101 Firefox/12.0" - result: - { - browser: { name: Firefox, version: "12.0", type: browser }, - engine: { name: Gecko, version: "12.0" }, - os: { name: OpenBSD, family: BSD }, - device: { type: desktop }, - } - readable: "Firefox 12.0 on OpenBSD" -- headers: "User-Agent: Mozilla/5.0 (X11; OpenBSD i386; rv:25.0) Gecko/20100101 Firefox/25.0" - result: - { - browser: { name: Firefox, version: "25.0", type: browser }, - engine: { name: Gecko, version: "25.0" }, - os: { name: OpenBSD, family: BSD }, - device: { type: desktop }, - } - readable: "Firefox 25.0 on OpenBSD" -- headers: "User-Agent: Mozilla/5.0 (X11; OpenBSD i386; rv:8.0.1) Gecko/20100101 Firefox/8.0.1" - result: - { - browser: { name: Firefox, version: 8.0.1, type: browser }, - engine: { name: Gecko, version: 8.0.1 }, - os: { name: OpenBSD, family: BSD }, - device: { type: desktop }, - } - readable: "Firefox 8.0.1 on OpenBSD" -- headers: "User-Agent: Mozilla/5.0 (X11; Scientific Linux x86_64; rv:17.0) Red Hat/6.4 Gecko/20130917 Firefox/17.0" - result: - { - browser: { name: Firefox, version: "17.0", type: browser }, - engine: { name: Gecko, version: "17.0" }, - os: { name: "Red Hat" }, - device: { type: desktop }, - } - readable: "Firefox 17.0 on Red Hat" -- headers: "User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:2.0) Gecko/20100101 Firefox/4.0" - result: - { - browser: { name: Firefox, version: "4.0", type: browser }, - engine: { name: Gecko, version: "2.0" }, - os: { name: Solaris, family: UNIX }, - device: { type: desktop }, - } - readable: "Firefox 4.0 on Solaris" -- headers: "User-Agent: Mozilla/5.0 (X11; SunOS sun4u; rv:17.0) Gecko/17.0 Firefox/17.0" - result: - { - browser: { name: Firefox, version: "17.0", type: browser }, - engine: { name: Gecko, version: "17.0" }, - os: { name: Solaris, family: UNIX }, - device: { type: desktop }, - } - readable: "Firefox 17.0 on Solaris" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.8.1.18) Gecko/20110906 BonEcho/2.0.0.18" - result: - { - browser: { name: Firefox, version: 2.0.0.18, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox BonEcho 2.0.0.18 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.7) Gecko/20100303 Shiretoko/3.5.7" - result: - { - browser: { name: Firefox, version: 3.5.7, type: browser }, - engine: { name: Gecko, version: 1.9.1 }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox Shiretoko 3.5.7 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9" - result: - { - browser: { name: Firefox, version: 3.5.9, type: browser }, - engine: { name: Gecko, version: 1.9.1 }, - os: { name: Fedora, version: "12" }, - device: { type: desktop }, - } - readable: "Firefox 3.5.9 on Fedora 12" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9b3pre) Gecko/2008020404 Minefield/3.0b3pre" - result: - { - browser: { name: Firefox, version: 3.0b3, type: browser }, - engine: { name: Gecko, version: 1.9b3pre }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox Minefield 3.0b3 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; U; OpenVMS HP_rx2660__(1.42GHz/6.0MB); xx; rv:1.8.1.18) Gecko/20081201 BonEcho/2.0.0.18" - result: - { - browser: { name: Firefox, version: 2.0.0.18, type: browser }, - engine: { name: Gecko, version: 1.8.1 }, - os: { name: OpenVMS }, - device: { type: desktop }, - } - readable: "Firefox BonEcho 2.0.0.18 on OpenVMS" -- headers: "User-Agent: Mozilla/5.0 (X11; U; QNX x86pc; xx; rv:1.9.2.15) Gecko/20110316 Namoroka/3.6.15" - result: - { - browser: { name: Firefox, version: 3.6.15, type: browser }, - engine: { name: Gecko, version: 1.9.2 }, - os: { name: QNX }, - device: { type: mobile, subtype: feature }, - } - readable: "Firefox Namoroka 3.6.15 on QNX" -- headers: "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20120426 Firefox/15.0a1" - result: - { - browser: { name: Firefox, version: 15.0a1, type: browser }, - engine: { name: Gecko, version: "15.0" }, - os: { name: Ubuntu }, - device: { type: desktop }, - } - readable: "Firefox Aurora 15.0a1 on Ubuntu" -- headers: "User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0" - result: - { - browser: { name: Firefox, version: "37.0", type: browser }, - engine: { name: Gecko, version: "37.0" }, - os: { name: Ubuntu }, - device: { type: desktop }, - } - readable: "Firefox 37.0 on Ubuntu" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008100314 GranParadiso/3.0.3" - result: - { - browser: { name: Firefox, version: 3.0.3, type: browser }, - engine: { name: Gecko, version: 1.9.0 }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Firefox Gran Paradiso 3.0.3 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0 Slackware/14.1" - result: - { - browser: { name: Firefox, version: "33.0", type: browser }, - engine: { name: Gecko, version: "33.0" }, - os: { name: Slackware, version: "14.1" }, - device: { type: desktop }, - } - readable: "Firefox 33.0 on Slackware 14.1" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4" - result: - { - browser: { name: Phoenix, version: "0.4", type: browser }, - engine: { name: Gecko, version: 1.2b }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Phoenix 0.4 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Darwin i386; en-US; rv:1.9.1.4) Gecko/20100311 Shiretoko/3.5.5" - readable: "Firefox Shiretoko 3.5.5 on Darwin" - result: - { - browser: { name: Firefox, version: 3.5.5, type: browser }, - engine: { name: Gecko, version: 1.9.1 }, - os: { name: Darwin }, - device: { type: desktop }, - } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0" - readable: "Firefox 100.0 on Windows 10" - result: - { - browser: { name: Firefox, version: "100.0", type: browser }, - engine: { name: Gecko, version: "100.0" }, - os: { name: Windows, version: { alias: "10", value: "10.0" } }, - device: { type: desktop }, - } +- + headers: 'User-Agent: Mozilla/5.0 (BeOS; U; Haiku BePC; xx; rv:1.8.1.25pre) Gecko/20120930 BonEcho/2.0.0.22pre' + result: { browser: { name: Firefox, version: 2.0.0.22, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Haiku }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.22 on Haiku' +- + headers: 'User-Agent: Mozilla/5.0 (ChoX11; U; RISC OS; xx; rv:1.8.1.20) Gecko/20090803 BonEcho/2.0.0.20' + result: { browser: { name: Firefox, version: 2.0.0.20, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'RISC OS' }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.20 on RISC OS' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20121220 Firefox/19.0' + result: { browser: { name: Firefox, version: '19.0', type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 19.0 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20130102 Firefox/20.0' + result: { browser: { name: Firefox, version: '20.0', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 20.0 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.8; xx; rv:1.9.0.19) Gecko/2010031218 Firefox/3.0.19' + result: { browser: { name: Firefox, version: 3.0.19, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: 'OS X', version: { value: '10.8', nickname: 'Mountain Lion' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 3.0.19 on OS X Mountain Lion 10.8' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; xx; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12' + result: { browser: { name: Firefox, version: 1.5.0.12, type: browser }, engine: { name: Gecko, version: 1.8.0 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 1.5.0.12 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; xx; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15' + result: { browser: { name: Firefox, version: 2.0.0.15, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: 'OS X' }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Firefox 2.0.0.15 on OS X' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 3; xx; rv:1.8.1.17) Gecko/20080925 Firefox/2.0.0.17' + result: { browser: { name: Firefox, version: 2.0.0.17, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OS/2, version: { value: '3', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 2.0.0.17 on OS/2 Warp 3' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.7.12) Gecko/20050922 Firefox/1.0.7' + result: { browser: { name: Firefox, version: 1.0.7, type: browser }, engine: { name: Gecko, version: 1.7.12 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 1.0.7 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; U; Warp 4.5; xx; rv:1.8.1.11) Gecko/20071209 Firefox/2.0.0.11' + result: { browser: { name: Firefox, version: 2.0.0.11, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 2.0.0.11 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:10.0.9) Gecko/20100101 Firefox/10.0.9' + result: { browser: { name: Firefox, version: 10.0.9, type: browser }, engine: { name: Gecko, version: 10.0.9 }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 10.0.9 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:17.0) Gecko/20100101 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 17.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:31.0) Gecko/20100101 Firefox/31.0' + result: { browser: { name: Firefox, version: '31.0', type: browser }, engine: { name: Gecko, version: '31.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 31.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (OS/2; Warp 4.5; rv:6.0) Gecko/20100101 Firefox/6.0' + result: { browser: { name: Firefox, version: '6.0', type: browser }, engine: { name: Gecko, version: '6.0' }, os: { name: OS/2, version: { value: '4.5', nickname: Warp } }, device: { type: desktop } } + readable: 'Firefox 6.0 on OS/2 Warp 4.5' +- + headers: 'User-Agent: Mozilla/5.0 (Photon; U; QNX x86pc; xx; rv:1.8.1.20) Gecko/-0000001 BonEcho/2.0.0.20' + result: { browser: { name: Firefox, version: 2.0.0.20, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: QNX }, device: { type: mobile, subtype: feature } } + readable: 'Firefox BonEcho 2.0.0.20 on QNX' +- + headers: 'User-Agent: Mozilla/5.0 (Photon; U; QNX x86pc; xx; rv:1.8.1.5pre) Gecko/20070709 BonEcho/2.0.0.5pre' + result: { browser: { name: Firefox, version: 2.0.0.5, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: QNX }, device: { type: mobile, subtype: feature } } + readable: 'Firefox BonEcho 2.0.0.5 on QNX' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 4.0; rv:35.0) Gecko/20100101 Firefox/35.0' + result: { browser: { name: Firefox, version: '35.0', type: browser }, engine: { name: Gecko, version: '35.0' }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Firefox 35.0 on Windows NT 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:13.0) Gecko/20120329 Firefox/13.0a2' + result: { browser: { name: Firefox, version: 13.0a2, type: browser }, engine: { name: Gecko, version: '13.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox Aurora 13.0a2 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/19.0 Firefox/19.0' + result: { browser: { name: Firefox, version: '19.0', type: browser }, engine: { name: Gecko, version: '19.0' }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox 19.0 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0b6) Gecko/20100101 Firefox/4.0b6' + result: { browser: { name: Firefox, version: 4.0b6, type: browser }, engine: { name: Gecko, version: 2.0b6 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox Beta 4.0b6 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0' + result: { browser: { name: Firefox, version: '15.0', type: browser }, engine: { name: Gecko, version: '15.0' }, os: { name: Windows, version: { value: '5.2', alias: 'Server 2003' } }, device: { type: desktop } } + readable: 'Firefox 15.0 on Windows Server 2003' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:21.0) Gecko/20130113 Firefox/21.0' + result: { browser: { name: Firefox, version: '21.0', type: browser }, engine: { name: Gecko, version: '21.0' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 21.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:3.0) Gecko/20100101 Firefox/3.0' + result: { browser: { name: Firefox, version: '3.0', type: browser }, engine: { name: Gecko, version: '3.0' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 3.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.0; rv:5.0) Gecko/20100101 Firefox/5.0' + result: { browser: { name: Firefox, version: '5.0', type: browser }, engine: { name: Gecko, version: '5.0' }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 5.0 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20130627 Firefox/25.0' + result: { browser: { name: Firefox, version: '25.0', type: browser }, engine: { name: Gecko, version: '25.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox 25.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/16.0 Firefox/16.0' + result: { browser: { name: Firefox, version: '16.0', type: browser }, engine: { name: Gecko, version: '16.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox 16.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:7.0) Gecko/20110814 Firefox/7.0' + result: { browser: { name: Firefox, version: '7.0', type: browser }, engine: { name: Gecko, version: '7.0' }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox 7.0 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 6.2; rv:20.0) Gecko/20130129 Firefox/20.0' + result: { browser: { name: Firefox, version: '20.0', type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Firefox 20.0 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Win95; xx; rv:1.7.13) Gecko/20060410 Firefox/1.0.8' + result: { browser: { name: Firefox, version: 1.0.8, type: browser }, engine: { name: Gecko, version: 1.7.13 }, os: { name: Windows, version: { value: '4.0', alias: '95' } }, device: { type: desktop } } + readable: 'Firefox 1.0.8 on Windows 95' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Win98; xx; rv:1.7.12) Gecko/20050915 Firefox/1.0.7' + result: { browser: { name: Firefox, version: 1.0.7, type: browser }, engine: { name: Gecko, version: 1.7.12 }, os: { name: Windows, version: { value: '4.1', alias: '98' } }, device: { type: desktop } } + readable: 'Firefox 1.0.7 on Windows 98' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; xx; rv:1.8.1) Gecko/20061010 Firefox/2.0' + result: { browser: { name: Firefox, version: '2.0', type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Windows, version: { value: '4.0', alias: 'NT 4.0' } }, device: { type: desktop } } + readable: 'Firefox 2.0 on Windows NT 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; xx; rv:1.9.1.5pre) Gecko/20091017 Shiretoko/3.5.5pre' + result: { browser: { name: Firefox, version: 3.5.5, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Windows, version: { value: '5.1', alias: XP } }, device: { type: desktop } } + readable: 'Firefox Shiretoko 3.5.5 on Windows XP' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; xx; rv:1.9.0.12) Gecko/2009070611 Firefox/3.0.12' + result: { browser: { name: Firefox, version: 3.0.12, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: Windows, version: { value: '6.0', alias: Vista } }, device: { type: desktop } } + readable: 'Firefox 3.0.12 on Windows Vista' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1' + result: { browser: { name: Firebird, family: { name: Firefox, version: 0.6.1 }, version: 0.6.1, type: browser }, engine: { name: Gecko, version: 1.5a }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firebird 0.6.1 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.8.1.22pre) Gecko/20090330 BonEcho/2.0.0.22pre' + result: { browser: { name: Firefox, version: 2.0.0.22, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.22 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; xx; rv:1.9.3a4pre) Gecko/20100405 Minefield/3.7a4pre' + result: { browser: { name: Firefox, version: 3.7a4, type: browser }, engine: { name: Gecko, version: 1.9.3a4pre }, os: { name: Windows, version: { value: '6.1', alias: '7' } }, device: { type: desktop } } + readable: 'Firefox Minefield 3.7a4 on Windows 7' +- + headers: 'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.2; xx; rv:1.5) Gecko/20031006 Firebird/0.7' + result: { browser: { name: Firebird, family: { name: Firefox, version: '0.7' }, version: '0.7', type: browser }, engine: { name: Gecko, version: '1.5' }, os: { name: Windows, version: { value: '6.2', alias: '8' } }, device: { type: desktop } } + readable: 'Firebird 0.7 on Windows 8' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0' + result: { browser: { name: Firefox, version: '41.0', type: browser }, engine: { name: Gecko, version: '41.0' }, os: { name: Fedora }, device: { type: desktop } } + readable: 'Firefox 41.0 on Fedora' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/201071 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 17.0 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:27.0) Gecko/20100101 Firefox/27.0' + result: { browser: { name: Firefox, version: '27.0', type: browser }, engine: { name: Gecko, version: '27.0' }, os: { name: FreeBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 27.0 on FreeBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) Gecko/20100101 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox 17.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:20.0) Gecko/20130117 Firefox/20.0 Aurora/20.0a2' + result: { browser: { name: Firefox, version: 20.0a2, type: browser }, engine: { name: Gecko, version: '20.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Aurora 20.0a2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20130614 Firefox/24.0' + result: { browser: { name: Firefox, version: '24.0', type: browser }, engine: { name: Gecko, version: '24.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox 24.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20130717 Firefox/24.0 Aurora/24.0a2' + result: { browser: { name: Firefox, version: 24.0a2, type: browser }, engine: { name: Gecko, version: '24.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Aurora 24.0a2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0 Aurora/27.0a2' + result: { browser: { name: Firefox, version: 27.0a2, type: browser }, engine: { name: Gecko, version: '27.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Aurora 27.0a2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:8.0) Gecko/20111218 Firefox/8.0' + result: { browser: { name: Firefox, version: '8.0', type: browser }, engine: { name: Gecko, version: '8.0' }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox 8.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD amd64; rv:12.0) Gecko/20100101 Firefox/12.0' + result: { browser: { name: Firefox, version: '12.0', type: browser }, engine: { name: Gecko, version: '12.0' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 12.0 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD i386; rv:25.0) Gecko/20100101 Firefox/25.0' + result: { browser: { name: Firefox, version: '25.0', type: browser }, engine: { name: Gecko, version: '25.0' }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 25.0 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; OpenBSD i386; rv:8.0.1) Gecko/20100101 Firefox/8.0.1' + result: { browser: { name: Firefox, version: 8.0.1, type: browser }, engine: { name: Gecko, version: 8.0.1 }, os: { name: OpenBSD, family: BSD }, device: { type: desktop } } + readable: 'Firefox 8.0.1 on OpenBSD' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Scientific Linux x86_64; rv:17.0) Red Hat/6.4 Gecko/20130917 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: 'Red Hat' }, device: { type: desktop } } + readable: 'Firefox 17.0 on Red Hat' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:2.0) Gecko/20100101 Firefox/4.0' + result: { browser: { name: Firefox, version: '4.0', type: browser }, engine: { name: Gecko, version: '2.0' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Firefox 4.0 on Solaris' +- + headers: 'User-Agent: Mozilla/5.0 (X11; SunOS sun4u; rv:17.0) Gecko/17.0 Firefox/17.0' + result: { browser: { name: Firefox, version: '17.0', type: browser }, engine: { name: Gecko, version: '17.0' }, os: { name: Solaris, family: UNIX }, device: { type: desktop } } + readable: 'Firefox 17.0 on Solaris' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.8.1.18) Gecko/20110906 BonEcho/2.0.0.18' + result: { browser: { name: Firefox, version: 2.0.0.18, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.18 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.7) Gecko/20100303 Shiretoko/3.5.7' + result: { browser: { name: Firefox, version: 3.5.7, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Shiretoko 3.5.7 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9.1.9) Gecko/20100330 Fedora/3.5.9-2.fc12 Firefox/3.5.9' + result: { browser: { name: Firefox, version: 3.5.9, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Fedora, version: '12' }, device: { type: desktop } } + readable: 'Firefox 3.5.9 on Fedora 12' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx; rv:1.9b3pre) Gecko/2008020404 Minefield/3.0b3pre' + result: { browser: { name: Firefox, version: 3.0b3, type: browser }, engine: { name: Gecko, version: 1.9b3pre }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Minefield 3.0b3 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; OpenVMS HP_rx2660__(1.42GHz/6.0MB); xx; rv:1.8.1.18) Gecko/20081201 BonEcho/2.0.0.18' + result: { browser: { name: Firefox, version: 2.0.0.18, type: browser }, engine: { name: Gecko, version: 1.8.1 }, os: { name: OpenVMS }, device: { type: desktop } } + readable: 'Firefox BonEcho 2.0.0.18 on OpenVMS' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; QNX x86pc; xx; rv:1.9.2.15) Gecko/20110316 Namoroka/3.6.15' + result: { browser: { name: Firefox, version: 3.6.15, type: browser }, engine: { name: Gecko, version: 1.9.2 }, os: { name: QNX }, device: { type: mobile, subtype: feature } } + readable: 'Firefox Namoroka 3.6.15 on QNX' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20120426 Firefox/15.0a1' + result: { browser: { name: Firefox, version: 15.0a1, type: browser }, engine: { name: Gecko, version: '15.0' }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Firefox Aurora 15.0a1 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:37.0) Gecko/20100101 Firefox/37.0' + result: { browser: { name: Firefox, version: '37.0', type: browser }, engine: { name: Gecko, version: '37.0' }, os: { name: Ubuntu }, device: { type: desktop } } + readable: 'Firefox 37.0 on Ubuntu' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008100314 GranParadiso/3.0.3' + result: { browser: { name: Firefox, version: 3.0.3, type: browser }, engine: { name: Gecko, version: 1.9.0 }, os: { name: Linux }, device: { type: desktop } } + readable: 'Firefox Gran Paradiso 3.0.3 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:33.0) Gecko/20100101 Firefox/33.0 Slackware/14.1' + result: { browser: { name: Firefox, version: '33.0', type: browser }, engine: { name: Gecko, version: '33.0' }, os: { name: Slackware, version: '14.1' }, device: { type: desktop } } + readable: 'Firefox 33.0 on Slackware 14.1' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2b) Gecko/20021029 Phoenix/0.4' + result: { browser: { name: Phoenix, version: '0.4', type: browser }, engine: { name: Gecko, version: 1.2b }, os: { name: Linux }, device: { type: desktop } } + readable: 'Phoenix 0.4 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; U; Darwin i386; en-US; rv:1.9.1.4) Gecko/20100311 Shiretoko/3.5.5' + readable: 'Firefox Shiretoko 3.5.5 on Darwin' + result: { browser: { name: Firefox, version: 3.5.5, type: browser }, engine: { name: Gecko, version: 1.9.1 }, os: { name: Darwin }, device: { type: desktop } } +- + headers: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0" + readable: "Firefox 100.0 on Windows 10" + result: { browser: { name: Firefox, version: "100.0", type: browser }, engine: { name: Gecko, version: "100.0" }, os: { name: Windows, version: { alias: "10", value: "10.0" } }, device: { type: desktop } } \ No newline at end of file diff --git a/test/data/desktop/browser-flow.yaml b/test/data/desktop/browser-flow.yaml index 14629ae..9a75722 100644 --- a/test/data/desktop/browser-flow.yaml +++ b/test/data/desktop/browser-flow.yaml @@ -1,42 +1,12 @@ -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) EkiohFlow/5.10.0.32202 Flow/5.10.0 (like Gecko Firefox/62.0 rv:62.0)" - result: - { - browser: { name: Flow, version: 5.10.0, type: browser }, - engine: { name: EkiohFlow, version: 5.10.0.32202 }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "10.15", nickname: Catalina }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Flow 5.10.0 on macOS Catalina 10.15" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) EkiohFlow/5.9.4.32015 Flow/5.9.4 (like Gecko Firefox/53.0 rv:53.0)" - result: - { - browser: { name: Flow, version: 5.9.4, type: browser }, - engine: { name: EkiohFlow, version: 5.9.4.32015 }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "10.15", nickname: Catalina }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Flow 5.9.4 on macOS Catalina 10.15" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) EkiohFlow/5.9.4.32015M Flow/5.9.4 (like Gecko Firefox/53.0 rv:53.0)" - result: - { - browser: { name: "Flow Nightly Build", type: browser }, - engine: { name: EkiohFlow, version: 5.9.4.32015 }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "10.15", nickname: Catalina }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Flow Nightly Build on macOS Catalina 10.15" +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) EkiohFlow/5.10.0.32202 Flow/5.10.0 (like Gecko Firefox/62.0 rv:62.0)' + result: { browser: { name: Flow, version: 5.10.0, type: browser }, engine: { name: EkiohFlow, version: 5.10.0.32202 }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Flow 5.10.0 on macOS Catalina 10.15' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) EkiohFlow/5.9.4.32015 Flow/5.9.4 (like Gecko Firefox/53.0 rv:53.0)' + result: { browser: { name: Flow, version: 5.9.4, type: browser }, engine: { name: EkiohFlow, version: 5.9.4.32015 }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Flow 5.9.4 on macOS Catalina 10.15' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) EkiohFlow/5.9.4.32015M Flow/5.9.4 (like Gecko Firefox/53.0 rv:53.0)' + result: { browser: { name: 'Flow Nightly Build', type: browser }, engine: { name: EkiohFlow, version: 5.9.4.32015 }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } + readable: 'Flow Nightly Build on macOS Catalina 10.15' \ No newline at end of file diff --git a/test/data/desktop/platform-electron.yaml b/test/data/desktop/platform-electron.yaml index 729d915..78a758e 100644 --- a/test/data/desktop/platform-electron.yaml +++ b/test/data/desktop/platform-electron.yaml @@ -1,176 +1,44 @@ -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/0.136.0 Chrome/37.0.2062.102 AtomShell/0.17.1 Safari/537.36" - result: - { - browser: - { - name: Atom, - using: { name: Electron, version: 0.17.1 }, - family: { name: Chrome, version: 37 }, - version: 0.136.0, - type: "app:editor", - }, - engine: { name: Blink }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Atom 0.136.0 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/1.2.4 Chrome/45.0.2454.85 Electron/0.34.0 Safari/537.36" - result: - { - browser: - { - name: Atom, - using: { name: Electron, version: 0.34.0 }, - family: { name: Chrome, version: 45 }, - version: 1.2.4, - type: "app:editor", - }, - engine: { name: Blink }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Atom 1.2.4 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Atom/0.136.0 Chrome/37.0.2062.102 AtomShell/0.17.1 Safari/537.36" - result: - { - browser: - { - name: Atom, - using: { name: Electron, version: 0.17.1 }, - family: { name: Chrome, version: 37 }, - version: 0.136.0, - type: "app:editor", - }, - engine: { name: Blink }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Atom 0.136.0 on Linux" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) AtomShellDefaultApp/0.1.0 Chrome/37.0.2062.102 AtomShell/0.17.2 Safari/537.36" - result: - { - browser: - { - using: { name: Electron, version: 0.17.2 }, - family: { name: Chrome, version: 37 }, - type: browser, - }, - engine: { name: Blink }, - os: { name: Linux }, - device: { type: desktop }, - } - readable: "Electron 0.17.2 on Linux" -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.40 Electron/11.0.0-beta.20 Safari/537.36" - readable: "Electron 11.0.0 on macOS Big Sur 11.0" - result: - { - browser: - { - using: { name: Electron, version: 11.0.0 }, - family: { name: Chrome, version: 87 }, - type: browser, - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.0", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Electron/11.0.3 Safari/537.36" - readable: "Electron 11.0.3 on macOS Big Sur 11.1" - result: - { - browser: - { - using: { name: Electron, version: 11.0.3 }, - family: { name: Chrome, version: 87 }, - type: browser, - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.1", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Electron/11.0.3 Safari/537.36" - readable: "Electron 11.0.3 on macOS Big Sur 11.2" - result: - { - browser: - { - using: { name: Electron, version: 11.0.3 }, - family: { name: Chrome, version: 87 }, - type: browser, - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.2", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Electron/11.3.0 Safari/537.36" - readable: "Electron 11.3.0 on macOS Big Sur 11.2" - result: - { - browser: - { - using: { name: Electron, version: 11.3.0 }, - family: { name: Chrome, version: 87 }, - type: browser, - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.2", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.0.5 Safari/537.36" - readable: "Electron 12.0.5 on macOS Big Sur 11.2" - result: - { - browser: - { - using: { name: Electron, version: 12.0.5 }, - family: { name: Chrome, version: 89 }, - type: browser, - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.2", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } -- headers: "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_3_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.0.6 Safari/537.36" - readable: "Electron 12.0.6 on macOS Big Sur 11.3" - result: - { - browser: - { - using: { name: Electron, version: 12.0.6 }, - family: { name: Chrome, version: 89 }, - type: browser, - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "11.3", nickname: "Big Sur" }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/0.136.0 Chrome/37.0.2062.102 AtomShell/0.17.1 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.17.1 }, family: { name: Chrome, version: 37 }, version: 0.136.0, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 0.136.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Atom/1.2.4 Chrome/45.0.2454.85 Electron/0.34.0 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.34.0 }, family: { name: Chrome, version: 45 }, version: 1.2.4, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 1.2.4 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Atom/0.136.0 Chrome/37.0.2062.102 AtomShell/0.17.1 Safari/537.36' + result: { browser: { name: Atom, using: { name: Electron, version: 0.17.1 }, family: { name: Chrome, version: 37 }, version: 0.136.0, type: 'app:editor' }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Atom 0.136.0 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) AtomShellDefaultApp/0.1.0 Chrome/37.0.2062.102 AtomShell/0.17.2 Safari/537.36' + result: { browser: { using: { name: Electron, version: 0.17.2 }, family: { name: Chrome, version: 37 }, type: browser }, engine: { name: Blink }, os: { name: Linux }, device: { type: desktop } } + readable: 'Electron 0.17.2 on Linux' +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.40 Electron/11.0.0-beta.20 Safari/537.36' + readable: 'Electron 11.0.0 on macOS Big Sur 11.0' + result: { browser: { using: { name: Electron, version: 11.0.0 }, family: { name: Chrome, version: 87 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.0', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Electron/11.0.3 Safari/537.36' + readable: 'Electron 11.0.3 on macOS Big Sur 11.1' + result: { browser: { using: { name: Electron, version: 11.0.3 }, family: { name: Chrome, version: 87 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.1', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Electron/11.0.3 Safari/537.36' + readable: 'Electron 11.0.3 on macOS Big Sur 11.2' + result: { browser: { using: { name: Electron, version: 11.0.3 }, family: { name: Chrome, version: 87 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.2', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Electron/11.3.0 Safari/537.36' + readable: 'Electron 11.3.0 on macOS Big Sur 11.2' + result: { browser: { using: { name: Electron, version: 11.3.0 }, family: { name: Chrome, version: 87 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.2', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.0.5 Safari/537.36' + readable: 'Electron 12.0.5 on macOS Big Sur 11.2' + result: { browser: { using: { name: Electron, version: 12.0.5 }, family: { name: Chrome, version: 89 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.2', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_3_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.0.6 Safari/537.36' + readable: 'Electron 12.0.6 on macOS Big Sur 11.3' + result: { browser: { using: { name: Electron, version: 12.0.6 }, family: { name: Chrome, version: 89 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '11.3', nickname: 'Big Sur' } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 12_3_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.0.9 Safari/537.36' + readable: 'Electron 12.0.9 on macOS Monterey 12.3' + result: { browser: { using: { name: Electron, version: 12.0.9 }, family: { name: Chrome, version: 89 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '12.3', nickname: Monterey } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/gaming/microsoft.yaml b/test/data/gaming/microsoft.yaml index c24212d..f1d0945 100644 --- a/test/data/gaming/microsoft.yaml +++ b/test/data/gaming/microsoft.yaml @@ -18,3 +18,7 @@ headers: 'User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; Xbox)' result: { browser: { name: 'Internet Explorer', version: '9.0', type: browser }, engine: { name: Trident, version: '5.0' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox 360' } } readable: 'Internet Explorer 9.0 on a Microsoft Xbox 360' +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; Xbox; Xbox Series X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36 Edge/20.02' + result: { browser: { name: Edge, version: '20', type: browser }, engine: { name: EdgeHTML, version: '20.02' }, device: { type: gaming, subtype: console, manufacturer: Microsoft, model: 'Xbox Series X' } } + readable: 'Edge 20 on a Microsoft Xbox Series X' diff --git a/test/data/gaming/sony.yaml b/test/data/gaming/sony.yaml index 3455288..eb30c55 100644 --- a/test/data/gaming/sony.yaml +++ b/test/data/gaming/sony.yaml @@ -1,204 +1,212 @@ - headers: 'User-Agent: Mozilla/4.0 (PSP (PlayStation Portable); 2.00)' - result: { engine: { name: NetFront }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Portable' } } - readable: 'a Sony Playstation Portable' + result: { engine: { name: NetFront }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Portable' } } + readable: 'a Sony PlayStation Portable' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.10) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.10' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.10' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.10' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.10' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.11) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.11' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.11' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.11' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.11' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.31) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.31' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.31' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.31' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.31' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.41) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.41' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.41' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.41' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.41' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.50) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.50' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.50' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.50' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.50' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.53) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.53' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.53' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.53' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.53' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3 4.55) AppleWebKit/531.22.8 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.55' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 4.55' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '4.55' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 4.55' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3; 1.00)' - result: { engine: { name: NetFront }, os: { version: '1.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 1.00' + result: { engine: { name: NetFront }, os: { version: '1.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 1.00' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3; 2.00)' - result: { engine: { name: NetFront }, os: { version: '2.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 2.00' + result: { engine: { name: NetFront }, os: { version: '2.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 2.00' - headers: 'User-Agent: Mozilla/5.0 (PLAYSTATION 3; 3.55)' - result: { engine: { name: NetFront }, os: { version: '3.55' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'a Sony Playstation 3 running 3.55' + result: { engine: { name: NetFront }, os: { version: '3.55' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'a Sony PlayStation 3 running 3.55' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 3) SonyComputerEntertainmentEurope/531.3 (NCell) NuantiMeta/2.0' - result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'Nuanti Meta 2.0 on a Sony Playstation 3' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'Nuanti Meta 2.0 on a Sony PlayStation 3' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.000) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.000' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.000' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.000' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.000' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.51) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.51' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.51' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.51' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.51' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.52) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.52' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.52' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.52' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.52' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.60) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.60' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.60' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.60' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.60' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.61) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.61' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.61' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.61' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.61' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.62) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.62' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.62' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.62' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.62' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 1.70) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.70' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 1.70' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '1.70' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 1.70' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4 2.00) AppleWebKit/537.73 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '537.73' }, os: { version: '2.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'a Sony Playstation 4 running 2.00' + result: { engine: { name: Webkit, version: '537.73' }, os: { version: '2.00' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'a Sony PlayStation 4 running 2.00' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.00) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.00' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.00' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.50) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.50' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.50' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.50' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.50' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.51) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.51' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.51' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.51' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.51' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.52) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.52' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.52' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.52' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.52' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.60) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.60' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.60' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.60' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.60' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.61' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.61' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.61' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.61' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 1.80) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.80' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 1.80' + result: { engine: { name: Webkit, version: 531.22.8 }, os: { version: '1.80' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 1.80' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 2.60) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '2.60' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 2.60' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '2.60' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 2.60' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 2.61) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '2.61' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 2.61' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '2.61' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 2.61' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.00) AppleWebKit/536.26 (KHTML, like Gecko)' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 3.00' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 3.00' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.00) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 3.00' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.00' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 3.00' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.01) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.01' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 3.01' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.01' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 3.01' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.01) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2 VTE/2.50' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.01' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation TV' } } - readable: 'a Sony Playstation TV running 3.01' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.01' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation TV' } } + readable: 'a Sony PlayStation TV running 3.01' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.10) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.10' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 3.10' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.10' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 3.10' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.10) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2 VTE/2.50' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.10' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation TV' } } - readable: 'a Sony Playstation TV running 3.10' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.10' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation TV' } } + readable: 'a Sony PlayStation TV running 3.10' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.12) AppleWebKit/536.26 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.12' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 3.12' + result: { engine: { name: Webkit, version: '536.26' }, os: { version: '3.12' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 3.12' - headers: 'User-Agent: Mozilla/5.0 (PlayStation Vita 3.20) AppleWebKit/537.73 (KHTML, like Gecko) Silk/3.2' - result: { engine: { name: Webkit, version: '537.73' }, os: { version: '3.20' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'a Sony Playstation Vita running 3.20' + result: { engine: { name: Webkit, version: '537.73' }, os: { version: '3.20' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'a Sony PlayStation Vita running 3.20' - headers: 'User-Agent: Sony Playstation2 (Utility Disc Ver.2.03c/for PS-modem)[jp]' - result: { device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'a Sony Playstation 2' + result: { device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'a Sony PlayStation 2' - headers: 'User-Agent: Mozilla/5.0 [ja] (Playstation2; Linux 2.4.20 MIPS; ja-JP; rv:1.8a2) Gecko/20040630' - result: { engine: { name: Gecko, version: 1.8a2 }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'a Sony Playstation 2' + result: { engine: { name: Gecko, version: 1.8a2 }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'a Sony PlayStation 2' - - headers: 'User-Agent: Mozilla/5.0 [ja] (compatible; MSIE 6.0; Linux 2.6.11-1.1369_FC4; Playstation2)' - result: { device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'a Sony Playstation 2' + headers: 'User-Agent: Mozilla/5.0 [ja] (compatible; MSIE 6.0; Linux 2.6.11-1.1369_FC4; PlayStation2)' + result: { device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'a Sony PlayStation 2' - headers: 'User-Agent: Mozilla/4.0 (PS2; PlayStation BB Navigator 1.0) NetFront/3.0' - result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'NetFront 3.0 on a Sony Playstation 2' + result: { browser: { name: NetFront, version: '3.0', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'NetFront 3.0 on a Sony PlayStation 2' - headers: 'User-Agent: Mozilla/5.0 (PS3) AppleWebKit/535.11 (KHTML, like Gecko) NuantiMeta/2.0' - result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '535.11' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'Nuanti Meta 2.0 on a Sony Playstation 3' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '535.11' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'Nuanti Meta 2.0 on a Sony PlayStation 3' - headers: 'User-Agent: Mozilla/5.0 (PS3) AppleWebKit/535.1 (KHTML, like Gecko) NuantiMeta/2.0 Chrome/13.0.782.220 Safari/535.1' - result: { browser: { name: 'Nuanti Meta', family: { name: Chrome, version: 13 }, version: '2.0', type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } - readable: 'Nuanti Meta 2.0 on a Sony Playstation 3' + result: { browser: { name: 'Nuanti Meta', family: { name: Chrome, version: 13 }, version: '2.0', type: browser }, engine: { name: Webkit, version: '535.1' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } + readable: 'Nuanti Meta 2.0 on a Sony PlayStation 3' - headers: 'User-Agent: Mozilla/5.0 (PlayStation 4) AppleWebKit/531.3 (KHTML, like Gecko) SCEE/1.0 Nuanti/2.0' - result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '531.3' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } - readable: 'Nuanti Meta 2.0 on a Sony Playstation 4' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '531.3' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } + readable: 'Nuanti Meta 2.0 on a Sony PlayStation 4' - headers: 'User-Agent: Mozilla/5.0 (PlayStation VITA) AppleWebKit/531.3 (KHTML, like Gecko) SCEE/1.0 Nuanti/2.0' - result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '531.3' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'Playstation Vita' } } - readable: 'Nuanti Meta 2.0 on a Sony Playstation Vita' + result: { browser: { name: 'Nuanti Meta', version: '2.0', type: browser }, engine: { name: Webkit, version: '531.3' }, device: { type: gaming, subtype: portable, manufacturer: Sony, model: 'PlayStation Vita' } } + readable: 'Nuanti Meta 2.0 on a Sony PlayStation Vita' - headers: 'User-Agent: Mozilla/3.0 (Planetweb/v1.16; SPS JP)' - result: { browser: { name: Planetweb, version: '1.16', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'Planetweb 1.16 on a Sony Playstation 2' + result: { browser: { name: Planetweb, version: '1.16', type: browser }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'Planetweb 1.16 on a Sony PlayStation 2' - headers: 'User-Agent: Mozilla/3.0 AVE-Front/2.6 (BrowserInfo Screen=624x400x16M; InputMethod=CONTROLER, MOUSE, REMOCON; Page=10M; Category=GAME; Product=ACCESS/NFPS; HTML-Level=3.2; Strage=NO;)' - result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'NetFront 2.6 on a Sony Playstation 2' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'NetFront 2.6 on a Sony PlayStation 2' - headers: 'User-Agent: Mozilla/3.0 AVE-Front/2.6 (BrowserInfo Screen=640x448x16M; InputMethod=CONTROLER, MOUSE, REMOCON; Page=12M; Category=GAME; Product=SUNSOFT/EnjoyMagic; HTML-Level=3.2; Language=ja.SJIS; Storage=NO;)' - result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 2' } } - readable: 'NetFront 2.6 on a Sony Playstation 2' + result: { browser: { name: NetFront, version: '2.6', type: browser }, engine: { name: NetFront }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 2' } } + readable: 'NetFront 2.6 on a Sony PlayStation 2' - headers: 'User-Agent: Mozilla/5.0 (PS3; Leanback Shell) AppleWebKit/535.22 (KHTML, like Gecko) Chrome/19.0.1048.0 LeanbackShell/01.00.01.73 QA Safari/535.22 Sony PS3/ (PS3, , no, CH)' - readable: 'Chrome Dev 19.0.1048.0 on a Sony Playstation 3' - result: { browser: { name: Chrome, version: 19.0.1048.0, type: browser }, engine: { name: Webkit, version: '535.22' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'Chrome Dev 19.0.1048.0 on a Sony PlayStation 3' + result: { browser: { name: Chrome, version: 19.0.1048.0, type: browser }, engine: { name: Webkit, version: '535.22' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } - - headers: 'User-Agent: Mozilla/5.0 (PS4; Leanback Shell) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.70 LeanbackShell/2.3D Gold build cf8a43c-2016329 Safari/537.22 Sony Playstation4/ (PS4,, en, US)' - readable: 'Chrome 25 on a Sony Playstation 4' - result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 4' } } + headers: 'User-Agent: Mozilla/5.0 (PS4; Leanback Shell) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.70 LeanbackShell/2.3D Gold build cf8a43c-2016329 Safari/537.22 Sony PlayStation4/ (PS4,, en, US)' + readable: 'Chrome 25 on a Sony PlayStation 4' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '537.22' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 4' } } - headers: 'User-Agent: Mozilla/5.0 (PS3; PPU 4.2.0) AppleWebKit/537.21+ (KHTML, like Gecko) AmazonSpark/0.1.0' - readable: 'a Sony Playstation 3' - result: { engine: { name: Webkit, version: '537.21' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'Playstation 3' } } + readable: 'a Sony PlayStation 3' + result: { engine: { name: Webkit, version: '537.21' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 3' } } +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 5/SmartTV) AppleWebKit/605.1.15 (KHTML, like Gecko)' + readable: 'a Sony PlayStation 5' + result: { engine: { name: Webkit, version: 605.1.15 }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 5' } } +- + headers: 'User-Agent: Mozilla/5.0 (PlayStation 5 3.03/SmartTV) AppleWebKit/605.1.15 (KHTML, like Gecko)' + readable: 'a Sony PlayStation 5 running 3.03' + result: { engine: { name: Webkit, version: 605.1.15 }, os: { version: '3.03' }, device: { type: gaming, subtype: console, manufacturer: Sony, model: 'PlayStation 5' } } \ No newline at end of file diff --git a/test/data/mobile/app-chat.yaml b/test/data/mobile/app-chat.yaml index 334670a..69f83a3 100644 --- a/test/data/mobile/app-chat.yaml +++ b/test/data/mobile/app-chat.yaml @@ -1,415 +1,120 @@ -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D14 Yammer/6.5.10.4304 (iPhone8,1; iPhone OS 9.2.1; fr_BE; xx; Scale/2.00)" - result: - { - browser: { name: Yammer, version: "6.5", type: "app:chat" }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: 9.2.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 6s", - }, - } - readable: "Yammer 6.5 on an Apple iPhone 6s running iOS 9.2.1" -- headers: "User-Agent: YahooMobileMessenger/1.0 (Android Messenger; 1.5.1) (SCH-I500; Samsung; SCH-I500; 2.3.5/GINGERBREAD)" - result: - { - browser: { name: "Yahoo Messenger", version: 1.5.1, type: "app:chat" }, - os: { name: Android, version: 2.3.5 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: Fascinate, - }, - } - readable: "Yahoo Messenger 1.5.1 on a Samsung Fascinate running Android 2.3.5" -- headers: "User-Agent: YahooMobileMessenger/1.0 (Android Messenger; 1.8.3) (SHW-M340K; samsung; SHW-M340K; 2.3.6/GINGERBREAD)" - result: - { - browser: { name: "Yahoo Messenger", version: 1.8.3, type: "app:chat" }, - os: { name: Android, version: 2.3.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy M Style", - }, - } - readable: "Yahoo Messenger 1.8.3 on a Samsung Galaxy M Style running Android 2.3.6" -- headers: "User-Agent: YahooMobile/1.0 (im; 1.8.4.15957); (Linux; U; Android 2.3.6; ONE_TOUCH_991D_ALDE Build/GINGERBREAD_MR1);" - result: - { - browser: { name: "Yahoo Messenger", version: 1.8.4, type: "app:chat" }, - os: { name: Android, version: 2.3.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Alcatel, - model: "One Touch 991", - }, - } - readable: "Yahoo Messenger 1.8.4 on an Alcatel One Touch 991 running Android 2.3.6" -- headers: "User-Agent: YahooMobile/1.0 (im; 1.8.4.15957); (Linux; U; Android 4.2.2; ARCHOS 79XE Build/Unknown);" - result: - { - browser: { name: "Yahoo Messenger", version: 1.8.4, type: "app:chat" }, - os: { name: Android, version: 4.2.2 }, - device: { type: media, manufacturer: Archos, model: 79XE }, - } - readable: "Yahoo Messenger 1.8.4 on an Archos 79XE running Android 4.2.2" -- headers: "User-Agent: WhatsApp/2.11.164 Android/4_2_2 Device/samsung-GT-I9152" - result: - { - browser: { name: WhatsApp, version: "2.11.164", type: "app:chat" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Mega 5.8 Plus", - }, - } - readable: "WhatsApp 2.11.164 on a Samsung Galaxy Mega 5.8 Plus running Android 4.2.2" -- headers: "User-Agent: WhatsApp/2.11.139 Android/4.0.4 Device/HTC-HTC_Incredible_S" - result: - { - browser: { name: WhatsApp, version: "2.11.139", type: "app:chat" }, - os: { name: Android, version: 4.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: HTC, - model: "Incredible S", - }, - } - readable: "WhatsApp 2.11.139 on a HTC Incredible S running Android 4.0.4" -- headers: "User-Agent: WhatsApp+/2.11.83 Android/4.1.2 Device/samsung-GT-S5310" - result: - { - browser: { name: WhatsApp, version: "2.11", type: "app:chat" }, - os: { name: Android, version: 4.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Pocket Neo", - }, - } - readable: "WhatsApp 2.11 on a Samsung Galaxy Pocket Neo running Android 4.1.2" -- headers: "User-Agent: WhatsApp+/2.11.83 Android/4.0.4 Device/Motorola-MB526" - result: - { - browser: { name: WhatsApp, version: "2.11", type: "app:chat" }, - os: { name: Android, version: 4.0.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY+ }, - } - readable: "WhatsApp 2.11 on a Motorola DEFY+ running Android 4.0.4" -- headers: "User-Agent: WhatsApp/2.11.107 S60Version/3.1 Device/Nokia-E51-(02.1)" - result: - { - browser: { name: WhatsApp, version: "2.11.107", type: "app:chat" }, - os: { name: Series60, family: Symbian, version: "3.1" }, - device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E51 }, - } - readable: "WhatsApp 2.11.107 on a Nokia E51 running Series60 3.1" -- headers: "User-Agent: WhatsApp/2.11.236 S60Version/3.2 Device/Nokia-6650-(02.01)" - result: - { - browser: { name: WhatsApp, version: "2.11.236", type: "app:chat" }, - os: { name: Series60, family: Symbian, version: "3.2" }, - device: - { type: mobile, subtype: smart, manufacturer: Nokia, model: "6650" }, - } - readable: "WhatsApp 2.11.236 on a Nokia 6650 running Series60 3.2" -- headers: "User-Agent: WhatsApp/2.11.356 WP7/7.10.8107 Device/SAMSUNG-GT-I8350-H23.15.0.8" - result: - { - browser: { name: WhatsApp, version: "2.11.356", type: "app:chat" }, - os: { name: "Windows Phone", version: "7.10" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Omnia W", - }, - } - readable: "WhatsApp 2.11.356 on a Samsung Omnia W running Windows Phone 7.10" -- headers: "User-Agent: WhatsApp/2.11.282 WP7/8.0.10328.0 Device/NOKIA-RM-914_eu_euro2_341-H1.0.0.0" - result: - { - browser: { name: WhatsApp, version: "2.11.282", type: "app:chat" }, - os: { name: "Windows Phone", version: "8.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Nokia, - model: "Lumia 520", - }, - } - readable: "WhatsApp 2.11.282 on a Nokia Lumia 520 running Windows Phone 8.0" -- 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 [FBAN/MessengerForiOS;FBAV/17.0.0.20.11;FBBV/5740516;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.2;FBSS/3; FBCR/TelenorDK;FBID/phone;FBLC/da_DK;FBOP/5]" - result: - { - browser: { name: "Facebook Messenger", 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: "Facebook Messenger on an Apple iPhone 6 Plus running iOS 8.1.2" -- headers: "User-Agent: ICQ_Android/4.0.8 (Android; 16; 4.1.1; N7105XXALIJ; GT-N7105; tr-TR)" - readable: "ICQ 4.0.8 on a Samsung Galaxy Note II running Android 4.1.1" - result: - { - browser: { name: ICQ, version: 4.0.8, type: "app:chat" }, - os: { name: Android, version: 4.1.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Note II", - }, - } -- headers: "User-Agent: Kik/8.2.1.326 (Android 4.1.2) Mozilla/5.0 (Linux; U; Android 4.1.2; en-za; GT-I8190 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" - readable: "Kik 8.2.1 on a Samsung Galaxy S III Mini running Android 4.1.2" - result: - { - browser: { name: Kik, version: 8.2.1, type: "app:chat" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S III Mini", - }, - } -- headers: "User-Agent: Kik/8.7.0.1643 (Android 5.0.2) Mozilla/5.0 (Linux; Android 5.0.2; C6903 Build/14.5.A.0.270; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.117 Mobile Safari/537.36" - readable: "Kik 8.7 on a Sony Xperia Z1 running Android 5.0.2" - result: - { - browser: - { - name: Kik, - using: { name: "Chromium WebView", version: "44" }, - version: "8.7", - type: "app:chat", - }, - engine: { name: Blink }, - os: { name: Android, version: 5.0.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Sony, - model: "Xperia Z1", - }, - } -- headers: "User-Agent: Kik/9.1.0.3591 (Android 4.3) Mozilla/5.0 (Linux; U; Android 4.3; en-us; G630-U20 Build/HuaweiG630-U20) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" - readable: "Kik 9.1 on a Huawei Ascend G630 running Android 4.3" - result: - { - browser: { name: Kik, version: "9.1", type: "app:chat" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.3" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Huawei, - model: "Ascend G630", - }, - } -- headers: "User-Agent: Kik/9.10.0.5037 (Android 6.0.1) Mozilla/5.0 (Linux; Android 6.0.1; SM-G920F Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.106 Mobile Safari/537.36" - readable: "Kik 9.10 on a Samsung Galaxy S6 running Android 6.0.1" - result: - { - browser: - { - name: Kik, - using: { name: "Chromium WebView", version: "48" }, - version: "9.10", - type: "app:chat", - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S6", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X509 Build/DHXOSOP5801911241S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 [FB_IAB/MESSENGER;FBAV/134.0.0.18.91;]" - readable: "Facebook Messenger on a LeEco Le 1s X509 running Android 6.0" - result: - { - browser: - { - name: "Facebook Messenger", - using: { name: "Chromium WebView", version: "49" }, - type: "app:chat", - }, - engine: { name: Blink }, - os: { name: Android, version: "6.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: LeEco, - model: "Le 1s X509", - }, - } -- 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 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B440 Line/9.8.0" - result: - { - browser: { name: Line, version: 9.8.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 }, - } - readable: "Line 9.8.0 on an Apple iPhone running iOS 8.1.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_1_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B100 KAKAOTALK 5.9.2" - readable: "KakaoTalk 5.9.2 on an Apple iPhone running iOS 10.1.1" - result: - { - browser: { name: KakaoTalk, version: 5.9.2, type: "app:chat" }, - engine: { name: Webkit, version: 602.2.14 }, - os: { name: iOS, version: 10.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } -- 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 macOS Sierra 10.12" - result: - { - browser: - { - name: Slack, - using: { name: Electron, version: 2.3.1 }, - family: { name: Chrome, version: 52 }, - version: 2.3.1, - type: "app:chat", - }, - engine: { name: Blink }, - os: - { - name: "OS X", - alias: macOS, - version: { value: "10.12", nickname: Sierra }, - }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } -- headers: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) WhatsApp/2.2017.6 Chrome/76.0.3809.146 Electron/6.1.9 Safari/537.36" - result: - { - browser: - { - name: WhatsApp, - using: { name: Electron, version: 6.1.9 }, - family: { name: Chrome, version: 76 }, - version: 2.2017.6, - type: "app:chat", - }, - engine: { name: Blink }, - os: { name: Windows, version: { value: "10.0", alias: "10" } }, - device: { type: desktop }, - } - readable: "WhatsApp 2.2017.6 on Windows 10" -- headers: "User-Agent: WhatsApp/2.19.360 A" - result: { browser: { name: WhatsApp, version: 2.19.360, type: "app:chat" } } - readable: "WhatsApp 2.19.360" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.2;LG-F320S) AppleWebKit/537.36 (KHTML, like Gecko) Zalo/1.0 Safari/537.36" - readable: "Zalo 1.0 on a LG G2 running Android 4.4.2" - result: - { - browser: { name: Zalo, version: "1.0", type: "app:chat" }, - engine: { name: Webkit, version: "537.36" }, - os: { name: Android, version: 4.4.2 }, - device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 }, - } -- headers: "User-Agent: Zalo-win32-24v294" - readable: "Zalo 24" - result: { browser: { name: Zalo, version: "24", type: "app:chat" } } -- 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 Viber" - readable: "Viber on a LeEco Le 2 X526 running Android 6.0.1" - result: - { - browser: - { - name: Viber, - family: { name: Chrome, version: 56 }, - 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 (Linux; Android 9; SM-G950F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.79 Mobile Safari/537.36 Viber/12.0.0.4" - readable: "Viber on a Samsung Galaxy S8 running Android 9" - result: - { - browser: - { - name: Viber, - using: { name: "Chromium WebView", version: "79" }, - type: "app:chat", - }, - engine: { name: Blink }, - os: { name: Android, version: "9" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S8", - }, - } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13D14 Yammer/6.5.10.4304 (iPhone8,1; iPhone OS 9.2.1; fr_BE; xx; Scale/2.00)' + result: { browser: { name: Yammer, version: '6.5', type: 'app:chat' }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6s' } } + readable: 'Yammer 6.5 on an Apple iPhone 6s running iOS 9.2.1' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Messenger; 1.5.1) (SCH-I500; Samsung; SCH-I500; 2.3.5/GINGERBREAD)' + result: { browser: { name: 'Yahoo Messenger', version: 1.5.1, type: 'app:chat' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Fascinate } } + readable: 'Yahoo Messenger 1.5.1 on a Samsung Fascinate running Android 2.3.5' +- + headers: 'User-Agent: YahooMobileMessenger/1.0 (Android Messenger; 1.8.3) (SHW-M340K; samsung; SHW-M340K; 2.3.6/GINGERBREAD)' + result: { browser: { name: 'Yahoo Messenger', version: 1.8.3, type: 'app:chat' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy M Style' } } + readable: 'Yahoo Messenger 1.8.3 on a Samsung Galaxy M Style running Android 2.3.6' +- + headers: 'User-Agent: YahooMobile/1.0 (im; 1.8.4.15957); (Linux; U; Android 2.3.6; ONE_TOUCH_991D_ALDE Build/GINGERBREAD_MR1);' + result: { browser: { name: 'Yahoo Messenger', version: 1.8.4, type: 'app:chat' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Alcatel, model: 'One Touch 991' } } + readable: 'Yahoo Messenger 1.8.4 on an Alcatel One Touch 991 running Android 2.3.6' +- + headers: 'User-Agent: YahooMobile/1.0 (im; 1.8.4.15957); (Linux; U; Android 4.2.2; ARCHOS 79XE Build/Unknown);' + result: { browser: { name: 'Yahoo Messenger', version: 1.8.4, type: 'app:chat' }, os: { name: Android, version: 4.2.2 }, device: { type: media, manufacturer: Archos, model: 79XE } } + readable: 'Yahoo Messenger 1.8.4 on an Archos 79XE running Android 4.2.2' +- + headers: 'User-Agent: WhatsApp/2.11.164 Android/4_2_2 Device/samsung-GT-I9152' + result: { browser: { name: WhatsApp, version: 2.11.164, type: 'app:chat' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Mega 5.8 Plus' } } + readable: 'WhatsApp 2.11.164 on a Samsung Galaxy Mega 5.8 Plus running Android 4.2.2' +- + headers: 'User-Agent: WhatsApp/2.11.139 Android/4.0.4 Device/HTC-HTC_Incredible_S' + result: { browser: { name: WhatsApp, version: 2.11.139, type: 'app:chat' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Incredible S' } } + readable: 'WhatsApp 2.11.139 on a HTC Incredible S running Android 4.0.4' +- + headers: 'User-Agent: WhatsApp+/2.11.83 Android/4.1.2 Device/samsung-GT-S5310' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo' } } + readable: 'WhatsApp 2.11 on a Samsung Galaxy Pocket Neo running Android 4.1.2' +- + headers: 'User-Agent: WhatsApp+/2.11.83 Android/4.0.4 Device/Motorola-MB526' + result: { browser: { name: WhatsApp, version: '2.11', type: 'app:chat' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY+ } } + readable: 'WhatsApp 2.11 on a Motorola DEFY+ running Android 4.0.4' +- + headers: 'User-Agent: WhatsApp/2.11.107 S60Version/3.1 Device/Nokia-E51-(02.1)' + result: { browser: { name: WhatsApp, version: 2.11.107, type: 'app:chat' }, os: { name: Series60, family: Symbian, version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: E51 } } + readable: 'WhatsApp 2.11.107 on a Nokia E51 running Series60 3.1' +- + headers: 'User-Agent: WhatsApp/2.11.236 S60Version/3.2 Device/Nokia-6650-(02.01)' + result: { browser: { name: WhatsApp, version: 2.11.236, type: 'app:chat' }, os: { name: Series60, family: Symbian, version: '3.2' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '6650' } } + readable: 'WhatsApp 2.11.236 on a Nokia 6650 running Series60 3.2' +- + headers: 'User-Agent: WhatsApp/2.11.356 WP7/7.10.8107 Device/SAMSUNG-GT-I8350-H23.15.0.8' + result: { browser: { name: WhatsApp, version: 2.11.356, type: 'app:chat' }, os: { name: 'Windows Phone', version: '7.10' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Omnia W' } } + readable: 'WhatsApp 2.11.356 on a Samsung Omnia W running Windows Phone 7.10' +- + headers: 'User-Agent: WhatsApp/2.11.282 WP7/8.0.10328.0 Device/NOKIA-RM-914_eu_euro2_341-H1.0.0.0' + result: { browser: { name: WhatsApp, version: 2.11.282, type: 'app:chat' }, os: { name: 'Windows Phone', version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: 'Lumia 520' } } + readable: 'WhatsApp 2.11.282 on a Nokia Lumia 520 running Windows Phone 8.0' +- + 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 [FBAN/MessengerForiOS;FBAV/17.0.0.20.11;FBBV/5740516;FBDV/iPhone7,1;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.2;FBSS/3; FBCR/TelenorDK;FBID/phone;FBLC/da_DK;FBOP/5]' + result: { browser: { name: 'Facebook Messenger', 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: 'Facebook Messenger on an Apple iPhone 6 Plus running iOS 8.1.2' +- + headers: 'User-Agent: ICQ_Android/4.0.8 (Android; 16; 4.1.1; N7105XXALIJ; GT-N7105; tr-TR)' + readable: 'ICQ 4.0.8 on a Samsung Galaxy Note II running Android 4.1.1' + result: { browser: { name: ICQ, version: 4.0.8, type: 'app:chat' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } +- + headers: 'User-Agent: Kik/8.2.1.326 (Android 4.1.2) Mozilla/5.0 (Linux; U; Android 4.1.2; en-za; GT-I8190 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'Kik 8.2.1 on a Samsung Galaxy S III Mini running Android 4.1.2' + result: { browser: { name: Kik, version: 8.2.1, type: 'app:chat' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III Mini' } } +- + headers: 'User-Agent: Kik/8.7.0.1643 (Android 5.0.2) Mozilla/5.0 (Linux; Android 5.0.2; C6903 Build/14.5.A.0.270; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/44.0.2403.117 Mobile Safari/537.36' + readable: 'Kik 8.7 on a Sony Xperia Z1 running Android 5.0.2' + result: { browser: { name: Kik, using: { name: 'Chromium WebView', version: '44' }, version: '8.7', type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1' } } +- + headers: 'User-Agent: Kik/9.1.0.3591 (Android 4.3) Mozilla/5.0 (Linux; U; Android 4.3; en-us; G630-U20 Build/HuaweiG630-U20) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'Kik 9.1 on a Huawei Ascend G630 running Android 4.3' + result: { browser: { name: Kik, version: '9.1', type: 'app:chat' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend G630' } } +- + headers: 'User-Agent: Kik/9.10.0.5037 (Android 6.0.1) Mozilla/5.0 (Linux; Android 6.0.1; SM-G920F Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.106 Mobile Safari/537.36' + readable: 'Kik 9.10 on a Samsung Galaxy S6 running Android 6.0.1' + result: { browser: { name: Kik, using: { name: 'Chromium WebView', version: '48' }, version: '9.10', type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S6' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X509 Build/DHXOSOP5801911241S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 [FB_IAB/MESSENGER;FBAV/134.0.0.18.91;]' + readable: 'Facebook Messenger on a LeEco Le 1s X509 running Android 6.0' + result: { browser: { name: 'Facebook Messenger', using: { name: 'Chromium WebView', version: '49' }, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 1s X509' } } +- + 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 (iPhone; CPU iPhone OS 8_1_2 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B440 Line/9.8.0' + result: { browser: { name: Line, version: 9.8.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 } } + readable: 'Line 9.8.0 on an Apple iPhone running iOS 8.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 10_1_1 like Mac OS X) AppleWebKit/602.2.14 (KHTML, like Gecko) Mobile/14B100 KAKAOTALK 5.9.2' + readable: 'KakaoTalk 5.9.2 on an Apple iPhone running iOS 10.1.1' + result: { browser: { name: KakaoTalk, version: 5.9.2, type: 'app:chat' }, engine: { name: Webkit, version: 602.2.14 }, os: { name: iOS, version: 10.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + 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 macOS Sierra 10.12' + result: { browser: { name: Slack, using: { name: Electron, version: 2.3.1 }, family: { name: Chrome, version: 52 }, version: 2.3.1, type: 'app:chat' }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '10.12', nickname: Sierra } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) WhatsApp/2.2017.6 Chrome/76.0.3809.146 Electron/6.1.9 Safari/537.36' + result: { browser: { name: WhatsApp, using: { name: Electron, version: 6.1.9 }, family: { name: Chrome, version: 76 }, version: 2.2017.6, type: 'app:chat' }, engine: { name: Blink }, os: { name: Windows, version: { value: '10.0', alias: '10' } }, device: { type: desktop } } + readable: 'WhatsApp 2.2017.6 on Windows 10' +- + headers: 'User-Agent: WhatsApp/2.19.360 A' + result: { browser: { name: WhatsApp, version: 2.19.360, type: 'app:chat' } } + readable: 'WhatsApp 2.19.360' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2;LG-F320S) AppleWebKit/537.36 (KHTML, like Gecko) Zalo/1.0 Safari/537.36' + readable: 'Zalo 1.0 on a LG G2 running Android 4.4.2' + result: { browser: { name: Zalo, version: '1.0', type: 'app:chat' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } +- + headers: 'User-Agent: Zalo-win32-24v294' + readable: 'Zalo 24' + result: { browser: { name: Zalo, version: '24', type: 'app:chat' } } +- + 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 Viber' + readable: 'Viber on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: Viber, family: { name: Chrome, version: 56 }, 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 (Linux; Android 9; SM-G950F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.79 Mobile Safari/537.36 Viber/12.0.0.4' + readable: 'Viber on a Samsung Galaxy S8 running Android 9' + result: { browser: { name: Viber, using: { name: 'Chromium WebView', version: '79' }, type: 'app:chat' }, engine: { name: Blink }, os: { name: Android, version: '9' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S8' } } \ No newline at end of file diff --git a/test/data/mobile/app-social.yaml b/test/data/mobile/app-social.yaml index 9720edc..e5d5ebc 100644 --- a/test/data/mobile/app-social.yaml +++ b/test/data/mobile/app-social.yaml @@ -1,260 +1,92 @@ -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B466 [FBAN/FBIOS;FBAV/46.0.0.54.156;FBBV/18972819;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.3;FBSS/2; FBCR/vfnl;FBID/phone;FBLC/nl_NL;FBOP/5" - result: - { - browser: { name: Facebook, type: "app:social" }, - engine: { name: Webkit, version: 600.1.4 }, - os: { name: iOS, version: 8.1.3 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 6", - }, - } - readable: "Facebook on an Apple iPhone 6 running iOS 8.1.3" -- headers: "User-Agent: Instagram 6.0.1 (iPhone3,3; iPhone OS 7_1; en_US; en) AppleWebKit/420+" - result: - { - browser: { name: Instagram, version: 6.0.1, type: "app:social" }, - engine: { name: Webkit, version: "420" }, - os: { name: iOS, version: "7.1" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4", - }, - } - readable: "Instagram 6.0.1 on an Apple iPhone 4 running iOS 7.1" -- headers: "User-Agent: Instagram 5.0.7 Android (17/4.2.2; 240dpi; 480x800; samsung; SM-G350; cs02; hawaii_ss_cs02; de_DE)" - result: - { - browser: { name: Instagram, version: 5.0.7, type: "app:social" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Core Plus", - }, - } - readable: "Instagram 5.0.7 on a Samsung Galaxy Core Plus running Android 4.2.2" -- headers: "User-Agent: Instagram 3.4.0 Android (10/2.3.6; 240dpi; 480x800; samsung; SCH-R760; SCH-R760; smdkc210; en_US)" - result: - { - browser: { name: Instagram, version: 3.4.0, type: "app:social" }, - os: { name: Android, version: 2.3.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S II", - }, - } - readable: "Instagram 3.4.0 on a Samsung Galaxy S II running Android 2.3.6" -- headers: "User-Agent: Instagram 1.1.3 Android (10/2.3.6; 240dpi; 480x800; samsung; SAMSUNG-SGH-I727; SGH-I727; qcom; en_US)" - result: - { - browser: { name: Instagram, version: 1.1.3, type: "app:social" }, - os: { name: Android, version: 2.3.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S II Skyrocket", - }, - } - readable: "Instagram 1.1.3 on a Samsung Galaxy S II Skyrocket running Android 2.3.6" -- headers: "User-Agent: Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [FBAN/FBIOS;FBAV/46.0.0.54.156;FBBV/18972819;FBDV/iPad6,7;FBMD/iPad;FBSN/iPhone OS;FBSV/9.1;FBSS/2; FBCR/;FBID/tablet;FBLC/nl_NL;FBOP/1]" - result: - { - browser: { name: Facebook, type: "app:social" }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: "9.1" }, - device: { type: tablet, manufacturer: Apple, model: "iPad Pro (12.9″)" }, - } - readable: "Facebook on an Apple iPad Pro (12.9″) running iOS 9.1" -- headers: "User-Agent: Pinterest for Android Tablet/1.8.4 (SGP321; 4.3)" - readable: "Pinterest 1.8.4 on a Sony Xperia Tablet Z running Android 4.3" - result: - { - browser: { name: Pinterest, version: 1.8.4, type: "app:social" }, - os: { name: Android, version: "4.3" }, - device: { type: tablet, manufacturer: Sony, model: "Xperia Tablet Z" }, - } -- headers: "User-Agent: Pinterest for Android/1.1.1 (endeavoru; 4.1.1)" - readable: "Pinterest 1.1.1 on a HTC One X running Android 4.1.1" - result: - { - browser: { name: Pinterest, version: 1.1.1, type: "app:social" }, - os: { name: Android, version: 4.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "One X" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-I9190 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [Pinterest/Android]" - readable: "Pinterest on a Samsung Galaxy S4 Mini running Android 4.2.2" - result: - { - browser: { name: Pinterest, version: Android, type: "app:social" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S4 Mini", - }, - } -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [Pinterest/iOS]" - readable: "Pinterest on an Apple iPhone running iOS 9.1" - result: - { - browser: { name: Pinterest, version: iOS, type: "app:social" }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: "9.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFSAWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Safari/537.36 [Pinterest/Android]" - readable: "Pinterest on an Amazon Fire HDX 8.9 (2014) running FireOS 4.5" - result: - { - browser: - { - name: Pinterest, - using: "Amazon WebView", - version: Android, - type: "app:social", - }, - engine: { name: Blink }, - os: { name: FireOS, family: Android, version: "4.5" }, - device: - { type: tablet, manufacturer: Amazon, model: "Fire HDX 8.9 (2014)" }, - } -- headers: "User-Agent: Pinterest/3.3.3 CFNetwork/609.1.4 Darwin/13.0.0" - readable: "Pinterest on iOS 6.1.2" - result: - { - browser: { name: Pinterest, type: "app:social" }, - os: { name: iOS, version: 6.1.2 }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } -- headers: "User-Agent: Pinterest/4.1.3 CFNetwork/672.1.14 Darwin/14.0.0" - readable: "Pinterest on iOS 7.1.1" - result: - { - browser: { name: Pinterest, type: "app:social" }, - os: { name: iOS, version: 7.1.1 }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A4449d Twitter for iPhone" - readable: "Twitter on an Apple iPhone running iOS 7.0" - result: - { - browser: { name: Twitter, type: "app:social" }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: "7.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } -- headers: "User-Agent: [FBAN/FB4A;FBAV/10.0.0.28.27;FBBV/2802760;FBDM/{density=3.0,width=1080,height=1776};FBLC/fr_CA;FBCR/VIRGIN;FBPN/com.facebook.katana;FBDV/Nexus 5;FBSV/4.4.3;FBOP/1;FBCA/armeabi-v7a:armeabi;]" - readable: "Facebook on a LG Nexus 5 running Android 4.4.3" - result: - { - browser: { name: Facebook, type: "app:social" }, - os: { name: Android, version: 4.4.3 }, - device: - { type: mobile, subtype: smart, manufacturer: LG, model: "Nexus 5" }, - } -- headers: "User-Agent: [FBAN/PAAA;FBAV/1.7;FBDM/{density=2.0,width=720,height=1280};FBLC/es_ES;FB_FW/2;FBSN/Android;FBCR/FONIC;FBDV/GT-I9300;FBSV/4.1.2;]" - readable: "Facebook Pages on a Samsung Galaxy S III running Android 4.1.2" - result: - { - browser: { name: "Facebook Pages", type: "app:social" }, - os: { name: Android, version: 4.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S III", - }, - } -- headers: "User-Agent: Instagram 1.0.0 Android IC (10/2.3.4; 240dpi; 540x960; HTC/sprint; PG86100; shooter; shooter)" - readable: "Instagram 1.0.0 on a HTC EVO 3D running Android 2.3.4" - result: - { - browser: { name: Instagram, version: 1.0.0, type: "app:social" }, - os: { name: Android, version: 2.3.4 }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "EVO 3D" }, - } -- headers: "User-Agent: VKAndroidApp/3.3.2-249 (Android 4.2.2; SDK 17; armeabi-v7a; asus K00F; ru)" - readable: "VK 3.3 on an Asus MeMO Pad 10 (ME102A) running Android 4.2.2" - result: - { - browser: { name: VK, version: "3.3", type: "app:social" }, - os: { name: Android, version: 4.2.2 }, - device: - { type: tablet, manufacturer: Asus, model: "MeMO Pad 10 (ME102A)" }, - } -- headers: "User-Agent: VKAndroidApp/3.2.1-196 (Android 4.2.2; SDK 17; armeabi-v7a; samsung GT-I9500; ru)" - readable: "VK 3.2 on a Samsung Galaxy S4 running Android 4.2.2" - result: - { - browser: { name: VK, version: "3.2", type: "app:social" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S4", - }, - } -- headers: "User-Agent: VKAndroidApp/3.4-288 (Android 3.2; SDK 13; armeabi-v7a; samsung GT-P7300; ru)" - readable: "VK 3.4 on a Samsung Galaxy Tab 8.9 running Android 3.2" - result: - { - browser: { name: VK, version: "3.4", type: "app:social" }, - os: { name: Android, version: "3.2" }, - device: { type: tablet, manufacturer: Samsung, model: "Galaxy Tab 8.9" }, - } -- headers: "User-Agent: Mozilla/5.0 (iPad; CPU OS 11_0_3 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A432 [FBAN/FBIOS;FBAV/145.0.0.59.86;FBBV/74951375;FBDV/iPad6,11;FBMD/iPad;FBSN/iOS;FBSV/11.0.3;FBSS/2;FBCR/;FBID/tablet;FBLC/nl_NL;FBOP/5;FBRV/0]" - readable: "Facebook on an Apple iPad (5th gen) running iOS 11.0.3" - result: - { - browser: { name: Facebook, type: "app:social" }, - engine: { name: Webkit, version: 604.1.38 }, - os: { name: iOS, version: 11.0.3 }, - device: { type: tablet, manufacturer: Apple, model: "iPad (5th gen)" }, - } -- 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: YelpWebView/1.5 Android/6.0.1 YelpApp/9.9.0 (x-screen-scale 1.0;)" - readable: "Yelp 9.9.0 on Android 6.0.1" - result: - { - browser: { name: Yelp, version: 9.9.0, type: "app:social" }, - os: { name: Android, version: 6.0.1 }, - device: { type: tablet }, - } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12B466 [FBAN/FBIOS;FBAV/46.0.0.54.156;FBBV/18972819;FBDV/iPhone7,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/8.1.3;FBSS/2; FBCR/vfnl;FBID/phone;FBLC/nl_NL;FBOP/5' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: 8.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 6' } } + readable: 'Facebook on an Apple iPhone 6 running iOS 8.1.3' +- + headers: 'User-Agent: Instagram 6.0.1 (iPhone3,3; iPhone OS 7_1; en_US; en) AppleWebKit/420+' + result: { browser: { name: Instagram, version: 6.0.1, type: 'app:social' }, engine: { name: Webkit, version: '420' }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'Instagram 6.0.1 on an Apple iPhone 4 running iOS 7.1' +- + headers: 'User-Agent: Instagram 5.0.7 Android (17/4.2.2; 240dpi; 480x800; samsung; SM-G350; cs02; hawaii_ss_cs02; de_DE)' + result: { browser: { name: Instagram, version: 5.0.7, type: 'app:social' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Core Plus' } } + readable: 'Instagram 5.0.7 on a Samsung Galaxy Core Plus running Android 4.2.2' +- + headers: 'User-Agent: Instagram 3.4.0 Android (10/2.3.6; 240dpi; 480x800; samsung; SCH-R760; SCH-R760; smdkc210; en_US)' + result: { browser: { name: Instagram, version: 3.4.0, type: 'app:social' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } + readable: 'Instagram 3.4.0 on a Samsung Galaxy S II running Android 2.3.6' +- + headers: 'User-Agent: Instagram 1.1.3 Android (10/2.3.6; 240dpi; 480x800; samsung; SAMSUNG-SGH-I727; SGH-I727; qcom; en_US)' + result: { browser: { name: Instagram, version: 1.1.3, type: 'app:social' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Skyrocket' } } + readable: 'Instagram 1.1.3 on a Samsung Galaxy S II Skyrocket running Android 2.3.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [FBAN/FBIOS;FBAV/46.0.0.54.156;FBBV/18972819;FBDV/iPad6,7;FBMD/iPad;FBSN/iPhone OS;FBSV/9.1;FBSS/2; FBCR/;FBID/tablet;FBLC/nl_NL;FBOP/1]' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.1' }, device: { type: tablet, manufacturer: Apple, model: 'iPad Pro (12.9″)' } } + readable: 'Facebook on an Apple iPad Pro (12.9″) running iOS 9.1' +- + headers: 'User-Agent: Pinterest for Android Tablet/1.8.4 (SGP321; 4.3)' + readable: 'Pinterest 1.8.4 on a Sony Xperia Tablet Z running Android 4.3' + result: { browser: { name: Pinterest, version: 1.8.4, type: 'app:social' }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Sony, model: 'Xperia Tablet Z' } } +- + headers: 'User-Agent: Pinterest for Android/1.1.1 (endeavoru; 4.1.1)' + readable: 'Pinterest 1.1.1 on a HTC One X running Android 4.1.1' + result: { browser: { name: Pinterest, version: 1.1.1, type: 'app:social' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One X' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.2.2; en-gb; GT-I9190 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 [Pinterest/Android]' + readable: 'Pinterest on a Samsung Galaxy S4 Mini running Android 4.2.2' + result: { browser: { name: Pinterest, version: Android, type: 'app:social' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4 Mini' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13B143 [Pinterest/iOS]' + readable: 'Pinterest on an Apple iPhone running iOS 9.1' + result: { browser: { name: Pinterest, version: iOS, type: 'app:social' }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.3; KFSAWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.0.0 Safari/537.36 [Pinterest/Android]' + readable: 'Pinterest on an Amazon Fire HDX 8.9 (2014) running FireOS 4.5' + result: { browser: { name: Pinterest, using: 'Amazon WebView', version: Android, type: 'app:social' }, engine: { name: Blink }, os: { name: FireOS, family: Android, version: '4.5' }, device: { type: tablet, manufacturer: Amazon, model: 'Fire HDX 8.9 (2014)' } } +- + headers: 'User-Agent: Pinterest/3.3.3 CFNetwork/609.1.4 Darwin/13.0.0' + readable: 'Pinterest on iOS 6.1.2' + result: { browser: { name: Pinterest, type: 'app:social' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } +- + headers: 'User-Agent: Pinterest/4.1.3 CFNetwork/672.1.14 Darwin/14.0.0' + readable: 'Pinterest on iOS 7.1.1' + result: { browser: { name: Pinterest, type: 'app:social' }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A4449d Twitter for iPhone' + readable: 'Twitter on an Apple iPhone running iOS 7.0' + result: { browser: { name: Twitter, type: 'app:social' }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: [FBAN/FB4A;FBAV/10.0.0.28.27;FBBV/2802760;FBDM/{density=3.0,width=1080,height=1776};FBLC/fr_CA;FBCR/VIRGIN;FBPN/com.facebook.katana;FBDV/Nexus 5;FBSV/4.4.3;FBOP/1;FBCA/armeabi-v7a:armeabi;]' + readable: 'Facebook on a LG Nexus 5 running Android 4.4.3' + result: { browser: { name: Facebook, type: 'app:social' }, os: { name: Android, version: 4.4.3 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: [FBAN/PAAA;FBAV/1.7;FBDM/{density=2.0,width=720,height=1280};FBLC/es_ES;FB_FW/2;FBSN/Android;FBCR/FONIC;FBDV/GT-I9300;FBSV/4.1.2;]' + readable: 'Facebook Pages on a Samsung Galaxy S III running Android 4.1.2' + result: { browser: { name: 'Facebook Pages', type: 'app:social' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } +- + headers: 'User-Agent: Instagram 1.0.0 Android IC (10/2.3.4; 240dpi; 540x960; HTC/sprint; PG86100; shooter; shooter)' + readable: 'Instagram 1.0.0 on a HTC EVO 3D running Android 2.3.4' + result: { browser: { name: Instagram, version: 1.0.0, type: 'app:social' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'EVO 3D' } } +- + headers: 'User-Agent: VKAndroidApp/3.3.2-249 (Android 4.2.2; SDK 17; armeabi-v7a; asus K00F; ru)' + readable: 'VK 3.3 on an Asus MeMO Pad 10 (ME102A) running Android 4.2.2' + result: { browser: { name: VK, version: '3.3', type: 'app:social' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Asus, model: 'MeMO Pad 10 (ME102A)' } } +- + headers: 'User-Agent: VKAndroidApp/3.2.1-196 (Android 4.2.2; SDK 17; armeabi-v7a; samsung GT-I9500; ru)' + readable: 'VK 3.2 on a Samsung Galaxy S4 running Android 4.2.2' + result: { browser: { name: VK, version: '3.2', type: 'app:social' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } +- + headers: 'User-Agent: VKAndroidApp/3.4-288 (Android 3.2; SDK 13; armeabi-v7a; samsung GT-P7300; ru)' + readable: 'VK 3.4 on a Samsung Galaxy Tab 8.9 running Android 3.2' + result: { browser: { name: VK, version: '3.4', type: 'app:social' }, os: { name: Android, version: '3.2' }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 8.9' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 11_0_3 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Mobile/15A432 [FBAN/FBIOS;FBAV/145.0.0.59.86;FBBV/74951375;FBDV/iPad6,11;FBMD/iPad;FBSN/iOS;FBSV/11.0.3;FBSS/2;FBCR/;FBID/tablet;FBLC/nl_NL;FBOP/5;FBRV/0]' + readable: 'Facebook on an Apple iPad (5th gen) running iOS 11.0.3' + result: { browser: { name: Facebook, type: 'app:social' }, engine: { name: Webkit, version: 604.1.38 }, os: { name: iOS, version: 11.0.3 }, device: { type: tablet, manufacturer: Apple, model: 'iPad (5th gen)' } } +- + 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: YelpWebView/1.5 Android/6.0.1 YelpApp/9.9.0 (x-screen-scale 1.0;)' + readable: 'Yelp 9.9.0 on Android 6.0.1' + result: { browser: { name: Yelp, version: 9.9.0, type: 'app:social' }, os: { name: Android, version: 6.0.1 }, device: { type: tablet } } \ No newline at end of file diff --git a/test/data/mobile/browser-chrome.yaml b/test/data/mobile/browser-chrome.yaml index 91ba02c..8300ffb 100644 --- a/test/data/mobile/browser-chrome.yaml +++ b/test/data/mobile/browser-chrome.yaml @@ -290,3 +290,19 @@ headers: 'User-Agent: m2 note/4.5 Linux/3.10.65 Android/5.1 Release/08.17.2015 Browser/Chrome40.0.2214.114 Profile/MIDP-2.0 Configuration/CLDC-1.1' result: { browser: { name: Chrome, version: '40', type: browser }, os: { name: Android, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Meizu, model: 'M2 Note' } } readable: 'Chrome 40 on a Meizu M2 Note running Android 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Mobile Safari/537.36' + readable: 'Chrome 100 on Android 10' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: Android, version: '10' }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.0.0 Mobile Safari/537.36' + readable: 'Chrome 96 on Android 10' + result: { browser: { name: Chrome, version: '96', type: browser }, engine: { name: Blink }, os: { name: Android, version: '10' }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.0.0 Mobile Safari/537.36' + readable: 'Chrome 97 on Android 10' + result: { browser: { name: Chrome, version: '97', type: browser }, engine: { name: Blink }, os: { name: Android, version: '10' }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 9; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.0.0 Mobile Safari/537.36' + readable: 'Chrome 90 on Android 9' + result: { browser: { name: Chrome, version: '90', type: browser }, engine: { name: Blink }, os: { name: Android, version: '9' }, device: { type: mobile, subtype: smart } } \ No newline at end of file diff --git a/test/data/mobile/browser-firefox-ios.yaml b/test/data/mobile/browser-firefox-ios.yaml index 7805592..d568a0b 100644 --- a/test/data/mobile/browser-firefox-ios.yaml +++ b/test/data/mobile/browser-firefox-ios.yaml @@ -1,62 +1,24 @@ -- headers: "User-Agent: Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.0.1 Mobile/13C5055d Safari/601.1.46" - result: - { - browser: { name: Firefox, version: 1.0.1, type: browser }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: "9.2" }, - device: { type: tablet, manufacturer: Apple, model: iPad }, - } - readable: "Firefox 1.0.1 on an Apple iPad running iOS 9.2" -- headers: "User-Agent: Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13C5060d Safari/601.1.46" - result: - { - browser: { name: Firefox, version: "1.1", type: browser }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: "9.2" }, - device: { type: tablet, manufacturer: Apple, model: iPad }, - } - readable: "Firefox 1.1 on an Apple iPad running iOS 9.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12H141 Safari/600.1.4" - result: - { - browser: { name: Firefox, version: "1.0", type: browser }, - engine: { name: Webkit, version: 600.1.4 }, - os: { name: iOS, version: "8.4" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Firefox 1.0 on an Apple iPhone running iOS 8.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13A404 Safari/601.1.46" - result: - { - browser: { name: Firefox, version: "1.1", type: browser }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: 9.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Firefox 1.1 on an Apple iPhone running iOS 9.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13A452 Safari/601.1.46" - result: - { - browser: { name: Firefox, version: "1.1", type: browser }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: 9.0.2 }, - device: { type: media, manufacturer: Apple, model: "iPod touch" }, - } - readable: "Firefox 1.1 on an Apple iPod touch running iOS 9.0.2" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/4.0.2 Chrome/66.0.3359.126 Mobile Safari/537.36" - readable: "Firefox Focus 4.0.2 on Android 8.0.0" - result: - { - browser: - { - name: "Firefox Focus", - family: { name: Chrome, version: 66 }, - version: 4.0.2, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 8.0.0 }, - device: { type: mobile, subtype: smart }, - } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.0.1 Mobile/13C5055d Safari/601.1.46' + result: { browser: { name: Firefox, version: 1.0.1, type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Firefox 1.0.1 on an Apple iPad running iOS 9.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13C5060d Safari/601.1.46' + result: { browser: { name: Firefox, version: '1.1', type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: '9.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } + readable: 'Firefox 1.1 on an Apple iPad running iOS 9.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_4 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) FxiOS/1.0 Mobile/12H141 Safari/600.1.4' + result: { browser: { name: Firefox, version: '1.0', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.4' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Firefox 1.0 on an Apple iPhone running iOS 8.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13A404 Safari/601.1.46' + result: { browser: { name: Firefox, version: '1.1', type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Firefox 1.1 on an Apple iPhone running iOS 9.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPod touch; CPU iPhone OS 9_0_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) FxiOS/1.1 Mobile/13A452 Safari/601.1.46' + result: { browser: { name: Firefox, version: '1.1', type: browser }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.0.2 }, device: { type: media, manufacturer: Apple, model: 'iPod touch' } } + readable: 'Firefox 1.1 on an Apple iPod touch running iOS 9.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 8.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Focus/4.0.2 Chrome/66.0.3359.126 Mobile Safari/537.36' + readable: 'Firefox Focus 4.0.2 on Android 8.0.0' + result: { browser: { name: 'Firefox Focus', family: { name: Chrome, version: 66 }, version: 4.0.2, type: browser }, engine: { name: Blink }, os: { name: Android, version: 8.0.0 }, device: { type: mobile, subtype: smart } } \ No newline at end of file diff --git a/test/data/mobile/browser-opera.yaml b/test/data/mobile/browser-opera.yaml index 7536901..a42a8aa 100644 --- a/test/data/mobile/browser-opera.yaml +++ b/test/data/mobile/browser-opera.yaml @@ -1,511 +1,148 @@ -- headers: "User-Agent: Opera/9.80 (J2ME/MIDP; Opera Mini; U; xx) Presto/2.12.423 Version/11.10" - result: - { - browser: { name: "Opera Mini", type: browser }, - engine: { name: Presto, version: 2.12.423 }, - device: { type: mobile, subtype: feature }, - } - readable: "Opera Mini" -- headers: "User-Agent: Opera/9.80 (X11; Linux zbov; U; xx) Presto/2.9.201 Version/11.50" - result: - { - browser: { name: "Opera Mobile", version: "11.50", type: browser }, - engine: { name: Presto, version: 2.9.201 }, - device: { type: mobile, subtype: feature }, - } - readable: "Opera Mobile 11.50" -- headers: "User-Agent: Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.12.423 Version/11.10" - result: - { - browser: { name: "Opera Mini", type: browser }, - engine: { name: Presto, version: 2.12.423 }, - device: { type: mobile, subtype: feature }, - } - readable: "Opera Mini" -- headers: "User-Agent: Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/10.54" - result: - { - browser: { name: "Opera Mini", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - device: { type: mobile, subtype: feature }, - } - readable: "Opera Mini" -- headers: "User-Agent: SAMSUNG-GT-C3322i Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10" - result: - { - browser: { name: "Opera Mini", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Samsung, - model: GT-C3322i, - }, - } - readable: "Opera Mini on a Samsung GT-C3322i" -- headers: "User-Agent: SAMSUNG-GT-S5611 Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10" - result: - { - browser: { name: "Opera Mini", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Samsung, - model: GT-S5611, - }, - } - readable: "Opera Mini on a Samsung GT-S5611" -- headers: - { - User-Agent: "Opera/9.80 (BlackBerry; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "RIM # BlackBerry 8520", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: "BlackBerry OS" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: RIM, - model: "BlackBerry Curve 8520", - }, - } - readable: "Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "Samsung # GT-S8500", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: Bada }, - device: - { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave }, - } - readable: "Opera Mini 8.0 on a Samsung Wave running Bada" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "Samsung # GT-i8000", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: "Windows Mobile" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "I8000 Omnia II", - }, - } - readable: "Opera Mini 8.0 on a Samsung I8000 Omnia II running Windows Mobile" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "RIM # BlackBerry 8520", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: "BlackBerry OS" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: RIM, - model: "BlackBerry Curve 8520", - }, - } - readable: "Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS" -- headers: - { - User-Agent: "Opera/9.80 (BlackBerry; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "RIM # BlackBerry 8520", - X-OperaMini-Phone-UA: "BlackBerry8520/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/613", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: "BlackBerry OS", version: "5.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: RIM, - model: "BlackBerry Curve 8520", - }, - } - readable: "Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS 5.0" -- headers: - { - User-Agent: "Opera/9.80 (BlackBerry; Opera Mini/8.0.35667/35.6680; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "RIM # BlackBerry 8900", - X-OperaMini-Phone-UA: "BlackBerry8900/5.0.0.1113 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: "BlackBerry OS", version: "5.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: RIM, - model: "BlackBerry Curve 8900", - }, - } - readable: "Opera Mini 8.0 on a RIM BlackBerry Curve 8900 running BlackBerry OS 5.0" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "Samsung # GT-i8000", - X-OperaMini-Phone-UA: "SAMSUNG-GT-i8000/1.0 (Windows CE; Opera Mobi; U; en) Opera 9.5 UNTRUSTED/1.0", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: "Windows Mobile" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "I8000 Omnia II", - }, - } - readable: "Opera Mini 8.0 on a Samsung I8000 Omnia II running Windows Mobile" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.7382; U; xx) Presto/2.8.119 Version/11.10", - X-Operamini-Phone-Ua: "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DZHLB1; U; Bada/2.0; zh-cn) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B", - Device-Stock-Ua: "Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DZHLB1; U; Bada/2.0; zh-cn) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B", - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: Bada, version: "2.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Wave Y", - }, - } - readable: "Opera Mini 8.0 on a Samsung Wave Y running Bada 2.0" -- headers: - { - User-Agent: "Opera/9.80 (Windows Mobile; Opera Mini/5.1.21594/37.6116; U; xx) Presto/2.12.423 Version/12.16", - X-OperaMini-Phone: "HTC # Touch Pro/T7272/TyTn III", - X-OperaMini-Phone-UA: HTC_Touch_Pro_T7272, - } - result: - { - browser: { name: "Opera Mini", version: "5.1", type: browser }, - engine: { name: Presto, version: 2.12.423 }, - os: { name: "Windows Mobile" }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "Touch Pro" }, - } - readable: "Opera Mini 5.1 on a HTC Touch Pro running Windows Mobile" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "Samsung # GT-S8500", - Device-Stock-UA: SAMSUNG-GT-S8500, - X-OperaMini-Phone-UA: SAMSUNG-GT-S8500, - } - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: Bada }, - device: - { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave }, - } - readable: "Opera Mini 8.0 on a Samsung Wave running Bada" -- headers: "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.7144/hifi/tmobile/at; Nokia 6085; de; U; ssr)" - result: - { - browser: { name: "Opera Mini", version: "1.1", type: browser }, - engine: { name: Presto }, - device: - { type: mobile, subtype: feature, manufacturer: Nokia, model: "6085" }, - } - readable: "Opera Mini 1.1 on a Nokia 6085" -- headers: "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.7231/hifi/tmobile/at; Motorola V3; de; U; ssr)" - result: - { - browser: { name: "Opera Mini", version: "1.1", type: browser }, - engine: { name: Presto }, - device: - { type: mobile, subtype: feature, manufacturer: Motorola, model: V3 }, - } - readable: "Opera Mini 1.1 on a Motorola V3" -- headers: "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.4948/hifi/tmobile/at; SonyEricsson K550i; de; U; ssr)" - result: - { - browser: { name: "Opera Mini", version: "1.1", type: browser }, - engine: { name: Presto }, - device: - { - type: mobile, - subtype: feature, - manufacturer: "Sony Ericsson", - model: K550i, - }, - } - readable: "Opera Mini 1.1 on a Sony Ericsson K550i" -- headers: "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.5005/hifi/tmobile/at; Nokia 5300; de; U; ssr)" - result: - { - browser: { name: "Opera Mini", version: "1.1", type: browser }, - engine: { name: Presto }, - os: { name: Series40 }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Nokia, - model: "5300 XpressMusic", - }, - } - readable: "Opera Mini 1.1 on a Nokia 5300 XpressMusic running Series40" -- headers: "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.3314/hifi/tmobile/cz; Siemens ME75; cs; U; ssr)" - result: - { - browser: { name: "Opera Mini", version: "1.1", type: browser }, - engine: { name: Presto }, - device: - { type: mobile, subtype: feature, manufacturer: Siemens, model: ME75 }, - } - readable: "Opera Mini 1.1 on a Siemens ME75" -- headers: "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.3003/hifi/tmobile-motorola/at; Motorola V3i; en; U; ssr)" - result: - { - browser: { name: "Opera Mini", version: "1.1", type: browser }, - engine: { name: Presto }, - device: - { type: mobile, subtype: feature, manufacturer: Motorola, model: V3i }, - } - readable: "Opera Mini 1.1 on a Motorola V3i" -- headers: "User-Agent: Mozilla/5.0 Opera/9.80 (KDDI-SN3U; BREW; Opera Mobi; U; ja) Presto/2.4.18 Version/10.00" - result: - { - browser: { name: "Opera Mobile", version: "10.00", type: browser }, - engine: { name: Presto, version: 2.4.18 }, - os: { name: Brew }, - device: - { - type: mobile, - subtype: feature, - manufacturer: "Sony Ericsson", - model: S007, - carrier: au, - }, - } - readable: "Opera Mobile 10.00 on a Sony Ericsson S007 running Brew" -- headers: "User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-TS3V; BREW; Opera Mobi; U; ja) Presto/2.4.15 Version/10.00" - result: - { - browser: { name: "Opera Mobile", version: "10.00", type: browser }, - engine: { name: Presto, version: 2.4.15 }, - os: { name: Brew }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Toshiba, - model: T005, - carrier: au, - }, - } - readable: "Opera Mobile 10.00 on a Toshiba T005 running Brew" -- headers: "User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-TS3P; BREW; Opera Mobi; U; ja) Presto/2.2.1" - result: - { - browser: { name: "Opera Mobile", version: "9.5", type: browser }, - engine: { name: Presto, version: 2.2.1 }, - os: { name: Brew }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Toshiba, - model: T002, - carrier: au, - }, - } - readable: "Opera Mobile 9.5 on a Toshiba T002 running Brew" -- headers: "User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-SN3O; BREW; Opera Mobi; U; ja) Presto/2.4.15 Version/10.00" - result: - { - browser: { name: "Opera Mobile", version: "10.00", type: browser }, - engine: { name: Presto, version: 2.4.15 }, - os: { name: Brew }, - device: - { - type: mobile, - subtype: feature, - manufacturer: "Sony Ericsson", - model: S003, - carrier: au, - }, - } - readable: "Opera Mobile 10.00 on a Sony Ericsson S003 running Brew" -- headers: "User-Agent: Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)" - result: - { - browser: { name: "Opera Mobile", version: "9.51", type: browser }, - engine: { name: Presto }, - os: { name: "Windows Mobile" }, - device: { type: mobile, subtype: smart }, - } - readable: "Opera Mobile 9.51 on Windows Mobile" -- headers: "User-Agent: Opera/9.51 Beta (Microsoft Windows; PPC; 240x320; Opera Mobi/1718; U; en)" - result: - { - browser: { name: "Opera Mobile", version: "9.51", type: browser }, - engine: { name: Presto }, - os: { name: "Windows Mobile" }, - device: { type: mobile, subtype: smart }, - } - readable: "Opera Mobile 9.51 on Windows Mobile" -- headers: "User-Agent: GT-C3595 Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.33398/34.2003; U; xx) Presto/2.8.119 Version/11.10" - readable: "Opera Mini 7.1 on a Samsung GT-C3595" - result: - { - browser: { name: "Opera Mini", version: "7.1", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Samsung, - model: GT-C3595, - }, - } -- headers: "User-Agent: GT-E3300 Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.29644/35.6822; U; xx) Presto/2.8.119 Version/11.10" - readable: "Opera Mini 4.4 on a Samsung GT-E3300" - result: - { - browser: { name: "Opera Mini", version: "4.4", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Samsung, - model: GT-E3300, - }, - } -- headers: "User-Agent: GT-E3309 Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.29644/37.8773; U; es) Presto/2.12.423 Version/12.16" - readable: "Opera Mini 4.4 on a Samsung GT-E3309" - result: - { - browser: { name: "Opera Mini", version: "4.4", type: browser }, - engine: { name: Presto, version: 2.12.423 }, - device: - { - type: mobile, - subtype: feature, - manufacturer: Samsung, - model: GT-E3309, - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 9; SM-N950F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36 OPT/1.17.66" - readable: "Opera Touch 1.17 on a Samsung Galaxy Note 8 running Android 9" - result: - { - browser: - { - name: "Opera Touch", - family: { name: Chrome, version: 74 }, - version: "1.17", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "9" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Note 8", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 8.1.0; Nokia 8 Sirocco Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36 OPT/1.11.42" - readable: "Opera Touch 1.11 on a Nokia 8 Sirocco running Android 8.1.0" - result: - { - browser: - { - name: "Opera Touch", - family: { name: Chrome, version: 70 }, - version: "1.11", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 8.1.0 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Nokia, - model: "8 Sirocco", - }, - } -- headers: "User-Agent: Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/4" - readable: "Opera Touch on an Apple iPad running iOS 12.2" - result: - { - browser: { name: "Opera Touch", type: browser }, - engine: { name: Webkit, version: 605.1.15 }, - os: { name: iOS, version: "12.2" }, - device: { type: tablet, manufacturer: Apple, model: iPad }, - } -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/4 Mobile/15E148" - readable: "Opera Touch on an Apple iPhone running iOS 12.3" - result: - { - browser: { name: "Opera Touch", type: browser }, - engine: { name: Webkit, version: 605.1.15 }, - os: { name: iOS, version: "12.3" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } -- headers: "User-Agent: Mozilla/5.0 (iPad; CPU OS 12_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/2 Mobile/16C50" - readable: "Opera Touch on an Apple iPad running iOS 12.1.1" - result: - { - browser: { name: "Opera Touch", type: browser }, - engine: { name: Webkit, version: 605.1.15 }, - os: { name: iOS, version: 12.1.1 }, - device: { type: tablet, manufacturer: Apple, model: iPad }, - } -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/74 Mobile/15G77" - readable: "Opera Touch on an Apple iPhone running iOS 11.4.1" - result: - { - browser: { name: "Opera Touch", type: browser }, - engine: { name: Webkit, version: 605.1.15 }, - os: { name: iOS, version: 11.4.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } +- + headers: 'User-Agent: Opera/9.80 (J2ME/MIDP; Opera Mini; U; xx) Presto/2.12.423 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux zbov; U; xx) Presto/2.9.201 Version/11.50' + result: { browser: { name: 'Opera Mobile', version: '11.50', type: browser }, engine: { name: Presto, version: 2.9.201 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mobile 11.50' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.12.423 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini' +- + headers: 'User-Agent: Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/10.54' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature } } + readable: 'Opera Mini' +- + headers: 'User-Agent: SAMSUNG-GT-C3322i Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-C3322i } } + readable: 'Opera Mini on a Samsung GT-C3322i' +- + headers: 'User-Agent: SAMSUNG-GT-S5611 Opera/9.80 (X11; Linux zvav; U; xx) Presto/2.8.119 Version/11.10' + result: { browser: { name: 'Opera Mini', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-S5611 } } + readable: 'Opera Mini on a Samsung GT-S5611' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-S8500' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Opera Mini 8.0 on a Samsung Wave running Bada' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-i8000' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Opera Mini 8.0 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35659/35.6497; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8520', X-OperaMini-Phone-UA: 'BlackBerry8520/5.0.0.681 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/613' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8520' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8520 running BlackBerry OS 5.0' +- + headers: { User-Agent: 'Opera/9.80 (BlackBerry; Opera Mini/8.0.35667/35.6680; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'RIM # BlackBerry 8900', X-OperaMini-Phone-UA: 'BlackBerry8900/5.0.0.1113 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/100' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'BlackBerry OS', version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: RIM, model: 'BlackBerry Curve 8900' } } + readable: 'Opera Mini 8.0 on a RIM BlackBerry Curve 8900 running BlackBerry OS 5.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-i8000', X-OperaMini-Phone-UA: 'SAMSUNG-GT-i8000/1.0 (Windows CE; Opera Mobi; U; en) Opera 9.5 UNTRUSTED/1.0' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'I8000 Omnia II' } } + readable: 'Opera Mini 8.0 on a Samsung I8000 Omnia II running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.7382; U; xx) Presto/2.8.119 Version/11.10', X-Operamini-Phone-Ua: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DZHLB1; U; Bada/2.0; zh-cn) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B', Device-Stock-Ua: 'Mozilla/5.0 (SAMSUNG; SAMSUNG-GT-S5380D/S5380DZHLB1; U; Bada/2.0; zh-cn) AppleWebKit/534.20 (KHTML, like Gecko) Dolfin/3.0 Mobile HVGA SMM-MMS/1.2.0 OPN-B' } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Wave Y' } } + readable: 'Opera Mini 8.0 on a Samsung Wave Y running Bada 2.0' +- + headers: { User-Agent: 'Opera/9.80 (Windows Mobile; Opera Mini/5.1.21594/37.6116; U; xx) Presto/2.12.423 Version/12.16', X-OperaMini-Phone: 'HTC # Touch Pro/T7272/TyTn III', X-OperaMini-Phone-UA: HTC_Touch_Pro_T7272 } + result: { browser: { name: 'Opera Mini', version: '5.1', type: browser }, engine: { name: Presto, version: 2.12.423 }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Touch Pro' } } + readable: 'Opera Mini 5.1 on a HTC Touch Pro running Windows Mobile' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/8.0.35626/35.6368; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Samsung # GT-S8500', Device-Stock-UA: SAMSUNG-GT-S8500, X-OperaMini-Phone-UA: SAMSUNG-GT-S8500 } + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: Bada }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Wave } } + readable: 'Opera Mini 8.0 on a Samsung Wave running Bada' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.7144/hifi/tmobile/at; Nokia 6085; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '6085' } } + readable: 'Opera Mini 1.1 on a Nokia 6085' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.7231/hifi/tmobile/at; Motorola V3; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V3 } } + readable: 'Opera Mini 1.1 on a Motorola V3' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.4948/hifi/tmobile/at; SonyEricsson K550i; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: K550i } } + readable: 'Opera Mini 1.1 on a Sony Ericsson K550i' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.5005/hifi/tmobile/at; Nokia 5300; de; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, os: { name: Series40 }, device: { type: mobile, subtype: feature, manufacturer: Nokia, model: '5300 XpressMusic' } } + readable: 'Opera Mini 1.1 on a Nokia 5300 XpressMusic running Series40' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.3314/hifi/tmobile/cz; Siemens ME75; cs; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Siemens, model: ME75 } } + readable: 'Opera Mini 1.1 on a Siemens ME75' +- + headers: 'User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/1.1.3003/hifi/tmobile-motorola/at; Motorola V3i; en; U; ssr)' + result: { browser: { name: 'Opera Mini', version: '1.1', type: browser }, engine: { name: Presto }, device: { type: mobile, subtype: feature, manufacturer: Motorola, model: V3i } } + readable: 'Opera Mini 1.1 on a Motorola V3i' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.80 (KDDI-SN3U; BREW; Opera Mobi; U; ja) Presto/2.4.18 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.18 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: S007, carrier: au } } + readable: 'Opera Mobile 10.00 on a Sony Ericsson S007 running Brew' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-TS3V; BREW; Opera Mobi; U; ja) Presto/2.4.15 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.15 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: T005, carrier: au } } + readable: 'Opera Mobile 10.00 on a Toshiba T005 running Brew' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-TS3P; BREW; Opera Mobi; U; ja) Presto/2.2.1' + result: { browser: { name: 'Opera Mobile', version: '9.5', type: browser }, engine: { name: Presto, version: 2.2.1 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: Toshiba, model: T002, carrier: au } } + readable: 'Opera Mobile 9.5 on a Toshiba T002 running Brew' +- + headers: 'User-Agent: Mozilla/5.0 Opera/9.5 (KDDI-SN3O; BREW; Opera Mobi; U; ja) Presto/2.4.15 Version/10.00' + result: { browser: { name: 'Opera Mobile', version: '10.00', type: browser }, engine: { name: Presto, version: 2.4.15 }, os: { name: Brew }, device: { type: mobile, subtype: feature, manufacturer: 'Sony Ericsson', model: S003, carrier: au } } + readable: 'Opera Mobile 10.00 on a Sony Ericsson S003 running Brew' +- + headers: 'User-Agent: Opera/9.51 Beta (Microsoft Windows; PPC; Opera Mobi/1718; U; en)' + result: { browser: { name: 'Opera Mobile', version: '9.51', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 9.51 on Windows Mobile' +- + headers: 'User-Agent: Opera/9.51 Beta (Microsoft Windows; PPC; 240x320; Opera Mobi/1718; U; en)' + result: { browser: { name: 'Opera Mobile', version: '9.51', type: browser }, engine: { name: Presto }, os: { name: 'Windows Mobile' }, device: { type: mobile, subtype: smart } } + readable: 'Opera Mobile 9.51 on Windows Mobile' +- + headers: 'User-Agent: GT-C3595 Opera/9.80 (J2ME/MIDP; Opera Mini/7.1.33398/34.2003; U; xx) Presto/2.8.119 Version/11.10' + readable: 'Opera Mini 7.1 on a Samsung GT-C3595' + result: { browser: { name: 'Opera Mini', version: '7.1', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-C3595 } } +- + headers: 'User-Agent: GT-E3300 Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.29644/35.6822; U; xx) Presto/2.8.119 Version/11.10' + readable: 'Opera Mini 4.4 on a Samsung GT-E3300' + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.8.119 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-E3300 } } +- + headers: 'User-Agent: GT-E3309 Opera/9.80 (J2ME/MIDP; Opera Mini/4.4.29644/37.8773; U; es) Presto/2.12.423 Version/12.16' + readable: 'Opera Mini 4.4 on a Samsung GT-E3309' + result: { browser: { name: 'Opera Mini', version: '4.4', type: browser }, engine: { name: Presto, version: 2.12.423 }, device: { type: mobile, subtype: feature, manufacturer: Samsung, model: GT-E3309 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 9; SM-N950F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.157 Mobile Safari/537.36 OPT/1.17.66' + readable: 'Opera Touch 1.17 on a Samsung Galaxy Note 8 running Android 9' + result: { browser: { name: 'Opera Touch', family: { name: Chrome, version: 74 }, version: '1.17', type: browser }, engine: { name: Blink }, os: { name: Android, version: '9' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 8' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 8.1.0; Nokia 8 Sirocco Build/OPR1.170623.026) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.80 Mobile Safari/537.36 OPT/1.11.42' + readable: 'Opera Touch 1.11 on a Nokia 8 Sirocco running Android 8.1.0' + result: { browser: { name: 'Opera Touch', family: { name: Chrome, version: 70 }, version: '1.11', type: browser }, engine: { name: Blink }, os: { name: Android, version: 8.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Nokia, model: '8 Sirocco' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/4' + readable: 'Opera Touch on an Apple iPad running iOS 12.2' + result: { browser: { name: 'Opera Touch', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '12.2' }, device: { type: tablet, manufacturer: Apple, model: iPad } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 12_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/4 Mobile/15E148' + readable: 'Opera Touch on an Apple iPhone running iOS 12.3' + result: { browser: { name: 'Opera Touch', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '12.3' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: Mozilla/5.0 (iPad; CPU OS 12_1_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/2 Mobile/16C50' + readable: 'Opera Touch on an Apple iPad running iOS 12.1.1' + result: { browser: { name: 'Opera Touch', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: 12.1.1 }, device: { type: tablet, manufacturer: Apple, model: iPad } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 11_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) OPT/74 Mobile/15G77' + readable: 'Opera Touch on an Apple iPhone running iOS 11.4.1' + result: { browser: { name: 'Opera Touch', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: 11.4.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } \ No newline at end of file diff --git a/test/data/mobile/browser-other.yaml b/test/data/mobile/browser-other.yaml index 7581ee2..535a0c9 100644 --- a/test/data/mobile/browser-other.yaml +++ b/test/data/mobile/browser-other.yaml @@ -1,524 +1,120 @@ -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; OnePlus2) AppleWebKit/601.1.46 (KHTML, like Gecko) Cornowser/1.0.1.0 Chrome/49.0.2593.0 Mobile Safari/601.1" - result: - { - browser: - { - name: Cornowser, - family: { name: Chrome, version: 49 }, - version: 1.0.1.0, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 5.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: OnePlus, model: "2" }, - } - readable: "Cornowser 1.0.1.0 on an OnePlus 2 running Android 5.1.1" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SHV-E250S Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 Swing(And)/2.2.6.0" - result: - { - browser: - { - name: "Swing Browser", - using: { name: "Chromium WebView", version: "30" }, - version: 2.2.6, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 4.4.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Note II", - }, - } - readable: "Swing Browser 2.2.6 on a Samsung Galaxy Note II running Android 4.4.2" -- headers: "User-Agent: Prince/7.1 (http://www.princexml.com)" - readable: "Prince 7.1" - result: { browser: { name: Prince, version: "7.1", type: browser } } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; en-us; O+ 8.36 Android Build/Oplus8.36_Oplus) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" - readable: "Android Browser on an O+ 8.36 Android running Android 4.1.1" - result: - { - browser: { name: Android Browser }, - device: { model: "O+ 8.36 Android", type: "mobile", subtype: "smart" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.1.1 }, - } -- 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 ACHEETAHI/2100502046" - readable: "CM Browser on a LeEco Le 1s X507 running Android 5.0.2" - result: - { - browser: - { - name: "CM Browser", - using: { name: "Chromium WebView", version: "37" }, - 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; Android 6.0.1; Le X520 Build/IEXCNFN5801607282S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 +CoolMarket/6.10.4" - readable: "Cool Market 6.10.4 on a LeEco Le 2 X520 running Android 6.0.1" - result: - { - browser: - { - name: "Cool Market", - using: { name: "Chromium WebView", version: "49" }, - version: 6.10.4, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: LeEco, - model: "Le 2 X520", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5601405171S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.134 Mobile Safari/537.36 LeBrowser/7.3.0" - readable: "LeBrowser 7.3 on a LeEco Le 2 Pro X620 running Android 6.0" - result: - { - browser: - { - name: LeBrowser, - using: { name: "Chromium WebView", version: "43" }, - version: "7.3", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "6.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: LeEco, - model: "Le 2 Pro X620", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801607082S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 mCent/0.13.1032" - readable: "mCent Browser 0.13.1032 on a LeEco Le 2 X526 running Android 6.0.1" - result: - { - browser: - { - name: "mCent Browser", - family: { name: Chrome, version: 59 }, - version: 0.13.1032, - type: browser, - }, - 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 (Linux; U; Android 6.0.1; xx; Le X820 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 Quark/1.6.9.911 Mobile Safari/537.36" - readable: "Quark Browser 1.6.9 on a LeEco Le Max 2 X820 running Android 6.0.1" - result: - { - browser: - { - name: "Quark Browser", - family: { name: Chrome, version: 40 }, - version: 1.6.9, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: LeEco, - model: "Le Max 2 X820", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5801809301S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 HuohouBrowser/4006" - readable: "Huohou Browser 4006 on a LeEco Le 2 Pro X620 running Android 6.0" - result: - { - browser: - { - name: "Huohou Browser", - using: { name: "Chromium WebView", version: "49" }, - version: "4006", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "6.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: LeEco, - model: "Le 2 Pro X620", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X820 Build/FEXCNFN5601405314S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 HuohouBrowser/3062" - readable: "Huohou Browser 3062 on a LeEco Le Max 2 X820 running Android 6.0.1" - result: - { - browser: - { - name: "Huohou Browser", - using: { name: "Chromium WebView", version: "49" }, - version: "3062", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: LeEco, - model: "Le Max 2 X820", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; SM-N7509V Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 ucpro/1.0.0.861 Mobile Safari/537.36" - readable: "TinY 1.0.0.861 on a Samsung Galaxy Note 3 Neo running Android 4.3" - result: - { - browser: - { - name: TinY, - family: { name: Chrome, version: 40 }, - version: 1.0.0.861, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "4.3" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Note 3 Neo", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; xx; ONEPLUS A3000 Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCPro/1.0.0.860 Mobile Safari/537.36" - readable: "TinY 1.0.0.860 on an OnePlus 3 running Android 6.0.1" - result: - { - browser: - { - name: TinY, - family: { name: Chrome, version: 40 }, - version: 1.0.0.860, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: OnePlus, model: "3" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 8.1.0; vivo X9 Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.2.0.5" - readable: "Vivo Browser 6.2.0.5 on a Vivo X9 running Android 8.1.0" - result: - { - browser: - { - name: "Vivo Browser", - using: { name: "Chromium WebView", version: "62" }, - version: 6.2.0.5, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 8.1.0 }, - device: { type: mobile, subtype: smart, manufacturer: Vivo, model: X9 }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; vivo X6Plus A Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.1.1.1" - readable: "Vivo Browser 6.1.1.1 on a Vivo X6 Plus A running Android 5.0.2" - result: - { - browser: - { - name: "Vivo Browser", - using: { name: "Chromium WebView", version: "62" }, - version: 6.1.1.1, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 5.0.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Vivo, - model: "X6 Plus A", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; vivo Y66 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.0.5.1" - readable: "Vivo Browser 6.0.5.1 on a Vivo Y66 running Android 6.0.1" - result: - { - browser: - { - name: "Vivo Browser", - using: { name: "Chromium WebView", version: "62" }, - version: 6.0.5.1, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: { type: mobile, subtype: smart, manufacturer: Vivo, model: Y66 }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; vivo Y31 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36 VivoBrowser/5.2.21" - readable: "Vivo Browser 5.2.21 on a Vivo Y31 running Android 5.0.2" - result: - { - browser: - { - name: "Vivo Browser", - family: { name: Chrome, version: 38 }, - version: 5.2.21, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 5.0.2 }, - device: { type: mobile, subtype: smart, manufacturer: Vivo, model: Y31 }, - } -- 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 OppoBrowser/15.5.0.2" - readable: "Oppo Browser 15.5.0.2 on an Oppo F5 running Android 7.1.1" - result: - { - browser: - { - name: "Oppo Browser", - family: { name: Chrome, version: 53 }, - version: 15.5.0.2, - 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 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 a Huawei M570 running Android 7.0" - result: - { - browser: - { - name: "Aloha Browser", - family: { name: Chrome, version: 63 }, - version: 1.2.1.3, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "7.0" }, - device: - { type: mobile, subtype: smart, 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: 53 }, - 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 }, - engine: { name: Webkit, version: 605.1.15 }, - os: { name: iOS, version: "11.3" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPad }, - } - readable: "Diigo Browser on an Apple iPad running iOS 11.3" -- 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 }, - 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 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", - using: { name: "Chromium WebView", version: "37" }, - 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", - family: { name: Chrome, version: 61 }, - 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 9; en; SM-A205GN) 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 Samsung Galaxy A20 running Android 9" - result: - { - browser: - { - name: "Tenta Browser", - family: { name: Chrome, version: 64 }, - version: 3.1.6, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "9" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy A20", - }, - } -- 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 J5 (2016) running Android 7.1.1" - result: - { - browser: - { - name: K.Browser, - family: { name: Chrome, version: 64 }, - 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)", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 9; RMX1941 Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.134 Mobile Safari/537.36 RealmeBrowser/35.5.0.8" - readable: "Realme Browser 35.5.0.8 on a RMX1941 running Android 9" - result: - { - browser: - { - name: "Realme Browser", - family: { name: Chrome, version: 53 }, - version: 35.5.0.8, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "9" }, - device: { type: mobile, subtype: smart, model: RMX1941 }, - } -- 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 }, - engine: { name: Webkit, version: 601.1.46 }, - os: { name: iOS, version: 9.3.5 }, - device: - { type: mobile, subtype: smart, 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 9; FIG-LX3 Build/HUAWEIFIG-L23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.128 Mobile Safari/537.36 (Ecosia android@69.0.3497.128)" - result: - { - browser: - { - name: "Ecosia Browser", - family: { name: Chrome, version: 69 }, - version: 69.0.3497.128, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: "9" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Huawei, - model: "P Smart", - }, - } - readable: "Ecosia Browser 69.0.3497.128 on a Huawei P Smart running Android 9" -- 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, type: browser }, - engine: { name: Webkit, version: 603.3.8 }, - os: { name: iOS, version: 10.3.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPad }, - } - readable: "Mobicip on an Apple iPad running iOS 10.3.3" +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.1; OnePlus2) AppleWebKit/601.1.46 (KHTML, like Gecko) Cornowser/1.0.1.0 Chrome/49.0.2593.0 Mobile Safari/601.1' + result: { browser: { name: Cornowser, family: { name: Chrome, version: 49 }, version: 1.0.1.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: OnePlus, model: '2' } } + readable: 'Cornowser 1.0.1.0 on an OnePlus 2 running Android 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SHV-E250S Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36 Swing(And)/2.2.6.0' + result: { browser: { name: 'Swing Browser', using: { name: 'Chromium WebView', version: '30' }, version: 2.2.6, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } + readable: 'Swing Browser 2.2.6 on a Samsung Galaxy Note II running Android 4.4.2' +- + headers: 'User-Agent: Prince/7.1 (http://www.princexml.com)' + readable: 'Prince 7.1' + result: { browser: { name: Prince, version: '7.1', type: browser } } +- + 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 ACHEETAHI/2100502046' + readable: 'CM Browser on a LeEco Le 1s X507 running Android 5.0.2' + result: { browser: { name: 'CM Browser', using: { name: 'Chromium WebView', version: '37' }, 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; Android 6.0.1; Le X520 Build/IEXCNFN5801607282S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 +CoolMarket/6.10.4' + readable: 'Cool Market 6.10.4 on a LeEco Le 2 X520 running Android 6.0.1' + result: { browser: { name: 'Cool Market', using: { name: 'Chromium WebView', version: '49' }, version: 6.10.4, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 X520' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5601405171S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.134 Mobile Safari/537.36 LeBrowser/7.3.0' + readable: 'LeBrowser 7.3 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: LeBrowser, using: { name: 'Chromium WebView', version: '43' }, version: '7.3', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X526 Build/IIXOSOP5801607082S) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.125 Mobile Safari/537.36 mCent/0.13.1032' + readable: 'mCent Browser 0.13.1032 on a LeEco Le 2 X526 running Android 6.0.1' + result: { browser: { name: 'mCent Browser', family: { name: Chrome, version: 59 }, version: 0.13.1032, type: browser }, 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 (Linux; U; Android 6.0.1; xx; Le X820 Build/MOB31T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 Quark/1.6.9.911 Mobile Safari/537.36' + readable: 'Quark Browser 1.6.9 on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: 'Quark Browser', family: { name: Chrome, version: 40 }, version: 1.6.9, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Le X620 Build/HEXCNFN5801809301S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 HuohouBrowser/4006' + readable: 'Huohou Browser 4006 on a LeEco Le 2 Pro X620 running Android 6.0' + result: { browser: { name: 'Huohou Browser', using: { name: 'Chromium WebView', version: '49' }, version: '4006', type: browser }, engine: { name: Blink }, os: { name: Android, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le 2 Pro X620' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Le X820 Build/FEXCNFN5601405314S; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/49.0.2623.91 Mobile Safari/537.36 HuohouBrowser/3062' + readable: 'Huohou Browser 3062 on a LeEco Le Max 2 X820 running Android 6.0.1' + result: { browser: { name: 'Huohou Browser', using: { name: 'Chromium WebView', version: '49' }, version: '3062', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: LeEco, model: 'Le Max 2 X820' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.3; xx; SM-N7509V Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 ucpro/1.0.0.861 Mobile Safari/537.36' + readable: 'TinY 1.0.0.861 on a Samsung Galaxy Note 3 Neo running Android 4.3' + result: { browser: { name: TinY, family: { name: Chrome, version: 40 }, version: 1.0.0.861, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3 Neo' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 6.0.1; xx; ONEPLUS A3000 Build/MXB48T) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCPro/1.0.0.860 Mobile Safari/537.36' + readable: 'TinY 1.0.0.860 on an OnePlus 3 running Android 6.0.1' + result: { browser: { name: TinY, family: { name: Chrome, version: 40 }, version: 1.0.0.860, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: OnePlus, model: '3' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 8.1.0; vivo X9 Build/OPM1.171019.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.2.0.5' + readable: 'Vivo Browser 6.2.0.5 on a Vivo X9 running Android 8.1.0' + result: { browser: { name: 'Vivo Browser', using: { name: 'Chromium WebView', version: '62' }, version: 6.2.0.5, type: browser }, engine: { name: Blink }, os: { name: Android, version: 8.1.0 }, device: { type: mobile, subtype: smart, manufacturer: Vivo, model: X9 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; vivo X6Plus A Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.1.1.1' + readable: 'Vivo Browser 6.1.1.1 on a Vivo X6 Plus A running Android 5.0.2' + result: { browser: { name: 'Vivo Browser', using: { name: 'Chromium WebView', version: '62' }, version: 6.1.1.1, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Vivo, model: 'X6 Plus A' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; vivo Y66 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.0.5.1' + readable: 'Vivo Browser 6.0.5.1 on a Vivo Y66 running Android 6.0.1' + result: { browser: { name: 'Vivo Browser', using: { name: 'Chromium WebView', version: '62' }, version: 6.0.5.1, type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Vivo, model: Y66 } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.2; vivo Y31 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36 VivoBrowser/5.2.21' + readable: 'Vivo Browser 5.2.21 on a Vivo Y31 running Android 5.0.2' + result: { browser: { name: 'Vivo Browser', family: { name: Chrome, version: 38 }, version: 5.2.21, type: browser }, engine: { name: Blink }, os: { name: Android, version: 5.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Vivo, model: Y31 } } +- + 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 OppoBrowser/15.5.0.2' + readable: 'Oppo Browser 15.5.0.2 on an Oppo F5 running Android 7.1.1' + result: { browser: { name: 'Oppo Browser', family: { name: Chrome, version: 53 }, version: 15.5.0.2, 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 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 a Huawei M570 running Android 7.0' + result: { browser: { name: 'Aloha Browser', family: { name: Chrome, version: 63 }, version: 1.2.1.3, type: browser }, engine: { name: Blink }, os: { name: Android, version: '7.0' }, device: { type: mobile, subtype: smart, 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: 53 }, 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 }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '11.3' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPad } } + readable: 'Diigo Browser on an Apple iPad running iOS 11.3' +- + 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 }, 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 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', using: { name: 'Chromium WebView', version: '37' }, 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', family: { name: Chrome, version: 61 }, 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 9; en; SM-A205GN) 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 Samsung Galaxy A20 running Android 9' + result: { browser: { name: 'Tenta Browser', family: { name: Chrome, version: 64 }, version: 3.1.6, type: browser }, engine: { name: Blink }, os: { name: Android, version: '9' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy A20' } } +- + 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 J5 (2016) running Android 7.1.1' + result: { browser: { name: K.Browser, family: { name: Chrome, version: 64 }, 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)' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 9; RMX1941 Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.134 Mobile Safari/537.36 RealmeBrowser/35.5.0.8' + readable: 'Realme Browser 35.5.0.8 on a RMX1941 running Android 9' + result: { browser: { name: 'Realme Browser', family: { name: Chrome, version: 53 }, version: 35.5.0.8, type: browser }, engine: { name: Blink }, os: { name: Android, version: '9' }, device: { type: mobile, subtype: smart, model: RMX1941 } } +- + 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 }, engine: { name: Webkit, version: 601.1.46 }, os: { name: iOS, version: 9.3.5 }, device: { type: mobile, subtype: smart, 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 9; FIG-LX3 Build/HUAWEIFIG-L23) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.128 Mobile Safari/537.36 (Ecosia android@69.0.3497.128)' + result: { browser: { name: 'Ecosia Browser', family: { name: Chrome, version: 69 }, version: 69.0.3497.128, type: browser }, engine: { name: Blink }, os: { name: Android, version: '9' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'P Smart' } } + readable: 'Ecosia Browser 69.0.3497.128 on a Huawei P Smart running Android 9' +- + 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, type: browser }, engine: { name: Webkit, version: 603.3.8 }, os: { name: iOS, version: 10.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPad } } + readable: 'Mobicip on an Apple iPad running iOS 10.3.3' \ No newline at end of file diff --git a/test/data/mobile/os-android.yaml b/test/data/mobile/os-android.yaml index 0b92f74..f907e12 100644 --- a/test/data/mobile/os-android.yaml +++ b/test/data/mobile/os-android.yaml @@ -1,974 +1,372 @@ -- headers: "User-Agent: 3G Explorer/3.1.0.1085 (Linux;Android 4.3,SM-N9005) AppleWebKit/533.1 (357507050070039,01)" - result: - { - browser: { name: "3G Explorer", version: 3.1.0, type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: "4.3" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Note 3", - }, - } - readable: "3G Explorer 3.1.0 on a Samsung Galaxy Note 3 running Android 4.3" -- headers: "User-Agent: 3G Explorer/3.1.3.165 (Linux;Android 4.2.2,Lenovo K900) AppleWebKit/533.1 (860486024086613,00)" - result: - { - browser: { name: "3G Explorer", version: 3.1.3, type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 4.2.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Lenovo, model: K900 }, - } - readable: "3G Explorer 3.1.3 on a Lenovo K900 running Android 4.2.2" -- headers: "User-Agent: 4G Explorer/3.2.0 (Linux;Android 4.4.2,HTC 801e) AppleWebKit/533.1 (354439050552654,01)" - result: - { - browser: { name: "4G Explorer", version: 3.2.0, type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 4.4.2 }, - device: { type: mobile, subtype: smart, manufacturer: HTC, model: One }, - } - readable: "4G Explorer 3.2.0 on a HTC One running Android 4.4.2" -- headers: "User-Agent: 4G Explorer/3.5.3 (Linux;Android 4.2.2,HM NOTE 1TD) AppleWebKit/533.1 (863990024967042,78)" - result: - { - browser: { name: "4G Explorer", version: 3.5.3, type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Xiaomi, - model: "Redmi Note", - }, - } - readable: "4G Explorer 3.5.3 on a Xiaomi Redmi Note running Android 4.2.2" -- headers: "User-Agent: AcerTD600_TD/1.0 Android/2.2 (Linux; Android 2.2) Release/12.20.2010 Browser/WAP 2.0 AppleWebKit/530.17" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.2" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Acer, - model: "beTouch TD600", - }, - } - readable: "Android Browser on an Acer beTouch TD600 running Android 2.2" -- headers: "User-Agent: COSHIP F2/1.0 Android/4.3 Release/JLS36C Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.3" }, - device: { type: mobile, subtype: smart, manufacturer: Coship, model: F2 }, - } - readable: "Android Browser on a Coship F2 running Android 4.3" -- headers: "User-Agent: DESAY_TS808_TD/1.0 Android/2.3.5 (Linux; Android 2.3.5) Release/7.25.2012 Mozilla/5.0(Linux;U;Android 2.3.5) 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.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Desay, model: TS808 }, - } - readable: "Android Browser on a Desay TS808 running Android 2.3.5" -- headers: "User-Agent: Diamond_S3/Diamond_S3 Linux/3.4.5+ Android/4.2.2 Release/Diamond_S3 Browser/AppleWebKit534.30 Profile/ Configuration/ Mobile Safari/534.30" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Starmobile, - model: "Diamond S3", - }, - } - readable: "Android Browser on a Starmobile Diamond S3 running Android 4.2.2" -- headers: "User-Agent: GiONEE-GN705T_TD/V1 Linux/3.4.5 Android/4.2.1 Release/04.07.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 System/Android 4.2.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.2.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Gionee, model: GN705T }, - } - readable: "Android Browser on a Gionee GN705T running Android 4.2.1" -- headers: "User-Agent: HS-T830_TD/1.0 Android/2.3 Release/09.27.2012 Browser/AppleWebKit533.1 Profile/MIDP-2.0 Configuration/CLDC-1.1" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: "2.3" }, - device: - { type: mobile, subtype: smart, manufacturer: Hisense, model: T830 }, - } - readable: "Android Browser on a Hisense T830 running Android 2.3" -- headers: "User-Agent: Hisense I639M_LTE/1.0 Android/4.4 Release/15.12.2014 Browser/AppleWebKit537.36 Profile/MIDP-2.0 Configuration/CLDC-1.1" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "537.36" }, - os: { name: Android, version: "4.4" }, - device: - { type: mobile, subtype: smart, manufacturer: Hisense, model: I639M }, - } - readable: "Android Browser on a Hisense I639M running Android 4.4" -- headers: "User-Agent: KONKA V980_TD/1.0 Android/4.0 Release/10.23.2012 Browser/AppleWebKit534.3 Profile/MIDP-2.0 Configuration/CLDC-1.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.3" }, - os: { name: Android, version: "4.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Konka, model: V980 }, - } - readable: "Android Browser on a Konka V980 running Android 4.0" -- headers: "User-Agent: Karbonn A25 Linux/3.0.13 Android/4.0.4 Release/06.09.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Karbonn, model: A25 }, - } - readable: "Android Browser on a Karbonn A25 running Android 4.0.4" -- headers: "User-Agent: Lenovo-A278t_TD/S100 Linux/2.6.35 Android/2.3.5 Release/09.03.2012 Browser/AppleWebkit533.1 Mobile Safari/533.1" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Lenovo, model: A278 }, - } - readable: "Android Browser on a Lenovo A278 running Android 2.3.5" -- headers: "User-Agent: Lephone_TD8208_TD/1.0 Android/2.3.5 MocorDroid/SpreadTrum Release/3.22.2012 Browser/AppleWebKit5333.1" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "5333.1" }, - os: { name: Android, version: 2.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Lephone, model: TD8208 }, - } - readable: "Android Browser on a Lephone TD8208 running Android 2.3.5" -- headers: "User-Agent: MQQBrowser/3.0/Mozilla/5.0 (HW-HUAWEI_C8500/C8500V100R001C92B234;U;Android/2.1;240*320;CTC/2.0) AppleWebKit/530.17 Mobile Safari/530.17" - result: - { - browser: { name: "QQ Browser", version: "3.0", type: browser }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 }, - } - readable: "QQ Browser 3.0 on a Huawei C8500 running Android 2.1" -- headers: "User-Agent: Mozilla/5.0 (HW-HUAWEI_C8500/C8500V100R001C92B234;U;Android/2.1;240*320;CTC/2.0) AppleWebKit/530.17 Mobile Safari/530.17 parameters/{scr=427_320,cm=1,ql=l,imei=a0000020ccd264,bm=1,eng=adrmini7,mdm=1,mdl=C8500,ps=1} tiantian(securitypay)" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 }, - } - readable: "Android Browser on a Huawei C8500 running Android 2.1" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; Aspire V5-121 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Safari/537.36" - result: - { - browser: { name: Chrome, version: "40", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: 4.4.4 }, - device: { type: desktop, manufacturer: Acer, model: "Aspire V5-121" }, - } - readable: "Chrome 40 on an Acer Aspire V5-121 running Android 4.4.4" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.99; Build/LPV81C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.69 Mobile Safari/537.36" - result: - { - browser: { name: Chrome, version: "38", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: { value: "5.0", alias: L } }, - device: { type: mobile, subtype: smart }, - } - readable: "Chrome 38 on Android L" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.1.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.63 Mobile Safari/537.36" - result: - { - browser: { name: Chrome, version: "44", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: { value: "6", alias: M } }, - device: { type: mobile, subtype: smart }, - } - readable: "Chrome 44 on Android M" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 02.00.06(2.1-update1); xx; i-station Buddy Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.0" }, - device: { type: mobile, subtype: smart, model: "i-station Buddy" }, - } - readable: "Android Browser on an i-station Buddy running Android 2.0" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; androVM for VirtualBox ('Tablet' version with phone caps) Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.1.1 }, - device: { type: emulator }, - } - readable: "Android Browser on an emulator running Android 4.1.1" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android Eclair; es-es Build/pandigitalopc1/sourceidDL00000009) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.0" }, - device: { type: tablet, manufacturer: Pandigital, model: OPC1 }, - } - readable: "Android Browser on a Pandigital OPC1 running Android 2.0" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android Eclair; xx; i-mobile i858 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.0" }, - device: - { type: mobile, subtype: smart, manufacturer: i-Mobile, model: i858 }, - } - readable: "Android Browser on an i-Mobile i858 running Android 2.0" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android KeyLimePie; xx; LG-D410 Build/KRS91B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.4" }, - device: { type: mobile, subtype: smart, manufacturer: LG, model: L90 }, - } - readable: "Android Browser on a LG L90 running Android 4.4" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android KeyLimePie; xx; LG-F320L Build/KRS92B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.4" }, - device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 }, - } - readable: "Android Browser on a LG G2 running Android 4.4" -- headers: "User-Agent: Mozilla/5.0 (MOT-XT800/TITA_M2_16.22.7;U;Android/2.1-update1;480*854;CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.1" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Motorola, - model: "MOTO XT800", - }, - } - readable: "Android Browser on a Motorola MOTO XT800 running Android 2.1" -- headers: "User-Agent: NGM Dynamic Racing 2/V2 Linux/3.0.13 Android/4.2 Release/02.15.2012 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.2;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.2" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: NGM, - model: "Dynamic Racing 2", - }, - } - readable: "Android Browser on a NGM Dynamic Racing 2 running Android 4.2" -- headers: "User-Agent: OPPO_R811/1.0 Linux/3.0.13 Android/4.0 Release/10.15.2012 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.0" }, - device: { type: mobile, subtype: smart, manufacturer: Oppo, model: R811 }, - } - readable: "Android Browser on an Oppo R811 running Android 4.0" -- headers: "User-Agent: T-smart_G18_TD/1.0 Linux/2.6.35 Android/2.3.5 Release/7.16.2012 Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/533.1 baidubrowser/061_6.5.4.2_diordna_084_023/trams-T_01_5.3.2_81G-trams-T/71" - result: - { - browser: { name: "Baidu Browser", version: "2.4", type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: T-smart, model: G18 }, - } - readable: "Baidu Browser 2.4 on a T-smart G18 running Android 2.3.5" -- headers: "User-Agent: Xiaomi_2013022_TD/V1 Linux/3.4.5 Android/4.2.1 Release/03.11.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.2.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Xiaomi, - model: "Redmi 1", - }, - } - readable: "Android Browser on a Xiaomi Redmi 1 running Android 4.2.1" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 (grouper) Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Safari/537.36 XiaoMi/MiPad/MiuiBrowser/1.0" - result: - { - browser: { name: "MIUI Browser", version: "1.0", type: browser }, - engine: { name: Webkit, version: "537.36" }, - os: { name: Android, version: 4.4.2 }, - device: { type: tablet, manufacturer: Asus, model: "Nexus 7" }, - } - readable: "MIUI Browser 1.0 on an Asus Nexus 7 running Android 4.4.2" -- headers: "User-Agent: MASTONE G3_TD/1.0 Android/2.3 Release/4.20.2012 Browser/AppleWebKit533.1 Profile/MIDP-2.0" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: "2.3" }, - device: - { type: mobile, subtype: smart, manufacturer: Mastone, model: G3 }, - } - readable: "Android Browser on a Mastone G3 running Android 2.3" -- headers: "User-Agent: MASTONE_G13_TD/V2 Linux/3.0.13 Android/4.0 Release/04.02.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.0.4" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Mastone, model: G13 }, - } - readable: "Android Browser on a Mastone G13 running Android 4.0" -- headers: "User-Agent: Mastone_G9_TD/V2.00 Release/3.19.2012 Mozilla/5.0 (Linux; U; Android 2.3.5) 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.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Mastone, model: G9 }, - } - readable: "Android Browser on a Mastone G9 running Android 2.3.5" -- headers: "User-Agent: CoolPadCoolpad-8056_TD/1.0 Android/2.3.5(Linux; Android 2.3.5) Release/10.30.2012 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Coolpad, model: "8056" }, - } - readable: "Android Browser on a Coolpad 8056 running Android 2.3.5" -- headers: "User-Agent: DESAY_TS908_CMCC_TD/1.0 Android/2.3.7 (LinuxOS 2.6.35.7) Release/04.13.2012 Browser/WAP2.0" - result: - { - browser: { name: "Android Browser" }, - os: { name: Android, version: 2.3.7 }, - device: - { type: mobile, subtype: smart, manufacturer: Desay, model: TS908 }, - } - readable: "Android Browser on a Desay TS908 running Android 2.3.7" -- headers: "User-Agent: GiONEE_TD500_CMCC/1.0 Android/2.3.7 (LinuxOS 2.6.35.7) Release/11.28.2011 Browser/WAP2.0 (UCWEB/7.9.3)" - result: - { - browser: { name: "UC Browser", version: "7.9", type: browser }, - os: { name: Android, version: 2.3.7 }, - device: - { type: mobile, subtype: smart, manufacturer: Gionee, model: TD500 }, - } - readable: "UC Browser 7.9 on a Gionee TD500 running Android 2.3.7" -- headers: "User-Agent: HUAWEI Y325-T00_TD/V1 Linux/3.4.5 Android/2.3.6 Release/03.26.2013 Browser/AppleWebKit533.1 Mobile Safari/533.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Huawei, - model: "Ascend Y325", - }, - } - readable: "Android Browser on a Huawei Ascend Y325 running Android 2.3.6" -- headers: "User-Agent: Hisense_E602M_TDLTE/V3 Linux/3.4.67 Android/4.4.2 Release/04.01.2014 Browser/AppleWebKit537.36 Profile/MIDP-2.0 Configuration/CLDC-1.1" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "537.36" }, - os: { name: Android, version: 4.4.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Hisense, model: E602M }, - } - readable: "Android Browser on a Hisense E602M running Android 4.4.2" -- headers: "User-Agent: AMOI N820 Linux/3.0.13 Android/4.0.4 Release/08.24.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: { type: mobile, subtype: smart, manufacturer: Amoi, model: N820 }, - } - readable: "Android Browser on an Amoi N820 running Android 4.0.4" -- headers: "User-Agent: AT-AS40SE Linux/3.0.13 Android/4.0.4 Release/01.25.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Wolfgang, - model: AT-AS40SE, - }, - } - readable: "Android Browser on a Wolfgang AT-AS40SE running Android 4.0.4" -- headers: "User-Agent: E1-B Linux/3.0.13 Android/4.0.4 Release/06.05.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: { type: mobile, subtype: smart, model: E1-B }, - } - readable: "Android Browser on an E1-B running Android 4.0.4" -- headers: "User-Agent: GT-I9300 Linux/3.0.13 Android/4.0.4 Release/09.25.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S III", - }, - } - readable: "Android Browser on a Samsung Galaxy S III running Android 4.0.4" -- headers: "User-Agent: Mobiistar Touch Kem 452 Linux/3.0.13 Android/4.0.4 Release/09.21.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Mobiistar, - model: "Touch Kem 452", - }, - } - readable: "Android Browser on a Mobiistar Touch Kem 452 running Android 4.0.4" -- headers: "User-Agent: MI2-MI2/1.0 Linux/2.6.35.7 Android 2.3.5 Release/01.10.2013 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.5 }, - device: { type: mobile, subtype: smart }, - } - readable: "Android Browser on Android 2.3.5" -- headers: "User-Agent: MF356ZP/A/V1 Linux/3.4.39 Android/4.4.4 Release/11.13.2014 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.4.4" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.4.4 }, - device: { type: mobile, subtype: smart }, - } - readable: "Android Browser on Android 4.4.4" -- headers: "User-Agent: sprd-GT-N9300/1.0 Linux/2.6.35.7 Android/4.0.3 Release/11.29.2012 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 4.0.3 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Feiteng, - model: GT-N9300, - }, - } - readable: "Android Browser on a Feiteng GT-N9300 running Android 4.0.3" -- headers: "User-Agent: OneBrowser/3.2/HS-T92_TD/1.0 Android/2.2 Release/12.10.2011 Browser/AppleWebKit533.1 Profile/MIDP-2.0 Configuration/CLDC-1.1" - result: - { - browser: { name: OneBrowser, version: "3.2", type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: "2.2" }, - device: - { type: mobile, subtype: smart, manufacturer: Hisense, model: T92 }, - } - readable: "OneBrowser 3.2 on a Hisense T92 running Android 2.2" -- headers: "User-Agent: MQQBrowser/5.0/HS-T96_TD/1.0 Android/4.0 Release/5.10.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: "4.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Hisense, model: T96 }, - } - readable: "QQ Browser 5.0 on a Hisense T96 running Android 4.0" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; H30-T00) AppleWebKit/535.19 (KHTML, like Gecko) Version/4.0 LieBaoFast/2.9.0 Mobile Safari/535.19" - result: - { - browser: { name: LieBaoFast, version: 2.9.0, type: browser }, - engine: { name: Webkit, version: "535.19" }, - os: { name: Android, version: 4.2.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Huawei, - model: "Honor 3C", - }, - } - readable: "LieBaoFast 2.9.0 on a Huawei Honor 3C running Android 4.2.2" -- headers: "User-Agent: Dr.Web anti-virus Light Version: 7.00.11.7032 Device model: HTC One Firmware version: 4.3" - result: - { - browser: - { name: "Dr. Web Light", version: "7.00", type: "app:antivirus" }, - os: { name: Android, version: "4.3" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: HTC, - model: "One (Google Edition)", - }, - } - readable: "Dr. Web Light 7.00 on a HTC One (Google Edition) running Android 4.3" -- headers: "User-Agent: Dr.Web anti-virus Light Version: 7.00.11.7032 Device model: Archos 50 Platinum Firmware version: 4.1.2" - result: - { - browser: - { name: "Dr. Web Light", version: "7.00", type: "app:antivirus" }, - os: { name: Android, version: 4.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Archos, - model: "50 Platinum", - }, - } - readable: "Dr. Web Light 7.00 on an Archos 50 Platinum running Android 4.1.2" -- headers: "User-Agent: Dr.Web anti-virus Light Version: 7.00.9.7030 Device model: HTC One mini Firmware version: 4.2.2" - result: - { - browser: - { name: "Dr. Web Light", version: "7.00", type: "app:antivirus" }, - os: { name: Android, version: 4.2.2 }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "One Mini" }, - } - readable: "Dr. Web Light 7.00 on a HTC One Mini running Android 4.2.2" -- headers: "User-Agent: GetJarSDK/20130503.06 (9) com.gau.go.launcherex.theme.superos7/1 android/4.0.3 (htc_europe; htc_golfu; HTC Desire C)" - result: - { - browser: { name: "Android Browser" }, - os: { name: Android, version: 4.0.3 }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "Desire C" }, - } - readable: "Android Browser on a HTC Desire C running Android 4.0.3" -- headers: "User-Agent: GetJarSDK/20130814.07 (10) com.aceviral.agrr/13 android/2.3.5 (HUAWEI; U8850; HUAWEI-U8850)" - result: - { - browser: { name: "Android Browser" }, - os: { name: Android, version: 2.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Huawei, model: Vision }, - } - readable: "Android Browser on a Huawei Vision running Android 2.3.5" -- headers: "User-Agent: GetJarSDK/20130302.04 (8) com.miniclip.railrush/24 android/4.3 (asus; WW_epad; K00E)" - result: - { - browser: { name: "Android Browser" }, - os: { name: Android, version: "4.3" }, - device: - { type: tablet, manufacturer: Asus, model: "Fonepad 7 (ME372CG)" }, - } - readable: "Android Browser on an Asus Fonepad 7 (ME372CG) running Android 4.3" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13" - result: - { - browser: { name: "Android Browser", type: browser }, - engine: { name: Webkit }, - os: { name: Android, version: 3.2.1 }, - device: - { type: tablet, manufacturer: Asus, model: "Eee Pad Transformer" }, - } - readable: "Android Browser on an Asus Eee Pad Transformer running Android 3.2.1" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13" - result: - { - browser: { name: "Android Browser", type: browser }, - engine: { name: Webkit }, - os: { name: Android, version: "3.2" }, - device: - { type: tablet, manufacturer: Asus, model: "Eee Pad Transformer" }, - } - readable: "Android Browser on an Asus Eee Pad Transformer running Android 3.2" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; ETBW11AA Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13" - result: - { - browser: { name: "Android Browser", type: browser }, - engine: { name: Webkit }, - os: { name: Android, version: 3.2.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Asus, model: Tough }, - } - readable: "Android Browser on an Asus Tough running Android 3.2.1" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.0.3;+ HTC One S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19" - readable: "Chrome 18 on a HTC One S running Android 4.0.3" - result: - { - browser: { name: Chrome, version: "18", type: browser }, - engine: { name: Webkit, version: "535.19" }, - os: { name: Android, version: 4.0.3 }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "One S" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; iw-il; **SonyST26i Build**/11.0.A.7.5) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30" - readable: "Android Browser on a Sony Xperia J running Android 4.0.4" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: 4.0.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Sony, model: "Xperia J" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.3; bg-bg SCH-I545 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36" - readable: "Chrome 31 on a Samsung Galaxy S4 running Android 4.3" - result: - { - browser: { name: Chrome, version: "31", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: "4.3" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S4", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; de-de; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1" - readable: "Android Browser on a Samsung Galaxy S II running Android 2.3" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: "2.3" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy S II", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; GT-I7500) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2" - readable: "Android Browser on a Samsung Galaxy running Android 1.5" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "525.10" }, - os: { name: Android, version: "1.5" }, - device: - { type: mobile, subtype: smart, manufacturer: Samsung, model: Galaxy }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; fr-fr; Android Edition Starnaute Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" - readable: "Android Browser on a SFR STARNAUTE running Android 2.2.2" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.2.2 }, - device: - { type: mobile, subtype: smart, manufacturer: SFR, model: STARNAUTE }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; fr-fr; Android Edition StarText Build/V1.0.0B06) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" - readable: "Android Browser on a SFR STARTEXT running Android 2.2.2" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.2.2 }, - device: - { type: mobile, subtype: smart, manufacturer: SFR, model: STARTEXT }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; tr_TR; GT-S5360 BUILD/GINGERBREAD) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1" - readable: "Android Browser on a Samsung Galaxy Y running Android 2.3.6" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "528.5" }, - os: { name: Android, version: 2.3.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Galaxy Y", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; 2.3.5; en-us; SAMSUNG-SGH-I927 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1" - readable: "Android Browser on a Samsung Captivate Glide running Android 2.3.5" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.5 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Samsung, - model: "Captivate Glide", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; 2.3.4; en-us; X500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1" - readable: "Android Browser on a ZTE Score running Android 2.3.4" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.4 }, - device: { type: mobile, subtype: smart, manufacturer: ZTE, model: Score }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android L; xx; Nexus 5 Build/LPV79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1" - readable: "UC Browser 9.9 on a LG Nexus 5 running Android L" - result: - { - browser: { name: "UC Browser", version: "9.9", type: browser }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: { value: "5.0", alias: L } }, - device: - { type: mobile, subtype: smart, manufacturer: LG, model: "Nexus 5" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.4.99; Build/LPV79) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2094.0 Mobile Safari/537.36" - readable: "Chrome Dev 38.0.2094.0 on Android L" - result: - { - browser: { name: Chrome, version: 38.0.2094.0, type: browser }, - engine: { name: Blink }, - os: { name: Android, version: { value: "5.0", alias: L } }, - device: { type: mobile, subtype: smart }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android M; xx; Nexus 5 Build/MPZ44Q) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.6.2.599 U3/0.8.0 Mobile Safari/534.30" - readable: "UC Browser 10.6 on a LG Nexus 5 running Android M" - result: - { - browser: { name: "UC Browser", version: "10.6", type: browser }, - engine: { name: Webkit, version: "534.30" }, - os: { name: Android, version: { value: "6", alias: M } }, - device: - { type: mobile, subtype: smart, manufacturer: LG, model: "Nexus 5" }, - } -- headers: "User-Agent: Mozilla/5.0 (Android M; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0" - readable: "Firefox Mobile 41.0 on Android M" - result: - { - browser: - { - name: "Firefox Mobile", - family: { name: Firefox, version: "41.0" }, - version: "41.0", - type: browser, - }, - engine: { name: Gecko, version: "41.0" }, - os: { name: Android, version: { value: "6", alias: M } }, - device: { type: mobile, subtype: smart }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.0.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36" - readable: "Chrome 42 on Android M" - result: - { - browser: { name: Chrome, version: "42", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: { value: "6", alias: M } }, - device: { type: tablet }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 5.1.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Safari/537.36" - readable: "Chrome 43 on Android M" - result: - { - browser: { name: Chrome, version: "43", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: { value: "6", alias: M } }, - device: { type: tablet }, - } -- headers: "User-Agent: Mozilla/5.0 (Android N; Mobile; rv:45.0) Gecko/45.0 Firefox/45.0" - readable: "Firefox Mobile 45.0 on Android N" - result: - { - browser: - { - name: "Firefox Mobile", - family: { name: Firefox, version: "45.0" }, - version: "45.0", - type: browser, - }, - engine: { name: Gecko, version: "45.0" }, - os: { name: Android, version: { value: "7", alias: "N" } }, - device: { type: mobile, subtype: smart }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 6.0.99; Build/NPC91K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36" - readable: "Chrome 50 on Android N" - result: - { - browser: { name: Chrome, version: "50", type: browser }, - engine: { name: Blink }, - os: { name: Android, version: { value: "7", alias: "N" } }, - device: { type: mobile, subtype: smart }, - } -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; PadFone Infinity) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24" - readable: "Chrome Dev 11.0.696.34 on an Asus PadFone Infinity running Android" - result: - { - browser: { name: Chrome, version: 11.0.696.34, type: browser }, - engine: { name: Webkit, version: "534.24" }, - os: { name: Android }, - device: { type: tablet, manufacturer: Asus, model: "PadFone Infinity" }, - } -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; HTC/Sensation/3.32.162.52; xx) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24" - readable: "Chrome Dev 11.0.696.34 on a HTC Sensation running Android" - result: - { - browser: { name: Chrome, version: 11.0.696.34, type: browser }, - engine: { name: Webkit, version: "534.24" }, - os: { name: Android }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: Sensation }, - } -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; HTC_DesireHD_Beats_X315e; de-de) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24" - readable: "Chrome Dev 11.0.696.34 on a HTC Desire HD running Android" - result: - { - browser: { name: Chrome, version: 11.0.696.34, type: browser }, - engine: { name: Webkit, version: "534.24" }, - os: { name: Android }, - device: - { type: mobile, subtype: smart, manufacturer: HTC, model: "Desire HD" }, - } -- headers: "User-Agent: Mozilla/5.0 (X11; Linux x86_64; ST26i-o) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24" - readable: "Chrome Dev 11.0.696.34 on a Sony Xperia J running Android" - result: - { - browser: { name: Chrome, version: 11.0.696.34, type: browser }, - engine: { name: Webkit, version: "534.24" }, - os: { name: Android }, - device: - { type: mobile, subtype: smart, manufacturer: Sony, model: "Xperia J" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; fr-fr; Android edition by sfr STARADDICT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" - readable: "Android Browser on a SFR STARADDICT running Android 2.3.5" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: 2.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: SFR, model: STARADDICT }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; de; TSB_CLOUD_COMPANION;TOSHIBA_AC_AND_AZ) AppleWebkit/533.1(KHTML, like Gecko) Version/4.0 Safari/533.1" - readable: "Android Browser on a Toshiba Dynabook AZ running Android 2.2" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "533.1" }, - os: { name: Android, version: "2.2" }, - device: { type: desktop, manufacturer: Toshiba, model: "Dynabook AZ" }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; arm_64; Android 6.0.1; NX549J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 YaBrowser/20.9.3.85.00 SA/3 Mobile Safari/537.36" - readable: "Yandex Browser 20.9 on a ZTE Nubia Z11 Mini S running Android 6.0.1" - result: - { - browser: - { - name: "Yandex Browser", - family: { name: Chrome, version: 85 }, - version: "20.9", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: ZTE, - model: "Nubia Z11 Mini S", - }, - } -- headers: "User-Agent: Mozilla/5.0 (Linux; arm; Android 6.0.1; NX549J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 YaBrowser/20.9.3.85.00 SA/3 Mobile Safari/537.36" - readable: "Yandex Browser 20.9 on a ZTE Nubia Z11 Mini S running Android 6.0.1" - result: - { - browser: - { - name: "Yandex Browser", - family: { name: Chrome, version: 85 }, - version: "20.9", - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: ZTE, - model: "Nubia Z11 Mini S", - }, - } -- 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 }, - 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: 3G Explorer/3.1.0.1085 (Linux;Android 4.3,SM-N9005) AppleWebKit/533.1 (357507050070039,01)' + result: { browser: { name: '3G Explorer', version: 3.1.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note 3' } } + readable: '3G Explorer 3.1.0 on a Samsung Galaxy Note 3 running Android 4.3' +- + headers: 'User-Agent: 3G Explorer/3.1.3.165 (Linux;Android 4.2.2,Lenovo K900) AppleWebKit/533.1 (860486024086613,00)' + result: { browser: { name: '3G Explorer', version: 3.1.3, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: K900 } } + readable: '3G Explorer 3.1.3 on a Lenovo K900 running Android 4.2.2' +- + headers: 'User-Agent: 4G Explorer/3.2.0 (Linux;Android 4.4.2,HTC 801e) AppleWebKit/533.1 (354439050552654,01)' + result: { browser: { name: '4G Explorer', version: 3.2.0, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: One } } + readable: '4G Explorer 3.2.0 on a HTC One running Android 4.4.2' +- + headers: 'User-Agent: 4G Explorer/3.5.3 (Linux;Android 4.2.2,HM NOTE 1TD) AppleWebKit/533.1 (863990024967042,78)' + result: { browser: { name: '4G Explorer', version: 3.5.3, type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi Note' } } + readable: '4G Explorer 3.5.3 on a Xiaomi Redmi Note running Android 4.2.2' +- + headers: 'User-Agent: AcerTD600_TD/1.0 Android/2.2 (Linux; Android 2.2) Release/12.20.2010 Browser/WAP 2.0 AppleWebKit/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Acer, model: 'beTouch TD600' } } + readable: 'Android Browser on an Acer beTouch TD600 running Android 2.2' +- + headers: 'User-Agent: COSHIP F2/1.0 Android/4.3 Release/JLS36C Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Coship, model: F2 } } + readable: 'Android Browser on a Coship F2 running Android 4.3' +- + headers: 'User-Agent: DESAY_TS808_TD/1.0 Android/2.3.5 (Linux; Android 2.3.5) Release/7.25.2012 Mozilla/5.0(Linux;U;Android 2.3.5) 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.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Desay, model: TS808 } } + readable: 'Android Browser on a Desay TS808 running Android 2.3.5' +- + headers: 'User-Agent: Diamond_S3/Diamond_S3 Linux/3.4.5+ Android/4.2.2 Release/Diamond_S3 Browser/AppleWebKit534.30 Profile/ Configuration/ Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Starmobile, model: 'Diamond S3' } } + readable: 'Android Browser on a Starmobile Diamond S3 running Android 4.2.2' +- + headers: 'User-Agent: GiONEE-GN705T_TD/V1 Linux/3.4.5 Android/4.2.1 Release/04.07.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 System/Android 4.2.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Gionee, model: GN705T } } + readable: 'Android Browser on a Gionee GN705T running Android 4.2.1' +- + headers: 'User-Agent: HS-T830_TD/1.0 Android/2.3 Release/09.27.2012 Browser/AppleWebKit533.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.3' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: T830 } } + readable: 'Android Browser on a Hisense T830 running Android 2.3' +- + headers: 'User-Agent: Hisense I639M_LTE/1.0 Android/4.4 Release/15.12.2014 Browser/AppleWebKit537.36 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: I639M } } + readable: 'Android Browser on a Hisense I639M running Android 4.4' +- + headers: 'User-Agent: KONKA V980_TD/1.0 Android/4.0 Release/10.23.2012 Browser/AppleWebKit534.3 Profile/MIDP-2.0 Configuration/CLDC-1.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.3' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Konka, model: V980 } } + readable: 'Android Browser on a Konka V980 running Android 4.0' +- + headers: 'User-Agent: Karbonn A25 Linux/3.0.13 Android/4.0.4 Release/06.09.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Karbonn, model: A25 } } + readable: 'Android Browser on a Karbonn A25 running Android 4.0.4' +- + headers: 'User-Agent: Lenovo-A278t_TD/S100 Linux/2.6.35 Android/2.3.5 Release/09.03.2012 Browser/AppleWebkit533.1 Mobile Safari/533.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Lenovo, model: A278 } } + readable: 'Android Browser on a Lenovo A278 running Android 2.3.5' +- + headers: 'User-Agent: Lephone_TD8208_TD/1.0 Android/2.3.5 MocorDroid/SpreadTrum Release/3.22.2012 Browser/AppleWebKit5333.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '5333.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Lephone, model: TD8208 } } + readable: 'Android Browser on a Lephone TD8208 running Android 2.3.5' +- + headers: 'User-Agent: MQQBrowser/3.0/Mozilla/5.0 (HW-HUAWEI_C8500/C8500V100R001C92B234;U;Android/2.1;240*320;CTC/2.0) AppleWebKit/530.17 Mobile Safari/530.17' + result: { browser: { name: 'QQ Browser', version: '3.0', type: browser }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 } } + readable: 'QQ Browser 3.0 on a Huawei C8500 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (HW-HUAWEI_C8500/C8500V100R001C92B234;U;Android/2.1;240*320;CTC/2.0) AppleWebKit/530.17 Mobile Safari/530.17 parameters/{scr=427_320,cm=1,ql=l,imei=a0000020ccd264,bm=1,eng=adrmini7,mdm=1,mdl=C8500,ps=1} tiantian(securitypay)' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: C8500 } } + readable: 'Android Browser on a Huawei C8500 running Android 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.4; Aspire V5-121 Build/KTU84Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Safari/537.36' + result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.4 }, device: { type: desktop, manufacturer: Acer, model: 'Aspire V5-121' } } + readable: 'Chrome 40 on an Acer Aspire V5-121 running Android 4.4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.99; Build/LPV81C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.69 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '38', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '5.0', alias: L } }, device: { type: mobile, subtype: smart } } + readable: 'Chrome 38 on Android L' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.63 Mobile Safari/537.36' + result: { browser: { name: Chrome, version: '44', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: mobile, subtype: smart } } + readable: 'Chrome 44 on Android M' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 02.00.06(2.1-update1); xx; i-station Buddy Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, model: 'i-station Buddy' } } + readable: 'Android Browser on an i-station Buddy running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.1.1; xx; androVM for VirtualBox (''Tablet'' version with phone caps) Build/JRO03S) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.1.1 }, device: { type: emulator } } + readable: 'Android Browser on an emulator running Android 4.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android Eclair; es-es Build/pandigitalopc1/sourceidDL00000009) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: tablet, manufacturer: Pandigital, model: OPC1 } } + readable: 'Android Browser on a Pandigital OPC1 running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android Eclair; xx; i-mobile i858 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: i-Mobile, model: i858 } } + readable: 'Android Browser on an i-Mobile i858 running Android 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android KeyLimePie; xx; LG-D410 Build/KRS91B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: L90 } } + readable: 'Android Browser on a LG L90 running Android 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android KeyLimePie; xx; LG-F320L Build/KRS92B) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.2 Mobile Safari/534.30' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.4' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: G2 } } + readable: 'Android Browser on a LG G2 running Android 4.4' +- + headers: 'User-Agent: Mozilla/5.0 (MOT-XT800/TITA_M2_16.22.7;U;Android/2.1-update1;480*854;CTC/2.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'MOTO XT800' } } + readable: 'Android Browser on a Motorola MOTO XT800 running Android 2.1' +- + headers: 'User-Agent: NGM Dynamic Racing 2/V2 Linux/3.0.13 Android/4.2 Release/02.15.2012 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.2;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: NGM, model: 'Dynamic Racing 2' } } + readable: 'Android Browser on a NGM Dynamic Racing 2 running Android 4.2' +- + headers: 'User-Agent: OPPO_R811/1.0 Linux/3.0.13 Android/4.0 Release/10.15.2012 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Oppo, model: R811 } } + readable: 'Android Browser on an Oppo R811 running Android 4.0' +- + headers: 'User-Agent: T-smart_G18_TD/1.0 Linux/2.6.35 Android/2.3.5 Release/7.16.2012 Mozilla/5.0 (Linux; U; Android 2.2) AppleWebKit/533.1 (KHTML, like Gecko) FlyFlow/2.4 Version/4.0 Mobile Safari/533.1 baidubrowser/061_6.5.4.2_diordna_084_023/trams-T_01_5.3.2_81G-trams-T/71' + result: { browser: { name: 'Baidu Browser', version: '2.4', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: T-smart, model: G18 } } + readable: 'Baidu Browser 2.4 on a T-smart G18 running Android 2.3.5' +- + headers: 'User-Agent: Xiaomi_2013022_TD/V1 Linux/3.4.5 Android/4.2.1 Release/03.11.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.2.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Xiaomi, model: 'Redmi 1' } } + readable: 'Android Browser on a Xiaomi Redmi 1 running Android 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 (grouper) Build/KVT49L) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Safari/537.36 XiaoMi/MiPad/MiuiBrowser/1.0' + result: { browser: { name: 'MIUI Browser', version: '1.0', type: browser }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, manufacturer: Asus, model: 'Nexus 7' } } + readable: 'MIUI Browser 1.0 on an Asus Nexus 7 running Android 4.4.2' +- + headers: 'User-Agent: MASTONE G3_TD/1.0 Android/2.3 Release/4.20.2012 Browser/AppleWebKit533.1 Profile/MIDP-2.0' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.3' }, device: { type: mobile, subtype: smart, manufacturer: Mastone, model: G3 } } + readable: 'Android Browser on a Mastone G3 running Android 2.3' +- + headers: 'User-Agent: MASTONE_G13_TD/V2 Linux/3.0.13 Android/4.0 Release/04.02.2013 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.0.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Mastone, model: G13 } } + readable: 'Android Browser on a Mastone G13 running Android 4.0' +- + headers: 'User-Agent: Mastone_G9_TD/V2.00 Release/3.19.2012 Mozilla/5.0 (Linux; U; Android 2.3.5) 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.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Mastone, model: G9 } } + readable: 'Android Browser on a Mastone G9 running Android 2.3.5' +- + headers: 'User-Agent: CoolPadCoolpad-8056_TD/1.0 Android/2.3.5(Linux; Android 2.3.5) Release/10.30.2012 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Coolpad, model: '8056' } } + readable: 'Android Browser on a Coolpad 8056 running Android 2.3.5' +- + headers: 'User-Agent: DESAY_TS908_CMCC_TD/1.0 Android/2.3.7 (LinuxOS 2.6.35.7) Release/04.13.2012 Browser/WAP2.0' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Desay, model: TS908 } } + readable: 'Android Browser on a Desay TS908 running Android 2.3.7' +- + headers: 'User-Agent: GiONEE_TD500_CMCC/1.0 Android/2.3.7 (LinuxOS 2.6.35.7) Release/11.28.2011 Browser/WAP2.0 (UCWEB/7.9.3)' + result: { browser: { name: 'UC Browser', version: '7.9', type: browser }, os: { name: Android, version: 2.3.7 }, device: { type: mobile, subtype: smart, manufacturer: Gionee, model: TD500 } } + readable: 'UC Browser 7.9 on a Gionee TD500 running Android 2.3.7' +- + headers: 'User-Agent: HUAWEI Y325-T00_TD/V1 Linux/3.4.5 Android/2.3.6 Release/03.26.2013 Browser/AppleWebKit533.1 Mobile Safari/533.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Ascend Y325' } } + readable: 'Android Browser on a Huawei Ascend Y325 running Android 2.3.6' +- + headers: 'User-Agent: Hisense_E602M_TDLTE/V3 Linux/3.4.67 Android/4.4.2 Release/04.01.2014 Browser/AppleWebKit537.36 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '537.36' }, os: { name: Android, version: 4.4.2 }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: E602M } } + readable: 'Android Browser on a Hisense E602M running Android 4.4.2' +- + headers: 'User-Agent: AMOI N820 Linux/3.0.13 Android/4.0.4 Release/08.24.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Amoi, model: N820 } } + readable: 'Android Browser on an Amoi N820 running Android 4.0.4' +- + headers: 'User-Agent: AT-AS40SE Linux/3.0.13 Android/4.0.4 Release/01.25.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Wolfgang, model: AT-AS40SE } } + readable: 'Android Browser on a Wolfgang AT-AS40SE running Android 4.0.4' +- + headers: 'User-Agent: E1-B Linux/3.0.13 Android/4.0.4 Release/06.05.2013 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, model: E1-B } } + readable: 'Android Browser on an E1-B running Android 4.0.4' +- + headers: 'User-Agent: GT-I9300 Linux/3.0.13 Android/4.0.4 Release/09.25.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S III' } } + readable: 'Android Browser on a Samsung Galaxy S III running Android 4.0.4' +- + headers: 'User-Agent: Mobiistar Touch Kem 452 Linux/3.0.13 Android/4.0.4 Release/09.21.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1 Mobile Safari/534.30 Android 4.0.1;' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Mobiistar, model: 'Touch Kem 452' } } + readable: 'Android Browser on a Mobiistar Touch Kem 452 running Android 4.0.4' +- + headers: 'User-Agent: MI2-MI2/1.0 Linux/2.6.35.7 Android 2.3.5 Release/01.10.2013 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart } } + readable: 'Android Browser on Android 2.3.5' +- + headers: 'User-Agent: MF356ZP/A/V1 Linux/3.4.39 Android/4.4.4 Release/11.13.2014 Browser/AppleWebKit534.30 Mobile Safari/534.30 MBBMS/2.2 System/Android 4.4.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.4.4 }, device: { type: mobile, subtype: smart } } + readable: 'Android Browser on Android 4.4.4' +- + headers: 'User-Agent: sprd-GT-N9300/1.0 Linux/2.6.35.7 Android/4.0.3 Release/11.29.2012 Browser/AppleWebKit533.1 (KHTML, like Gecko) Mozilla/5.0 Mobile' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Feiteng, model: GT-N9300 } } + readable: 'Android Browser on a Feiteng GT-N9300 running Android 4.0.3' +- + headers: 'User-Agent: OneBrowser/3.2/HS-T92_TD/1.0 Android/2.2 Release/12.10.2011 Browser/AppleWebKit533.1 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: OneBrowser, version: '3.2', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: T92 } } + readable: 'OneBrowser 3.2 on a Hisense T92 running Android 2.2' +- + headers: 'User-Agent: MQQBrowser/5.0/HS-T96_TD/1.0 Android/4.0 Release/5.10.2012 Browser/AppleWebKit534.30 Profile/MIDP-2.0 Configuration/CLDC-1.1' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Hisense, model: T96 } } + readable: 'QQ Browser 5.0 on a Hisense T96 running Android 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; H30-T00) AppleWebKit/535.19 (KHTML, like Gecko) Version/4.0 LieBaoFast/2.9.0 Mobile Safari/535.19' + result: { browser: { name: LieBaoFast, version: 2.9.0, type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Honor 3C' } } + readable: 'LieBaoFast 2.9.0 on a Huawei Honor 3C running Android 4.2.2' +- + headers: 'User-Agent: Dr.Web anti-virus Light Version: 7.00.11.7032 Device model: HTC One Firmware version: 4.3' + result: { browser: { name: 'Dr. Web Light', version: '7.00', type: 'app:antivirus' }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One (Google Edition)' } } + readable: 'Dr. Web Light 7.00 on a HTC One (Google Edition) running Android 4.3' +- + headers: 'User-Agent: Dr.Web anti-virus Light Version: 7.00.11.7032 Device model: Archos 50 Platinum Firmware version: 4.1.2' + result: { browser: { name: 'Dr. Web Light', version: '7.00', type: 'app:antivirus' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Archos, model: '50 Platinum' } } + readable: 'Dr. Web Light 7.00 on an Archos 50 Platinum running Android 4.1.2' +- + headers: 'User-Agent: Dr.Web anti-virus Light Version: 7.00.9.7030 Device model: HTC One mini Firmware version: 4.2.2' + result: { browser: { name: 'Dr. Web Light', version: '7.00', type: 'app:antivirus' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One Mini' } } + readable: 'Dr. Web Light 7.00 on a HTC One Mini running Android 4.2.2' +- + headers: 'User-Agent: GetJarSDK/20130503.06 (9) com.gau.go.launcherex.theme.superos7/1 android/4.0.3 (htc_europe; htc_golfu; HTC Desire C)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire C' } } + readable: 'Android Browser on a HTC Desire C running Android 4.0.3' +- + headers: 'User-Agent: GetJarSDK/20130814.07 (10) com.aceviral.agrr/13 android/2.3.5 (HUAWEI; U8850; HUAWEI-U8850)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: Vision } } + readable: 'Android Browser on a Huawei Vision running Android 2.3.5' +- + headers: 'User-Agent: GetJarSDK/20130302.04 (8) com.miniclip.railrush/24 android/4.3 (asus; WW_epad; K00E)' + result: { browser: { name: 'Android Browser' }, os: { name: Android, version: '4.3' }, device: { type: tablet, manufacturer: Asus, model: 'Fonepad 7 (ME372CG)' } } + readable: 'Android Browser on an Asus Fonepad 7 (ME372CG) running Android 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: 3.2.1 }, device: { type: tablet, manufacturer: Asus, model: 'Eee Pad Transformer' } } + readable: 'Android Browser on an Asus Eee Pad Transformer running Android 3.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; Transformer TF101 Build/HTJ85B) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: '3.2' }, device: { type: tablet, manufacturer: Asus, model: 'Eee Pad Transformer' } } + readable: 'Android Browser on an Asus Eee Pad Transformer running Android 3.2' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Linux Ventana; xx; ETBW11AA Build/HTK75) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/8.0 Safari/534.13' + result: { browser: { name: 'Android Browser', type: browser }, engine: { name: Webkit }, os: { name: Android, version: 3.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Asus, model: Tough } } + readable: 'Android Browser on an Asus Tough running Android 3.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3;+ HTC One S Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' + readable: 'Chrome 18 on a HTC One S running Android 4.0.3' + result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'One S' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 4.0.4; iw-il; **SonyST26i Build**/11.0.A.7.5) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30' + readable: 'Android Browser on a Sony Xperia J running Android 4.0.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia J' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; bg-bg SCH-I545 Build/JSS15J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' + readable: 'Chrome 31 on a Samsung Galaxy S4 running Android 4.3' + result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S4' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; de-de; GT-I9100 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a Samsung Galaxy S II running Android 2.3' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.3' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 1.5; GT-I7500) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2' + readable: 'Android Browser on a Samsung Galaxy running Android 1.5' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '525.10' }, os: { name: Android, version: '1.5' }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: Galaxy } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; fr-fr; Android Edition Starnaute Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'Android Browser on a SFR STARNAUTE running Android 2.2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: SFR, model: STARNAUTE } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2.2; fr-fr; Android Edition StarText Build/V1.0.0B06) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'Android Browser on a SFR STARTEXT running Android 2.2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.2.2 }, device: { type: mobile, subtype: smart, manufacturer: SFR, model: STARTEXT } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.6; tr_TR; GT-S5360 BUILD/GINGERBREAD) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1' + readable: 'Android Browser on a Samsung Galaxy Y running Android 2.3.6' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '528.5' }, os: { name: Android, version: 2.3.6 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Y' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; 2.3.5; en-us; SAMSUNG-SGH-I927 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a Samsung Captivate Glide running Android 2.3.5' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Captivate Glide' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; 2.3.4; en-us; X500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a ZTE Score running Android 2.3.4' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.4 }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: Score } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android L; xx; Nexus 5 Build/LPV79) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 UCBrowser/9.9.2.467 U3/0.8.0 Mobile Safari/533.1' + readable: 'UC Browser 9.9 on a LG Nexus 5 running Android L' + result: { browser: { name: 'UC Browser', version: '9.9', type: browser }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: { value: '5.0', alias: L } }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.4.99; Build/LPV79) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2094.0 Mobile Safari/537.36' + readable: 'Chrome Dev 38.0.2094.0 on Android L' + result: { browser: { name: Chrome, version: 38.0.2094.0, type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '5.0', alias: L } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android M; xx; Nexus 5 Build/MPZ44Q) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 UCBrowser/10.6.2.599 U3/0.8.0 Mobile Safari/534.30' + readable: 'UC Browser 10.6 on a LG Nexus 5 running Android M' + result: { browser: { name: 'UC Browser', version: '10.6', type: browser }, engine: { name: Webkit, version: '534.30' }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 5' } } +- + headers: 'User-Agent: Mozilla/5.0 (Android M; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0' + readable: 'Firefox Mobile 41.0 on Android M' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '41.0' }, version: '41.0', type: browser }, engine: { name: Gecko, version: '41.0' }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.0.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.111 Safari/537.36' + readable: 'Chrome 42 on Android M' + result: { browser: { name: Chrome, version: '42', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: tablet } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 5.1.99; Build/MPZ44Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Safari/537.36' + readable: 'Chrome 43 on Android M' + result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '6', alias: M } }, device: { type: tablet } } +- + headers: 'User-Agent: Mozilla/5.0 (Android N; Mobile; rv:45.0) Gecko/45.0 Firefox/45.0' + readable: 'Firefox Mobile 45.0 on Android N' + result: { browser: { name: 'Firefox Mobile', family: { name: Firefox, version: '45.0' }, version: '45.0', type: browser }, engine: { name: Gecko, version: '45.0' }, os: { name: Android, version: { value: '7', alias: 'N' } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 6.0.99; Build/NPC91K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36' + readable: 'Chrome 50 on Android N' + result: { browser: { name: Chrome, version: '50', type: browser }, engine: { name: Blink }, os: { name: Android, version: { value: '7', alias: 'N' } }, device: { type: mobile, subtype: smart } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; PadFone Infinity) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on an Asus PadFone Infinity running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: tablet, manufacturer: Asus, model: 'PadFone Infinity' } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; HTC/Sensation/3.32.162.52; xx) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on a HTC Sensation running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: Sensation } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; HTC_DesireHD_Beats_X315e; de-de) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on a HTC Desire HD running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: HTC, model: 'Desire HD' } } +- + headers: 'User-Agent: Mozilla/5.0 (X11; Linux x86_64; ST26i-o) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24' + readable: 'Chrome Dev 11.0.696.34 on a Sony Xperia J running Android' + result: { browser: { name: Chrome, version: 11.0.696.34, type: browser }, engine: { name: Webkit, version: '534.24' }, os: { name: Android }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia J' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.5; fr-fr; Android edition by sfr STARADDICT Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1' + readable: 'Android Browser on a SFR STARADDICT running Android 2.3.5' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: 2.3.5 }, device: { type: mobile, subtype: smart, manufacturer: SFR, model: STARADDICT } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.2; de; TSB_CLOUD_COMPANION;TOSHIBA_AC_AND_AZ) AppleWebkit/533.1(KHTML, like Gecko) Version/4.0 Safari/533.1' + readable: 'Android Browser on a Toshiba Dynabook AZ running Android 2.2' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '533.1' }, os: { name: Android, version: '2.2' }, device: { type: desktop, manufacturer: Toshiba, model: 'Dynabook AZ' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; arm_64; Android 6.0.1; NX549J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 YaBrowser/20.9.3.85.00 SA/3 Mobile Safari/537.36' + readable: 'Yandex Browser 20.9 on a ZTE Nubia Z11 Mini S running Android 6.0.1' + result: { browser: { name: 'Yandex Browser', family: { name: Chrome, version: 85 }, version: '20.9', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'Nubia Z11 Mini S' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; arm; Android 6.0.1; NX549J) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.127 YaBrowser/20.9.3.85.00 SA/3 Mobile Safari/537.36' + readable: 'Yandex Browser 20.9 on a ZTE Nubia Z11 Mini S running Android 6.0.1' + result: { browser: { name: 'Yandex Browser', family: { name: Chrome, version: 85 }, version: '20.9', type: browser }, engine: { name: Blink }, os: { name: Android, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: ZTE, model: 'Nubia Z11 Mini S' } } +- + 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 }, 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 11; moto g(60)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.79 Mobile Safari/537.36' + readable: 'Chrome 100 on a Motorola Moto G60 running Android 11' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: Android, version: '11' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G60' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 11; moto g(60)s) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.79 Mobile Safari/537.36' + readable: 'Chrome 100 on a Motorola Moto G60s running Android 11' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: Android, version: '11' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G60s' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 11; Pixel 4a (5G)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.79 Mobile Safari/537.36' + readable: 'Chrome 100 on a Google Pixel 4a 5G running Android 11' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: Android, version: '11' }, device: { type: mobile, subtype: smart, manufacturer: Google, model: 'Pixel 4a 5G' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; moto e(6i) Build/QOHS30.280-7-9) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.88 Mobile Safari/537.36' + readable: 'Chrome 99 on a Motorola Moto E6i running Android 10' + result: { browser: { name: Chrome, version: '99', type: browser }, engine: { name: Blink }, os: { name: Android, version: '10' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto E6i' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 11; moto g(9) play) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.79 Mobile Safari/537.36' + readable: 'Chrome 100 on a Motorola Moto G9 Play running Android 11' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: Android, version: '11' }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Moto G9 Play' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; ELS-NX9; HMSCore 6.4.0.312) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.1.302 Mobile Safari/537.36' + readable: 'Huawei Browser 12.0 on a Huawei P40 Pro running Android 10' + result: { browser: { name: 'Huawei Browser', family: { name: Chrome, version: 92 }, version: '12.0', type: browser }, engine: { name: Blink }, os: { name: Android, version: '10' }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'P40 Pro' } } \ No newline at end of file diff --git a/test/data/mobile/os-harmony.yaml b/test/data/mobile/os-harmony.yaml new file mode 100644 index 0000000..8c26e2b --- /dev/null +++ b/test/data/mobile/os-harmony.yaml @@ -0,0 +1,8 @@ +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; HarmonyOS; DVC-AN20; HMSCore 6.4.0.312) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.1.302 Mobile Safari/537.36' + readable: 'Huawei Browser 12.0 on a Huawei Enjoy 20 Pro running Harmony OS' + result: { browser: { name: 'Huawei Browser', family: { name: Chrome, version: 92 }, version: '12.0', type: browser }, engine: { name: Blink }, os: { name: 'Harmony OS', family: { name: Android, version: 10 } }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Enjoy 20 Pro' } } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10; HarmonyOS; HLK-AL00; HMSCore 6.3.0.327; GMSCore 21.33.14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.105 HuaweiBrowser/12.0.0.303 Mobile Safari/537.36' + readable: 'Huawei Browser 12.0 on a Huawei Honor 9X running Harmony OS' + result: { browser: { name: 'Huawei Browser', family: { name: Chrome, version: 92 }, version: '12.0', type: browser }, engine: { name: Blink }, os: { name: 'Harmony OS', family: { name: Android, version: 10 } }, device: { type: mobile, subtype: smart, manufacturer: Huawei, model: 'Honor 9X' } } \ No newline at end of file diff --git a/test/data/mobile/os-ios.yaml b/test/data/mobile/os-ios.yaml index 50aac92..fd14027 100644 --- a/test/data/mobile/os-ios.yaml +++ b/test/data/mobile/os-ios.yaml @@ -1,1314 +1,472 @@ -- headers: "User-Agent: CFNetwork/0.0.0 Darwin/0.0.0" - result: - { - os: { name: iOS }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: iOS -- headers: "User-Agent: MQQBrowser/31 Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "3.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "QQ Browser 3.1 on an Apple iPhone running iOS 5.1.1" -- headers: "User-Agent: MQQBrowser/35 Mozilla/5.0 (iPhone 3GS; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "3.5", type: browser }, - engine: { name: Webkit, version: "532.9" }, - os: { name: iOS, version: "4.1" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 3GS", - }, - } - readable: "QQ Browser 3.5 on an Apple iPhone 3GS running iOS 4.1" -- headers: "User-Agent: MQQBrowser/40 Mozilla/5.0 (iPhone 4; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "4.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4", - }, - } - readable: "QQ Browser 4.0 on an Apple iPhone 4 running iOS 6.1.2" -- headers: "User-Agent: MQQBrowser/40 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B142 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "4.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: "6.1" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4S", - }, - } - readable: "QQ Browser 4.0 on an Apple iPhone 4S running iOS 6.1" -- headers: "User-Agent: MQQBrowser/43 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "4.3", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4S", - }, - } - readable: "QQ Browser 4.3 on an Apple iPhone 4S running iOS 7.0.4" -- headers: "User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 4Verizon; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "4.4", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4", - }, - } - readable: "QQ Browser 4.4 on an Apple iPhone 4 running iOS 6.0.1" -- headers: "User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 5; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "4.4", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 4.4 on an Apple iPhone 5 running iOS 6.1.2" -- headers: "User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 5ATT; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "4.4", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: "7.0" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 4.4 on an Apple iPhone 5 running iOS 7.0" -- headers: "User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5CGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "451", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.4" -- headers: "User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5SGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "451", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.4" -- headers: "User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5SGSM; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 Safari/7534.48.3" - result: - { - browser: { name: "QQ Browser", version: "451", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.2" -- headers: "User-Agent: Mercury/894 CFNetwork/711.1.16 Darwin/14.0.0" - result: - { - browser: { name: "Mercury Browser", version: 8.9.4, type: browser }, - os: { name: iOS, version: 8.1.1 }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Mercury Browser 8.9.4 on iOS 8.1.1" -- headers: "User-Agent: MobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.0" - result: - { - browser: { name: Safari, type: browser }, - os: { name: iOS, version: "8.1" }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Safari on iOS 8.1" -- headers: "User-Agent: MobileSafari/600.1.4 CFNetwork/711.1.16 Darwin/14.0.0" - result: - { - browser: { name: Safari, type: browser }, - os: { name: iOS, version: 8.1.1 }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Safari on iOS 8.1.1" -- headers: "User-Agent: MobileSafari/7534.48.3 CFNetwork/548.0.4 Darwin/11.0.0" - result: - { - browser: { name: Safari, type: browser }, - os: { name: iOS, version: 5.0.1 }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Safari on iOS 5.0.1" -- headers: "User-Agent: MobileSafari/9537.53 CFNetwork/672.1.13 Darwin/14.0.0" - result: - { - browser: { name: Safari, type: browser }, - os: { name: iOS, version: "7.1" }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Safari on iOS 7.1" -- headers: "User-Agent: MobileSafari/9537.53 CFNetwork/672.1.15 Darwin/14.0.0" - result: - { - browser: { name: Safari, type: browser }, - os: { name: iOS, version: 7.1.2 }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Safari on iOS 7.1.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone 3GS; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B146 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 3GS", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 3GS running iOS 6.1.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone 4; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.2 Mobile/9B208 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.1.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 4 running iOS 5.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B142 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: "6.1" }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4S", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 4S running iOS 6.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone 4Verizon; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B329 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.3 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 4 running iOS 6.1.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone 5; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.5 Mobile/10B350 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 5 running iOS 6.1.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone 5ATT; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.1.1 Mobile/11B651 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.1", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.6 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 5.1 on an Apple iPhone 5 running iOS 7.0.6" -- headers: "User-Agent: Mozilla/5.0 (iPhone 5CGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.1 Mobile/11B554a Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone 5CGSM; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.2.1 Mobile/11D201 Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.2", type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: 7.1.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 5.2 on an Apple iPhone 5 running iOS 7.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone 5SGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0 Mobile/11B554a Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone 5SGSM; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/11B554a Safari/8536.25" - result: - { - browser: { name: "QQ Browser", version: "5.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 5", - }, - } - readable: "QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone Simulator; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A5274d Safari/7534.48.3" - result: - { - browser: { name: Safari, version: "5.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: "5.0" }, - device: { type: emulator, manufacturer: Apple }, - } - readable: "Safari on an emulator running iOS 5.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_0 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A345 Safari/525.20" - result: - { - browser: { name: Safari, version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 525.18.1 }, - os: { name: iOS, alias: "iPhone OS", version: "2.0" }, - device: { type: emulator, manufacturer: Apple }, - } - readable: "Safari on an emulator running iPhone OS 2.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F135 Safari/525.20" - result: - { - browser: { name: Safari, version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 525.18.1 }, - os: { name: iOS, alias: "iPhone OS", version: "2.1" }, - device: { type: emulator, manufacturer: Apple }, - } - readable: "Safari on an emulator running iPhone OS 2.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_0 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16" - result: - { - browser: { name: Safari, version: "4.0", type: browser }, - engine: { name: Webkit, version: "528.18" }, - os: { name: iOS, alias: "iPhone OS", version: "3.0" }, - device: { type: emulator, manufacturer: Apple }, - } - readable: "Safari on an emulator running iPhone OS 3.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7" - result: - { - browser: { name: Safari, version: 4.0.5, type: browser }, - engine: { name: Webkit, version: "532.9" }, - os: { name: iOS, version: "4.1" }, - device: { type: emulator, manufacturer: Apple }, - } - readable: "Safari on an emulator running iOS 4.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8F192" - result: - { - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: "4.3" }, - device: { type: emulator, manufacturer: Apple }, - } - readable: "an emulator running iOS 4.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3" - result: - { - browser: { name: Safari, version: "5.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: "5.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 5.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3" - result: - { - browser: { name: Safari, version: "5.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 5.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3" - result: - { - browser: { name: Safari, version: "5.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: "5.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 5.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/25.0.1364.124 Mobile/9B206 Safari/7534.48.3" - result: - { - browser: { name: Chrome, version: "25", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Chrome 25 on an Apple iPhone running iOS 5.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mercury/7.4 Mobile/9B206 Safari/7534.48.3" - result: - { - browser: { name: "Mercury Browser", version: "7.4", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Mercury Browser 7.4 on an Apple iPhone running iOS 5.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3" - result: - { - browser: { name: Safari, version: "5.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 5.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/30.0.1599.16 Mobile/10A403 Safari/8536.25" - result: - { - browser: { name: Chrome, version: "30", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: "6.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Chrome 30 on an Apple iPhone running iOS 6.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A405 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: "6.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/33.0.1750.14 Mobile/10A525 Safari/8536.25" - result: - { - browser: { name: Chrome, version: "33", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Chrome 33 on an Apple iPhone running iOS 6.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A525 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) GSA/3.2.1.25875 Mobile/10A551 Safari/8536.25" - result: - { - browser: { name: "Google Search", version: 3.2.1, type: "app:search" }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.0.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Google Search 3.2.1 on an Apple iPhone running iOS 6.0.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B143 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: "6.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B146 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Safari/6531.22.7 iLunascape/3212" - result: - { - browser: { name: iLunascape, version: "3212", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "iLunascape 3212 on an Apple iPhone running iOS 6.1.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Safari/7534.48.3 Sleipnir/2.4.5m" - result: - { - browser: { name: Sleipnir, version: 2.4.5, type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Sleipnir 2.4.5 on an Apple iPhone running iOS 6.1.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 SogouMobileBrowser/2.1.1" - result: - { - browser: { name: "Sogou Mobile", version: "2.1", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Sogou Mobile 2.1 on an Apple iPhone running iOS 6.1.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_5 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1.5" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25" - result: - { - browser: { name: Safari, version: "6.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.6 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 6.1.6" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko, M5WebKit/1.0.2, M5HybridSDK/1.0.0) Version/5.1.1 Mobile/6.1.6 Mammoth/5.1.1" - result: - { - browser: { name: Mammoth, version: 5.1.1, type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: 6.1.6 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Mammoth 5.1.1 on an Apple iPhone running iOS 6.1.6" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/7.0 Mobile/10A405 Safari/8536.25" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: "536.26" }, - os: { name: iOS, version: "7.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mercury/8.4.1 Mobile/11A465 Safari/9537.53" - result: - { - browser: { name: "Mercury Browser", version: 8.4.1, type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: "7.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Mercury Browser 8.4.1 on an Apple iPhone running iOS 7.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B475 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 Safari/7534.48.3 Sleipnir/3.1.3m" - result: - { - browser: { name: Sleipnir, version: 3.1.3, type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Sleipnir 3.1.3 on an Apple iPhone running iOS 7.0.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) OPiOS/8.0.0.78865 Mobile/11A501 Safari/9537.53" - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Opera Mini 8.0 on an Apple iPhone running iOS 7.0.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.51" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B511 Safari/6531.22.7 iLunascape/3212" - result: - { - browser: { name: iLunascape, version: "3212", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "iLunascape 3212 on an Apple iPhone running iOS 7.0.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B511 SogouMobileBrowser/2.3.0" - result: - { - browser: { name: "Sogou Mobile", version: "2.3", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Sogou Mobile 2.3 on an Apple iPhone running iOS 7.0.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/5.1 YaBrowser/13.11.1500.0 Mobile/11B511 Safari/9537.53" - result: - { - browser: { name: "Yandex Browser", version: "13.11", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Yandex Browser 13.11 on an Apple iPhone running iOS 7.0.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B507 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.0.0.74604 Mobile/11B554a Safari/7534.48.3" - result: - { - browser: { name: "Coast by Opera", version: 3.0.0, type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Coast by Opera 3.0.0 on an Apple iPhone running iOS 7.0.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.1.1.80767 Mobile/11B554a Safari/7534.48.3" - result: - { - browser: { name: "Coast by Opera", version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Coast by Opera 3.1.1 on an Apple iPhone running iOS 7.0.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_5 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B601 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0.5" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.6 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.0.6" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11D124 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: "7.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) YaBrowser/14.2.1700.0 Mobile/11D167 Safari/9537.53" - result: - { - browser: { name: "Yandex Browser", version: "14.2", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: "7.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Yandex Browser 14.2 on an Apple iPhone running iOS 7.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.1 Mobile/11D169 Safari/9537.53 baidubrowser/2.0.1.0 (Baidu; P2 7.1)" - result: - { - browser: { name: "Baidu Browser", version: 2.0.1.0, type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: "7.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Baidu Browser 2.0.1.0 on an Apple iPhone running iOS 7.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 SogouMobileBrowser/3.0.0" - result: - { - browser: { name: "Sogou Mobile", version: "3.0", type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: 7.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Sogou Mobile 3.0 on an Apple iPhone running iOS 7.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) OPiOS/8.0.2.80660 Mobile/11D201 Safari/9537.53" - result: - { - browser: { name: "Opera Mini", version: "8.0", type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: 7.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Opera Mini 8.0 on an Apple iPhone running iOS 7.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: 7.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.1.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53" - result: - { - browser: { name: Safari, version: "7.0", type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: 7.1.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 7.1.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A347 Safari/600.1.4" - result: - { - browser: { name: Safari, version: "8.0", type: browser }, - engine: { name: Webkit, version: 600.1.4 }, - os: { name: iOS, version: "8.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 8.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.200" - result: - { - browser: { name: Safari, version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 525.18.1 }, - os: { name: iOS, alias: "iPhone OS", version: "2.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 2.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20" - result: - { - browser: { name: Safari, version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 525.18.1 }, - os: { name: iOS, alias: "iPhone OS", version: 2.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 2.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20" - result: - { - browser: { name: Safari, version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 525.18.1 }, - os: { name: iOS, alias: "iPhone OS", version: "2.2" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 2.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20" - result: - { - browser: { name: Safari, version: 3.1.1, type: browser }, - engine: { name: Webkit, version: 525.18.1 }, - os: { name: iOS, alias: "iPhone OS", version: 2.2.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 2.2.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16" - result: - { - browser: { name: Safari, version: "4.0", type: browser }, - engine: { name: Webkit, version: "528.18" }, - os: { name: iOS, alias: "iPhone OS", version: "3.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 3.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0_1 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A400 Safari/528.16" - result: - { - browser: { name: Safari, version: "4.0", type: browser }, - engine: { name: Webkit, version: "528.18" }, - os: { name: iOS, alias: "iPhone OS", version: 3.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 3.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C97d Safari/528.16" - result: - { - browser: { name: Safari, version: "4.0", type: browser }, - engine: { name: Webkit, version: "528.18" }, - os: { name: iOS, alias: "iPhone OS", version: "3.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 3.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16" - result: - { - browser: { name: Safari, version: "4.0", type: browser }, - engine: { name: Webkit, version: "528.18" }, - os: { name: iOS, alias: "iPhone OS", version: 3.1.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 3.1.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16" - result: - { - browser: { name: Safari, version: "4.0", type: browser }, - engine: { name: Webkit, version: "528.18" }, - os: { name: iOS, alias: "iPhone OS", version: 3.1.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 3.1.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7" - result: - { - browser: { name: Safari, version: 4.0.5, type: browser }, - engine: { name: Webkit, version: "532.9" }, - os: { name: iOS, version: "4.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.0" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7" - result: - { - browser: { name: Safari, version: 4.0.5, type: browser }, - engine: { name: Webkit, version: "532.9" }, - os: { name: iOS, version: 4.0.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.0.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_2 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A400 Safari/6531.22.7" - result: - { - browser: { name: Safari, version: 4.0.5, type: browser }, - engine: { name: Webkit, version: "532.9" }, - os: { name: iOS, version: 4.0.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.0.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7" - result: - { - browser: { name: Safari, version: 4.0.5, type: browser }, - engine: { name: Webkit, version: "532.9" }, - os: { name: iOS, version: "4.1" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C134 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: "4.2" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.2.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_10 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E600 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.2.10 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2.10" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_5 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E128 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.2.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2.5" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_6 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E200 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.2.6 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2.6" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_8 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E401 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.2.8 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2.8" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_9 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E501 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.2.9 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.2.9" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: "4.3" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.3.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.3.1" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) FlyFlow/2.5 Version/5.0.2 Mobile/8H7 Safari/6533.18.5 baidubrowser/042_3.9.5.2_diordna_008_084/ESNESIH_51_3.0.4_69T-SH/1000256c/847AAB49ED14109F7BACD70DAED48491%7C696799010655468/1" - result: - { - browser: { name: "Baidu Browser", version: "2.5", type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.3.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Baidu Browser 2.5 on an Apple iPhone running iOS 4.3.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.3.2 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.3.2" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.3.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.3.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_4 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8K2 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.3.4 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.3.4" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 6_1_3 like Mac OS X; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.10977IP Mobile" - result: - { - browser: - { - name: Puffin, - family: { name: Chrome, version: 11 }, - version: "3", - type: browser, - }, - engine: { name: Webkit, version: "534.35" }, - os: { name: iOS, version: 6.1.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Puffin 3 on an Apple iPhone running iOS 6.1.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 7_0_6 like Mac OS X; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IP Mobile" - result: - { - browser: - { - name: Puffin, - family: { name: Chrome, version: 11 }, - version: "3", - type: browser, - }, - engine: { name: Webkit, version: "534.35" }, - os: { name: iOS, version: 7.0.6 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Puffin 3 on an Apple iPhone running iOS 7.0.6" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; xx) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3" - result: - { - browser: { name: Safari, version: "3.0", type: browser }, - engine: { name: Webkit, version: "420" }, - os: { name: iOS, alias: "iPhone OS", version: "1.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 1.0" -- headers: "User-Agent: Mozilla/5.0 (iphone; U; CPU iPhone OS 4_3_5 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5" - result: - { - browser: { name: Safari, version: 5.0.2, type: browser }, - engine: { name: Webkit, version: 533.17.9 }, - os: { name: iOS, version: 4.3.5 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iOS 4.3.5" -- headers: - { - User-Agent: "Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.7961", - X-Puffin-UA: "iPhone OS/iPhone 3GS/320x480", - } - result: - { - browser: - { - name: Puffin, - family: { name: Chrome, version: 11 }, - version: "2.0", - type: browser, - }, - engine: { name: Webkit, version: "534.35" }, - os: { name: iOS }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 3GS", - }, - } - readable: "Puffin 2.0 on an Apple iPhone 3GS running iOS" -- headers: - { - User-Agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X; xx) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 UCBrowser/9.1.0.287 Mobile", - X-UCBrowser-UA: "pf(42);la(zh-CN);dv(iPh3,1);pr(UCBrowser);ov(5_0_1);pi(640x960);ss(320x416);er(U);bt(UM);up();re(AppleWebKit/534.46 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(1);", - } - result: - { - browser: { name: "UC Browser", version: "9.1", type: browser }, - engine: { name: Webkit, version: "534.46" }, - os: { name: iOS, version: 5.0.1 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 4", - }, - } - readable: "UC Browser 9.1 on an Apple iPhone 4 running iOS 5.0.1" -- headers: - { - User-Agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X; xx) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 UCBrowser/9.3.2.356 Mobile", - X-UCBrowser-UA: "pf(44);la(zh-CN);dv(iPd5,1);pr(UCBrowser);ov(7_0_2);pi(640x1136);ss(320x416);er(U);bt(UM);up();re(AppleWebKit/537.51.1 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(2);", - } - result: - { - browser: { name: "UC Browser", version: "9.3", type: browser }, - engine: { name: Webkit, version: 537.51.1 }, - os: { name: iOS, version: 7.0.2 }, - device: - { type: media, manufacturer: Apple, model: "iPod touch (5th gen)" }, - } - readable: "UC Browser 9.3 on an Apple iPod touch (5th gen) running iOS 7.0.2" -- headers: - { - User-Agent: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 MobileIron/1.3.0 Version/7.1.1 Safari/537.51.2", - X-MobileIron-SecureBrowser-Managed-By: MobileIron, - } - result: - { - browser: { name: Iron, version: "1.3", type: browser }, - engine: { name: Webkit, version: 537.51.2 }, - os: { name: iOS, version: 7.1.1 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Iron 1.3 on an Apple iPhone running iOS 7.1.1" -- headers: - { - User-Agent: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)", - X-Original-User-Agent: "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3", - X-Device-User-Agent: "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3", - } - result: - { - browser: { name: "Google Wireless Transcoder" }, - os: { name: iOS, alias: "iPhone OS", version: "1.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Google Wireless Transcoder on an Apple iPhone running iPhone OS 1.0" -- headers: - { - User-Agent: "Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/34.818; U; xx) Presto/2.8.119 Version/11.10", - X-OperaMini-Phone: "Apple # iPhone", - X-OperaMini-Features: "advanced, file_system, folding", - X-OperaMini-Phone-UA: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", - Device-Stock-UA: "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5", - } - result: - { - browser: { name: "Opera Mini", version: "4.2", type: browser }, - engine: { name: Presto, version: 2.8.119 }, - os: { name: iOS, version: 4.3.3 }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Opera Mini 4.2 on an Apple iPhone running iOS 4.3.3" -- headers: "User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3" - result: - { - browser: { name: Safari, version: "3.0", type: browser }, - engine: { name: Webkit, version: "420" }, - os: { name: iOS, alias: "iPhone OS", version: "1.0" }, - device: - { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone }, - } - readable: "Safari on an Apple iPhone running iPhone OS 1.0" -- headers: "User-Agent: AtomicLite/7.0.1 CFNetwork/672.1.13 Darwin/14.0.0" - result: - { - browser: { name: Atomic, version: 7.0.1, type: browser }, - os: { name: iOS, version: "7.1" }, - device: { type: mobile, subtype: smart, manufacturer: Apple }, - } - readable: "Atomic 7.0.1 on iOS 7.1" -- headers: "User-Agent: (iPhone; iOS 13.1.2; Scale/2.00; iPhone9,3)" - readable: "an Apple iPhone 7 running iOS 13.1.2" - result: - { - os: { name: iOS, version: 13.1.2 }, - device: - { - type: mobile, - subtype: smart, - manufacturer: Apple, - model: "iPhone 7", - }, - } +- + headers: 'User-Agent: CFNetwork/0.0.0 Darwin/0.0.0' + result: { os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: iOS +- + headers: 'User-Agent: MQQBrowser/31 Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '3.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'QQ Browser 3.1 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: MQQBrowser/35 Mozilla/5.0 (iPhone 3GS; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Mobile/8B117 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '3.5', type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 3GS' } } + readable: 'QQ Browser 3.5 on an Apple iPhone 3GS running iOS 4.1' +- + headers: 'User-Agent: MQQBrowser/40 Mozilla/5.0 (iPhone 4; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 4.0 on an Apple iPhone 4 running iOS 6.1.2' +- + headers: 'User-Agent: MQQBrowser/40 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B142 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'QQ Browser 4.0 on an Apple iPhone 4S running iOS 6.1' +- + headers: 'User-Agent: MQQBrowser/43 Mozilla/5.0 (iPhone 4S; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.3', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'QQ Browser 4.3 on an Apple iPhone 4S running iOS 7.0.4' +- + headers: 'User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 4Verizon; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A523 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.4', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 4.4 on an Apple iPhone 4 running iOS 6.0.1' +- + headers: 'User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 5; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.4', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 4.4 on an Apple iPhone 5 running iOS 6.1.2' +- + headers: 'User-Agent: MQQBrowser/44 Mozilla/5.0 (iPhone 5ATT; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A465 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '4.4', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 4.4 on an Apple iPhone 5 running iOS 7.0' +- + headers: 'User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5CGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '451', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5SGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '451', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: MQQBrowser/451 Mozilla/5.0 (iPhone 5SGSM; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 Safari/7534.48.3' + result: { browser: { name: 'QQ Browser', version: '451', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 451 on an Apple iPhone 5 running iOS 7.0.2' +- + headers: 'User-Agent: Mercury/894 CFNetwork/711.1.16 Darwin/14.0.0' + result: { browser: { name: 'Mercury Browser', version: 8.9.4, type: browser }, os: { name: iOS, version: 8.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Mercury Browser 8.9.4 on iOS 8.1.1' +- + headers: 'User-Agent: MobileSafari/600.1.4 CFNetwork/711.1.12 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: '8.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 8.1' +- + headers: 'User-Agent: MobileSafari/600.1.4 CFNetwork/711.1.16 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: 8.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 8.1.1' +- + headers: 'User-Agent: MobileSafari/7534.48.3 CFNetwork/548.0.4 Darwin/11.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 5.0.1' +- + headers: 'User-Agent: MobileSafari/9537.53 CFNetwork/672.1.13 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 7.1' +- + headers: 'User-Agent: MobileSafari/9537.53 CFNetwork/672.1.15 Darwin/14.0.0' + result: { browser: { name: Safari, type: browser }, os: { name: iOS, version: 7.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Safari on iOS 7.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 3GS; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B146 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 3GS' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 3GS running iOS 6.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 4; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.2 Mobile/9B208 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 4 running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 4S; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B142 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4S' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 4S running iOS 6.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 4Verizon; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/10B329 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 4 running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.5 Mobile/10B350 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5ATT; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.1.1 Mobile/11B651 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.1', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.1 on an Apple iPhone 5 running iOS 7.0.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5CGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.1 Mobile/11B554a Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5CGSM; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.2.1 Mobile/11D201 Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.2', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.2 on an Apple iPhone 5 running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5SGLOBAL; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0 Mobile/11B554a Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone 5SGSM; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/6.0 MQQBrowser/5.0.4 Mobile/11B554a Safari/8536.25' + result: { browser: { name: 'QQ Browser', version: '5.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 5' } } + readable: 'QQ Browser 5.0 on an Apple iPhone 5 running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A5274d Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.0' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iOS 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_0 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A345 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.0' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iPhone OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 2_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F135 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.1' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iPhone OS 2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 3_0 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: '3.0' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iPhone OS 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.1' }, device: { type: emulator, manufacturer: Apple } } + readable: 'Safari on an emulator running iOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone Simulator; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile/8F192' + result: { engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.3' }, device: { type: emulator, manufacturer: Apple } } + readable: 'an emulator running iOS 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: '5.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) CriOS/25.0.1364.124 Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: Chrome, version: '25', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 25 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mercury/7.4 Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: 'Mercury Browser', version: '7.4', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Mercury Browser 7.4 on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3' + result: { browser: { name: Safari, version: '5.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 5.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/30.0.1599.16 Mobile/10A403 Safari/8536.25' + result: { browser: { name: Chrome, version: '30', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 30 on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A405 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) CriOS/33.0.1750.14 Mobile/10A525 Safari/8536.25' + result: { browser: { name: Chrome, version: '33', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Chrome 33 on an Apple iPhone running iOS 6.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A525 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_0_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) GSA/3.2.1.25875 Mobile/10A551 Safari/8536.25' + result: { browser: { name: 'Google Search', version: 3.2.1, type: 'app:search' }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Google Search 3.2.1 on an Apple iPhone running iOS 6.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B143 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '6.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B146 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Safari/6531.22.7 iLunascape/3212' + result: { browser: { name: iLunascape, version: '3212', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'iLunascape 3212 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 Safari/7534.48.3 Sleipnir/2.4.5m' + result: { browser: { name: Sleipnir, version: 2.4.5, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sleipnir 2.4.5 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B329 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B350 SogouMobileBrowser/2.1.1' + result: { browser: { name: 'Sogou Mobile', version: '2.1', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 2.1 on an Apple iPhone running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_5 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.5' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A523 Safari/8536.25' + result: { browser: { name: Safari, version: '6.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 6.1.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_6 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko, M5WebKit/1.0.2, M5HybridSDK/1.0.0) Version/5.1.1 Mobile/6.1.6 Mammoth/5.1.1' + result: { browser: { name: Mammoth, version: 5.1.1, type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: 6.1.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Mammoth 5.1.1 on an Apple iPhone running iOS 6.1.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/7.0 Mobile/10A405 Safari/8536.25' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: '536.26' }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mercury/8.4.1 Mobile/11A465 Safari/9537.53' + result: { browser: { name: 'Mercury Browser', version: 8.4.1, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Mercury Browser 8.4.1 on an Apple iPhone running iOS 7.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B475 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 Safari/7534.48.3 Sleipnir/3.1.3m' + result: { browser: { name: Sleipnir, version: 3.1.3, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sleipnir 3.1.3 on an Apple iPhone running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) OPiOS/8.0.0.78865 Mobile/11A501 Safari/9537.53' + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Opera Mini 8.0 on an Apple iPhone running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A501 Safari/9537.51' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B511 Safari/6531.22.7 iLunascape/3212' + result: { browser: { name: iLunascape, version: '3212', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'iLunascape 3212 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B511 SogouMobileBrowser/2.3.0' + result: { browser: { name: 'Sogou Mobile', version: '2.3', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 2.3 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/5.1 YaBrowser/13.11.1500.0 Mobile/11B511 Safari/9537.53' + result: { browser: { name: 'Yandex Browser', version: '13.11', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Yandex Browser 13.11 on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B507 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.0.0.74604 Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'Coast by Opera', version: 3.0.0, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Coast by Opera 3.0.0 on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Coast/3.1.1.80767 Mobile/11B554a Safari/7534.48.3' + result: { browser: { name: 'Coast by Opera', version: 3.1.1, type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Coast by Opera 3.1.1 on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B554a Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_5 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B601 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.5' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_6 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B651 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.0.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11D124 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) YaBrowser/14.2.1700.0 Mobile/11D167 Safari/9537.53' + result: { browser: { name: 'Yandex Browser', version: '14.2', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Yandex Browser 14.2 on an Apple iPhone running iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.1 Mobile/11D169 Safari/9537.53 baidubrowser/2.0.1.0 (Baidu; P2 7.1)' + result: { browser: { name: 'Baidu Browser', version: 2.0.1.0, type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Baidu Browser 2.0.1.0 on an Apple iPhone running iOS 7.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 SogouMobileBrowser/3.0.0' + result: { browser: { name: 'Sogou Mobile', version: '3.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Sogou Mobile 3.0 on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) OPiOS/8.0.2.80660 Mobile/11D201 Safari/9537.53' + result: { browser: { name: 'Opera Mini', version: '8.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Opera Mini 8.0 on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.1.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D257 Safari/9537.53' + result: { browser: { name: Safari, version: '7.0', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 7.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12A347 Safari/600.1.4' + result: { browser: { name: Safari, version: '8.0', type: browser }, engine: { name: Webkit, version: 600.1.4 }, os: { name: iOS, version: '8.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 8.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5A347 Safari/525.200' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: 2.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5G77 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_2_1 like Mac OS X; xx) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5H11 Safari/525.20' + result: { browser: { name: Safari, version: 3.1.1, type: browser }, engine: { name: Webkit, version: 525.18.1 }, os: { name: iOS, alias: 'iPhone OS', version: 2.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 2.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: '3.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0_1 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A400 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: 3.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C97d Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: '3.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_2 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7D11 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: 3.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.1.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1_3 like Mac OS X; xx) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7E18 Safari/528.16' + result: { browser: { name: Safari, version: '4.0', type: browser }, engine: { name: Webkit, version: '528.18' }, os: { name: iOS, alias: 'iPhone OS', version: 3.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 3.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.0' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A306 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: 4.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.0.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0_2 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A400 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: 4.0.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.0.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; xx) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7' + result: { browser: { name: Safari, version: 4.0.5, type: browser }, engine: { name: Webkit, version: '532.9' }, os: { name: iOS, version: '4.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C134 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.2' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_10 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E600 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.10 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.10' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_5 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E128 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.5' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_6 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E200 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_8 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E401 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.8 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.8' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_9 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8E501 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.2.9 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.2.9' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148a Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_1 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.1' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) FlyFlow/2.5 Version/5.0.2 Mobile/8H7 Safari/6533.18.5 baidubrowser/042_3.9.5.2_diordna_008_084/ESNESIH_51_3.0.4_69T-SH/1000256c/847AAB49ED14109F7BACD70DAED48491%7C696799010655468/1' + result: { browser: { name: 'Baidu Browser', version: '2.5', type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Baidu Browser 2.5 on an Apple iPhone running iOS 4.3.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_2 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.2' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_4 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8K2 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.4 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.4' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 6_1_3 like Mac OS X; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.10977IP Mobile' + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '3', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS, version: 6.1.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 3 on an Apple iPhone running iOS 6.1.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU iPhone OS 7_0_6 like Mac OS X; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/3.11558IP Mobile' + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '3', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS, version: 7.0.6 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Puffin 3 on an Apple iPhone running iOS 7.0.6' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; xx) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3' + result: { browser: { name: Safari, version: '3.0', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 1.0' +- + headers: 'User-Agent: Mozilla/5.0 (iphone; U; CPU iPhone OS 4_3_5 like Mac OS X; xx) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5' + result: { browser: { name: Safari, version: 5.0.2, type: browser }, engine: { name: Webkit, version: 533.17.9 }, os: { name: iOS, version: 4.3.5 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iOS 4.3.5' +- + headers: { User-Agent: 'Mozilla/5.0 (X11; U; Linux x86_64; xx) AppleWebKit/534.35 (KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.35 Puffin/2.0.7961', X-Puffin-UA: 'iPhone OS/iPhone 3GS/320x480' } + result: { browser: { name: Puffin, family: { name: Chrome, version: 11 }, version: '2.0', type: browser }, engine: { name: Webkit, version: '534.35' }, os: { name: iOS }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 3GS' } } + readable: 'Puffin 2.0 on an Apple iPhone 3GS running iOS' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X; xx) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 UCBrowser/9.1.0.287 Mobile', X-UCBrowser-UA: 'pf(42);la(zh-CN);dv(iPh3,1);pr(UCBrowser);ov(5_0_1);pi(640x960);ss(320x416);er(U);bt(UM);up();re(AppleWebKit/534.46 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(1);' } + result: { browser: { name: 'UC Browser', version: '9.1', type: browser }, engine: { name: Webkit, version: '534.46' }, os: { name: iOS, version: 5.0.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 4' } } + readable: 'UC Browser 9.1 on an Apple iPhone 4 running iOS 5.0.1' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_2 like Mac OS X; xx) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11A501 UCBrowser/9.3.2.356 Mobile', X-UCBrowser-UA: 'pf(44);la(zh-CN);dv(iPd5,1);pr(UCBrowser);ov(7_0_2);pi(640x1136);ss(320x416);er(U);bt(UM);up();re(AppleWebKit/537.51.1 (KHTML, like Gecko));pm(0);bv(0);nm(0);im(0);nt(2);' } + result: { browser: { name: 'UC Browser', version: '9.3', type: browser }, engine: { name: Webkit, version: 537.51.1 }, os: { name: iOS, version: 7.0.2 }, device: { type: media, manufacturer: Apple, model: 'iPod touch (5th gen)' } } + readable: 'UC Browser 9.3 on an Apple iPod touch (5th gen) running iOS 7.0.2' +- + headers: { User-Agent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 MobileIron/1.3.0 Version/7.1.1 Safari/537.51.2', X-MobileIron-SecureBrowser-Managed-By: MobileIron } + result: { browser: { name: Iron, version: '1.3', type: browser }, engine: { name: Webkit, version: 537.51.2 }, os: { name: iOS, version: 7.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Iron 1.3 on an Apple iPhone running iOS 7.1.1' +- + headers: { User-Agent: 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Google Wireless Transcoder;)', X-Original-User-Agent: 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3', X-Device-User-Agent: 'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A93 Safari/419.3' } + result: { browser: { name: 'Google Wireless Transcoder' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Google Wireless Transcoder on an Apple iPhone running iPhone OS 1.0' +- + headers: { User-Agent: 'Opera/9.80 (J2ME/MIDP; Opera Mini/4.2.14912/34.818; U; xx) Presto/2.8.119 Version/11.10', X-OperaMini-Phone: 'Apple # iPhone', X-OperaMini-Features: 'advanced, file_system, folding', X-OperaMini-Phone-UA: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5', Device-Stock-UA: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5' } + result: { browser: { name: 'Opera Mini', version: '4.2', type: browser }, engine: { name: Presto, version: 2.8.119 }, os: { name: iOS, version: 4.3.3 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Opera Mini 4.2 on an Apple iPhone running iOS 4.3.3' +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3' + result: { browser: { name: Safari, version: '3.0', type: browser }, engine: { name: Webkit, version: '420' }, os: { name: iOS, alias: 'iPhone OS', version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } + readable: 'Safari on an Apple iPhone running iPhone OS 1.0' +- + headers: 'User-Agent: AtomicLite/7.0.1 CFNetwork/672.1.13 Darwin/14.0.0' + result: { browser: { name: Atomic, version: 7.0.1, type: browser }, os: { name: iOS, version: '7.1' }, device: { type: mobile, subtype: smart, manufacturer: Apple } } + readable: 'Atomic 7.0.1 on iOS 7.1' +- + headers: 'User-Agent: (iPhone; iOS 13.1.2; Scale/2.00; iPhone9,3)' + readable: 'an Apple iPhone 7 running iOS 13.1.2' + result: { os: { name: iOS, version: 13.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 7' } } \ No newline at end of file diff --git a/test/data/mobile/os-webos.yaml b/test/data/mobile/os-webos.yaml index 441298a..12c62d4 100644 --- a/test/data/mobile/os-webos.yaml +++ b/test/data/mobile/os-webos.yaml @@ -44,97 +44,97 @@ readable: 'a Palm Pre 2 running webOS 2.2.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.0; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.54 Safari/534.6 Pre/3.0' - result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 3' } } - readable: 'a Palm Pre 3 running webOS 2.2' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 3' } } + readable: 'a Palm Pre 3 running webOS 2.2.0' - headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 P160UNA/1.0' - result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } - readable: 'a HP Veer running webOS 2.2' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2.4' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.2.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 Pre/1.2' - result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } - readable: 'a Palm Pre 2 running webOS 2.2' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.2.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; webOS/2.2.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) webOSBrowser/221.56 Safari/534.6 Pre/3.0' - result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 3' } } - readable: 'a Palm Pre 3 running webOS 2.2' + result: { engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.2.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 3' } } + readable: 'a Palm Pre 3 running webOS 2.2.4' - headers: 'User-Agent: Mozilla/5.0 (hp-desktop; Linux; hpwOS/2.0; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 Desktop/1.0' result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '2.0' }, device: { type: emulator } } readable: 'webOS Browser on an emulator running webOS 2.0' - headers: 'User-Agent: Mozilla/5.0 (iPhone; U; xx)(webOS/2.1.0; U; xx) AppleWebKit/532.2 Version/1.0 Safari/532.2 Pre/1.0 -CET' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } - readable: 'a Palm Pre running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 2.1.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.0; U; xx) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/1.0 Safari/525.27.1 Pre/1.0' result: { engine: { name: Webkit, version: 525.27.1 }, os: { name: webOS, version: '1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } readable: 'a Palm Pre running webOS 1.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } - readable: 'a Palm Pre running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 1.4.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5.1; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } - readable: 'a Palm Pixi Plus running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.5.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 1.4.5.1' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5.1; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } - readable: 'a Palm Pre Plus running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.5.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 1.4.5.1' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pixi } } - readable: 'a Palm Pixi running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.5' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pixi } } + readable: 'a Palm Pixi running webOS 1.4.5' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } - readable: 'a Palm Pixi Plus running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.5' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 1.4.5' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } - readable: 'a Palm Pre running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.5' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 1.4.5' - headers: 'User-Agent: Mozilla/5.0 (webOS/1.4.5; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } - readable: 'a Palm Pre Plus running webOS 1.4' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '1.4.5' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 1.4.5' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.0.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.2' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } - readable: 'a Palm Pre 2 running webOS 2.0' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.0.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.0.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } - readable: 'a Palm Pre running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: Pre } } + readable: 'a Palm Pre running webOS 2.1.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } - readable: 'a Palm Pre Plus running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre Plus' } } + readable: 'a Palm Pre Plus running webOS 2.1.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pre/1.2' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } - readable: 'a Palm Pre 2 running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pre 2' } } + readable: 'a Palm Pre 2 running webOS 2.1.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.1; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160U/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } - readable: 'a HP Veer running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1.1' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.2; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160U/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } - readable: 'a HP Veer running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.2' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1.2' - headers: 'User-Agent: Mozilla/5.0 (webOS/2.1.2; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 P160UNA/1.0' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } - readable: 'a HP Veer running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.2' }, device: { type: mobile, subtype: smart, manufacturer: HP, model: Veer } } + readable: 'a HP Veer running webOS 2.1.2' - headers: 'User-Agent: Mozilla/5.0 (webOS/HP webOS 2.1.0; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } - readable: 'a Palm Pixi Plus running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.0' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 2.1.0' - headers: 'User-Agent: Mozilla/5.0 (webOS/HP webOS 2.1.2; U; xx) AppleWebKit/532.2 (KHTML, like Gecko) Version/1.0 Safari/532.2 Pixi/1.1' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } - readable: 'a Palm Pixi Plus running webOS 2.1' + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS, version: '2.1.2' }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + readable: 'a Palm Pixi Plus running webOS 2.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; U; en-US) AppleWebKit/532.2 Version/1.0 Safari/532.2 Pixi/1.1' readable: 'a Palm Pixi Plus running webOS' - result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } + result: { engine: { name: Webkit, version: '532.2' }, os: { name: webOS }, device: { type: mobile, subtype: smart, manufacturer: Palm, model: 'Pixi Plus' } } \ No newline at end of file diff --git a/test/data/tablet/os-android.yaml b/test/data/tablet/os-android.yaml index 92ab03d..084c777 100644 --- a/test/data/tablet/os-android.yaml +++ b/test/data/tablet/os-android.yaml @@ -1,33 +1,12 @@ -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; xx; HP eStation/1.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17" - result: - { - browser: { name: "Android Browser" }, - engine: { name: Webkit, version: "530.17" }, - os: { name: Android, version: "2.1" }, - device: { type: printer, manufacturer: HP, model: eStation }, - } - readable: "Android Browser on a HP eStation running Android 2.1" -- 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 }, - version: 69.0.3440.40, - type: browser, - }, - engine: { name: Blink }, - os: { name: Android, version: 4.4.2 }, - device: { type: tablet, model: T8_T106 }, - } +- + headers: 'User-Agent: Mozilla/5.0 (Linux; U; Android 2.1; xx; HP eStation/1.0) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17' + result: { browser: { name: 'Android Browser' }, engine: { name: Webkit, version: '530.17' }, os: { name: Android, version: '2.1' }, device: { type: printer, manufacturer: HP, model: eStation } } + readable: 'Android Browser on a HP eStation running Android 2.1' +- + 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 }, version: 69.0.3440.40, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.4.2 }, device: { type: tablet, model: T8_T106 } } \ No newline at end of file diff --git a/test/data/tablet/os-webos.yaml b/test/data/tablet/os-webos.yaml index f5b8c6a..8ace4d1 100644 --- a/test/data/tablet/os-webos.yaml +++ b/test/data/tablet/os-webos.yaml @@ -1,12 +1,12 @@ - headers: 'User-Agent: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.4; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.68 Safari/534.6 TouchPad/1.0' - result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '3.0' }, device: { type: tablet, manufacturer: HP, model: TouchPad } } - readable: 'webOS Browser on a HP TouchPad running webOS 3.0' + result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '3.0.4' }, device: { type: tablet, manufacturer: HP, model: TouchPad } } + readable: 'webOS Browser on a HP TouchPad running webOS 3.0.4' - headers: 'User-Agent: Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0' - result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '3.0' }, device: { type: tablet, manufacturer: HP, model: TouchPad } } - readable: 'webOS Browser on a HP TouchPad running webOS 3.0' + result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS, version: '3.0.5' }, device: { type: tablet, manufacturer: HP, model: TouchPad } } + readable: 'webOS Browser on a HP TouchPad running webOS 3.0.5' - headers: 'User-Agent: Mozilla/5.0 (iPad; U; xx) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 011/07' result: { browser: { name: 'webOS Browser', type: browser }, engine: { name: Webkit, version: '534.6' }, os: { name: webOS }, device: { type: tablet, manufacturer: HP, model: TouchPad } } - readable: 'webOS Browser on a HP TouchPad running webOS' + readable: 'webOS Browser on a HP TouchPad running webOS' \ No newline at end of file diff --git a/test/data/television/lg.yaml b/test/data/television/lg.yaml index 38219a9..90c6862 100644 --- a/test/data/television/lg.yaml +++ b/test/data/television/lg.yaml @@ -321,4 +321,28 @@ - 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' } } \ No newline at end of file + result: { engine: { name: Webkit, version: '537.1' }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36 WebAppManager' + readable: 'a LG webOS TV' + result: { browser: { family: { name: Chrome, version: 79 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 WebAppManager' + readable: 'a LG webOS TV' + result: { browser: { family: { name: Chrome, version: 68 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.34 Safari/537.36 WebAppManager' + readable: 'a LG webOS TV' + result: { browser: { family: { name: Chrome, version: 53 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.36 (KHTML, like Gecko) QtWebEngine/5.2.1 Chrome/38.0.2125.122 Safari/537.36 WebAppManager' + readable: 'Qt 5.2.1 on a LG webOS TV' + result: { browser: { using: { name: Qt, version: 5.2.1 }, family: { name: Chrome, version: 38 }, type: browser }, engine: { name: Blink }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/538.2 (KHTML, like Gecko) Large Screen WebAppManager Safari/538.2' + readable: 'a LG webOS TV' + result: { engine: { name: Webkit, version: '538.2' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } +- + headers: 'User-Agent: Mozilla/5.0 (Web0S; Linux/SmartTV) AppleWebKit/537.41 (KHTML, like Gecko) Large Screen WebAppManager Safari/537.41' + readable: 'a LG webOS TV' + result: { engine: { name: Webkit, version: '537.41' }, os: { name: webOS }, device: { type: television, manufacturer: LG, series: 'webOS TV' } } \ No newline at end of file diff --git a/test/data/television/other.yaml b/test/data/television/other.yaml index 242e674..6fa77ee 100644 --- a/test/data/television/other.yaml +++ b/test/data/television/other.yaml @@ -1,1448 +1,620 @@ -- headers: "User-Agent: HbbTV/1.1.1 (+DL;TechnoTrend Goerler;S-855;3.1.8.24.04.20.devel;;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)" - result: - { device: { type: television, manufacturer: TechnoTrend, model: S-855 } } - readable: "a TechnoTrend S-855" -- headers: "User-Agent: HbbTV/1.1.1 (+PVR;Humax;HD FOX+;1.00.12;1.0)CE-HTML/1.0 ANTGalio/3.1.1.23.04.09" - result: - { - browser: { name: "ANT Galio", version: 3.1.1, type: browser }, - device: - { - type: television, - manufacturer: Humax, - model: "HD FOX+", - series: "Digital Receiver", - }, - } - readable: "ANT Galio 3.1.1 on a Humax HD FOX+ Digital Receiver" -- headers: "User-Agent: HbbTV/1.1.1 (+PVR;Humax;iCord Cable;1.01.09;1.0)CE-HTML/1.0 ANTGalio/3.1.1.23.04.09" - result: - { - browser: { name: "ANT Galio", version: 3.1.1, type: browser }, - device: - { - type: television, - manufacturer: Humax, - model: "iCord Cable", - series: "Digital Receiver", - }, - } - readable: "ANT Galio 3.1.1 on a Humax iCord Cable Digital Receiver" -- headers: "User-Agent: HbbTV/1.1.1 (+PVR;Humax;iCord HD+;1.01.17;1.0)CE-HTML/1.0 ANTGalio/3.1.1.23.04" - result: - { - browser: { name: "ANT Galio", version: 3.1.1, type: browser }, - device: - { - type: television, - manufacturer: Humax, - model: "iCord HD+", - series: "Digital Receiver", - }, - } - readable: "ANT Galio 3.1.1 on a Humax iCord HD+ Digital Receiver" -- headers: "User-Agent: HbbTV/1.1.1 (+PVR;Sky_worth;HC7620;2.07.12;1.0;)CE-HTML/1.0 Skykid/5.1.6.2.04" - result: - { device: { type: television, manufacturer: Skyworth, model: HC7620 } } - readable: "a Skyworth HC7620" -- headers: "User-Agent: HbbTV/1.1.1 (; CUS:; MB70; 1.0; 1.0;) LOH; Opera; CE-HTML/1.0 NetFront/4.1 NETRANGEMMH" - result: - { - browser: { name: NetFront, version: "4.1", type: browser }, - engine: { name: NetFront }, - device: { type: television, model: MB70 }, - } - readable: "NetFront 4.1 on a MB70" -- headers: "User-Agent: HbbTV/1.1.1 (; Vestel; MB70; 1.0; 1.0;) NetFront/4.1" - result: - { - browser: { name: NetFront, version: "4.1", type: browser }, - engine: { name: NetFront }, - device: { type: television, manufacturer: Vestel, model: MB70 }, - } - readable: "NetFront 4.1 on a Vestel MB70" -- headers: "User-Agent: HbbTV/1.1.1 (;;;;;) NETRANGEMMH sraf_tv_browser webkitMozilla/5.0 (Unknown; Linux mips) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.36" - result: - { - browser: - { name: "Seraphic Sraf", using: "Chrome Content Shell", type: browser }, - engine: { name: Webkit, version: "537.36" }, - device: { type: television }, - } - readable: "Seraphic Sraf on a television" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;EN2000 ;9.wk.92;4.4.2; ) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit" - result: - { - browser: { name: "NetFront NX", version: "2.1", type: browser }, - device: { type: television, manufacturer: HyperPanel, model: EN2000 }, - } - readable: "NetFront NX 2.1 on a HyperPanel EN2000" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;dsi1076 02-AA-55-AA-56-26;9.wr.28;4.4.7;;) LOH; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit" - result: - { - browser: { name: "NetFront NX", version: "2.1", type: browser }, - device: { type: television, manufacturer: HyperPanel, model: DSI1076 }, - } - readable: "NetFront NX 2.1 on a HyperPanel DSI1076" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;dsi1076 02-AA-55-AA-56-26;9.wr.28;4.4.7;;) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit" - result: - { - browser: { name: "NetFront NX", version: "2.1", type: browser }, - device: { type: television, manufacturer: HyperPanel, model: DSI1076 }, - } - readable: "NetFront NX 2.1 on a HyperPanel DSI1076" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr7105 00-00-00-00-00-00;9.26.01;2502-B234A;) LOH; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit" - result: - { - browser: { name: "NetFront NX", version: "2.1", type: browser }, - device: { type: television, manufacturer: HyperPanel, model: DTR7105 }, - } - readable: "NetFront NX 2.1 on a HyperPanel DTR7105" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr7105 02-AA-55-AA-58-3B;9.23.04;4.4.6;;) NetFront/4.1 CE-HTML Opera" - result: - { - browser: { name: NetFront, version: "4.1", type: browser }, - engine: { name: NetFront }, - device: { type: television, manufacturer: HyperPanel, model: DTR7105 }, - } - readable: "NetFront 4.1 on a HyperPanel DTR7105" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr7105 02-AA-55-AA-58-3B;9.wr.33;4.5.2;) LOH; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit" - result: - { - browser: { name: "NetFront NX", version: "2.1", type: browser }, - device: { type: television, manufacturer: HyperPanel, model: DTR7105 }, - } - readable: "NetFront NX 2.1 on a HyperPanel DTR7105" -- headers: "User-Agent: HbbTV/1.1.1 (;HyperPanel;dtr77 00-00-00-00-00-00;9.wr.28;2502-B234A;;) LOH; Opera; CE-HTML/1.0 NetFrontNX/2.1 NETRANGEMMH based on WebKit" - result: - { - browser: { name: "NetFront NX", version: "2.1", type: browser }, - device: { type: television, manufacturer: HyperPanel, model: DTR77 }, - } - readable: "NetFront NX 2.1 on a HyperPanel DTR77" -- headers: "User-Agent: HbbTV/1.1.1 (;IP4TV;DXD5505;1.0;1.0;)" - result: { device: { type: television, manufacturer: IP4TV, model: DXD5505 } } - readable: "an IP4TV DXD5505" -- headers: "User-Agent: HbbTV/1.1.1 (NETRANGEMMH sraf_tv_browser webkitMozilla/5.0 (Unknown; Linux mips) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.36) FXM-U2FsdGVkX1/tdIdmThx556OcX2OvLYJ7xZ4szfWJhVJaKuyMPSh2dCfn+cBdncw9-END" - result: - { - browser: - { name: "Seraphic Sraf", using: "Chrome Content Shell", type: browser }, - engine: { name: Webkit, version: "537.36" }, - device: { type: television }, - } - readable: "Seraphic Sraf on a television" -- headers: "User-Agent: HbbTV/1.2.1 (+DL+PVR+DRM;Sky_worth;HC7620;2.07.12;1.0;)CE-HTML/1.0 Skykid/5.1.6.2.04" - result: - { device: { type: television, manufacturer: Skyworth, model: HC7620 } } - readable: "a Skyworth HC7620" -- headers: "User-Agent: HbbTV/1.2.1 (+DL; SmarD TV; TCL; 1.32.455; 2.002; WOTV/0.1; SmartTvA/3.0.0.0;)" - result: { device: { type: television, manufacturer: "SmarD TV", model: TCL } } - readable: "a SmarD TV TCL" -- headers: "User-Agent: HbbTV/1.2.1 (OITF_HD_UIPROF+PVR+DL; UEC; PVR9600; 1.0.6053; 1.0)" - result: { device: { type: television, manufacturer: UEC, model: PVR9600 } } - readable: "an UEC PVR9600" -- headers: "User-Agent: HtmlRenderer/x.y (Technicolor_DXI807FT; U; Linux i686; xx) QtWebKit/2.2.z" - result: - { - engine: { name: Webkit, version: 2.2. }, - device: { type: television, manufacturer: Technicolor, model: DXI807FT }, - } - readable: "a Technicolor DXI807FT" -- headers: "User-Agent: Kodi/14.0 (Macintosh; Intel Mac OS X 10_10_3) App_Bitness/64 Version/14.0-Git:2014-12-23-ad747d9-dirty" - result: - { - browser: { name: Kodi, version: "14.0", type: "app:mediaplayer" }, - os: { name: "OS X", version: { value: "10.10", nickname: Yosemite } }, - device: { type: desktop, manufacturer: Apple, model: Macintosh }, - } - readable: "Kodi 14.0 on OS X Yosemite 10.10" -- headers: "User-Agent: LOEWE/TV HBBTV/1.0 CE-HTML/1.0 SL150/14.16.0" - result: - { - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL150", - series: "Smart TV", - }, - } - readable: "a Loewe Connect SL150 Smart TV" -- headers: "User-Agent: LOEWE/TV HbbTV/1.1.1 (+PVR; Loewe; SL121; LOH;;) CE-HTML/1.0 SL121/16.16.0" - result: - { - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL121", - series: "Smart TV", - }, - } - readable: "a Loewe Connect SL121 Smart TV" -- headers: "User-Agent: LOEWE/TV HbbTV/1.1.1 CE-HTML/1.0 SL121/16.16.0" - result: - { - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL121", - series: "Smart TV", - }, - } - readable: "a Loewe Connect SL121 Smart TV" -- headers: "User-Agent: Mozilla/3.0 WebTV/1.2 (compatible; MSIE 2.0)" - result: - { - browser: { name: "Internet Explorer", version: "2.0", type: browser }, - device: { type: television, manufacturer: Microsoft, model: WebTV }, - } - readable: "Internet Explorer 2.0 on a Microsoft WebTV" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; inverto; IDL 6654N Volksbox Web Edition +; 1.0; 1.0;) hdplusinteraktiv/1.0 (NETRANGEMMH;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "534.6" }, - device: - { - type: television, - manufacturer: Inverto, - model: "IDL 6654N Volksbox Web Edition +", - }, - } - readable: "an Inverto IDL 6654N Volksbox Web Edition +" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; inverto; IDL-6651N Volksbox Web Edition; 1.0; 1.0;) hdplusinteraktiv/1.0 (NETRANGEMMH;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "534.6" }, - device: - { - type: television, - manufacturer: Inverto, - model: "IDL 6651N Volksbox Web Edition", - }, - } - readable: "an Inverto IDL 6651N Volksbox Web Edition" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; selevision; Selevision EMC1000i; 1.0; 1.0;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "534.6" }, - device: { type: television, manufacturer: Selevision, model: EMC1000i }, - } - readable: "a Selevision EMC1000i" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; smart; CX10; 1.0; 1.0;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "534.6" }, - device: { type: television, manufacturer: Smart, model: CX10 }, - } - readable: "a Smart CX10" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/534.6 HbbTV/1.1.1 (+DL+PVR; smart; ZAPPIX HD+; 1.0; 1.0;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "534.6" }, - device: { type: television, manufacturer: Smart, model: "ZAPPIX HD+" }, - } - readable: "a Smart ZAPPIX HD+" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.6 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM - IDL9000; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)" - result: - { - engine: { name: Webkit, version: "538.6" }, - device: { type: television, manufacturer: Inverto, model: "IDL 9000" }, - } - readable: "an Inverto IDL 9000" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; Inverto; Volksbox; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH)" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: { type: television, manufacturer: Inverto, model: Volksbox }, - } - readable: "an Inverto Volksbox" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; inverto; IDL-6651N Volksbox Web Edition; 1.0; 1.0;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: - { - type: television, - manufacturer: Inverto, - model: "IDL 6651N Volksbox Web Edition", - }, - } - readable: "an Inverto IDL 6651N Volksbox Web Edition" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM - IDL9000; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: { type: television, manufacturer: Inverto, model: "IDL 9000" }, - } - readable: "an Inverto IDL 9000" -- headers: "User-Agent: Mozilla/5.0 (;;;) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; selevision; Selevision EMC1000i; 1.0; 1.0;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: { type: television, manufacturer: Selevision, model: EMC1000i }, - } - readable: "a Selevision EMC1000i" -- headers: "User-Agent: Mozilla/5.0 (DirectFB; Linux sh4) AppleWebKit/537.6+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/537.6+HbbTV/1.1.1 (;iWedia;Teatro;3.0;;)" - result: - { - browser: { family: { name: Chrome, version: 17 }, type: browser }, - engine: { name: Webkit, version: "537.6" }, - device: { type: television, manufacturer: iWedia, model: Teatro }, - } - readable: "an iWedia Teatro" -- headers: "User-Agent: Mozilla/5.0 (DirectFB; Linux sh4) AppleWebKit/537.6+ (KHTML, like Gecko) Safari/537.6+HbbTV/1.1.1 (;iWedia;Teatro;3.0;;)" - result: - { - engine: { name: Webkit, version: "537.6" }, - device: { type: television, manufacturer: iWedia, model: Teatro }, - } - readable: "an iWedia Teatro" -- headers: "User-Agent: Mozilla/5.0 (DirectFB; U; Linux mips; c) AppleWebKit/531.2+ (KHTML, like Gecko) Safari/531.2+ (Winbox Evo2) CE-HTML/1.0 HbbTV/1.1.1 (;;;;)" - result: - { - engine: { name: Webkit, version: "531.2" }, - device: { type: television, manufacturer: Winbox, model: Evo2 }, - } - readable: "a Winbox Evo2" -- headers: "User-Agent: Mozilla/5.0 (Linux armv9; U; xx) AppleWebKit/537.17 (KHTML, like Gecko) HbbTV/1.1.1 (;Mstar;MWB;Arcelik;KY;)" - result: - { - engine: { name: Webkit, version: "537.17" }, - device: { type: television, manufacturer: MStar, model: PVR }, - } - readable: "a MStar PVR" -- headers: "User-Agent: Mozilla/5.0 (Linux i686; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 SRAF/3.0 HbbTV/1.1.1 (+DRM+TRICKMODE; SERAPHIC; TV101; sw-v1.0; hw-v1.0) CE-HTML/1.0 FXM-U2FsdGVkX1+tH+IvjK4AyJIfuJUAyORg8ptl86EQiyLy7LytAiEgU3mKjwgF90uz-END" - result: - { - browser: - { - name: "Seraphic Sraf", - family: { name: Chrome, version: 30 }, - version: "3.0", - type: browser, - }, - engine: { name: Blink }, - device: { type: television }, - } - readable: "Seraphic Sraf 3.0 on a television" -- headers: "User-Agent: Mozilla/5.0 (Linux i686; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.114 Safari/537.36 SRAF/3.0 HbbTV/1.1.1 (CHANGHONG; TV55; sw-v1.0;) CE-HTML/1.0 NETRANGEMMH" - result: - { - browser: - { - name: "Seraphic Sraf", - family: { name: Chrome, version: 30 }, - version: "3.0", - type: browser, - }, - engine: { name: Blink }, - device: { type: television, manufacturer: Changhong, model: TV55 }, - } - readable: "Seraphic Sraf 3.0 on a Changhong TV55" -- headers: "User-Agent: Mozilla/5.0 (Linux mips; U;HbbTV/1.1.1 (+RTSP;DMM;Dreambox;0.1a;1.0;) CE-HTML/1.0; xx) AppleWebKit/535.19 no/Volksbox QtWebkit/2.2" - result: - { - engine: { name: Webkit, version: "535.19" }, - device: { type: television, manufacturer: DMM, model: Dreambox }, - } - readable: "a DMM Dreambox" -- headers: "User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.4; fr-fr; STOREX LinkBox Build/20120103) 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.3.4 }, - device: { type: television, manufacturer: Storex, model: LinkBox }, - } - readable: "Android Browser on a Storex LinkBox running Android 2.3.4" -- headers: "User-Agent: Mozilla/5.0 (MediStream; U; KHTML, like Gecko; Mobile) NetFrontNX/3.0.2" - result: - { - browser: { name: "NetFront NX", version: "3.0", type: browser }, - device: { type: television, manufacturer: Bewatec, model: MediStream }, - } - readable: "NetFront NX 3.0 on a Bewatec MediStream" -- headers: "User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/534.34 (KHTML, like Gecko) kazoku/0.2 Safari/534.34 (ADB; L28YTNRA)" - result: - { - browser: { using: Qt }, - engine: { name: Webkit, version: "534.34" }, - device: - { - type: television, - manufacturer: ADB, - model: "L28YTNRA IPTV receiver", - }, - } - readable: "Qt on an ADB L28YTNRA IPTV receiver" -- headers: "User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/534.34 (KHTML, like Gecko) kazoku/0.2 Safari/534.34 (ADB; TNR-5720CDX)" - result: - { - browser: { using: Qt }, - engine: { name: Webkit, version: "534.34" }, - device: - { - type: television, - manufacturer: ADB, - model: "TNR-5720CDX IPTV receiver", - }, - } - readable: "Qt on an ADB TNR-5720CDX IPTV receiver" -- headers: "User-Agent: Mozilla/5.0 (QtEmbedded; Linux) AppleWebKit/537.4 (KHTML, like Gecko) MWB/1.0 Safari/537.4 HbbTV/1.2.1 (+PVR+DRM; Mstar; MWB;;;)" - result: - { - browser: { using: Qt }, - engine: { name: Webkit, version: "537.4" }, - device: { type: television, manufacturer: MStar, model: PVR }, - } - readable: "Qt on a MStar PVR" -- headers: "User-Agent: Mozilla/5.0 (Unknown; Linux mips) AppleWebKit/534.16+ (KHTML, like Gecko) Version/5.0 Safari/534.16+ IrisBrowser/4.0.17.1 HbbTV/1.2.1 (;Digisoft.tv;Iris;4.0.17.1;;)" - result: - { - engine: { name: Webkit, version: "534.16" }, - device: { type: television, manufacturer: Digisoft.tv, model: Iris }, - } - readable: "a Digisoft.tv Iris" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.11 HbbTV/1.1.1 (+DL+PVR; inverto; AIRSCREEN-MBN108; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)" - result: - { - engine: { name: Webkit, version: "538.11" }, - device: { type: television, manufacturer: Inverto, model: "MBN 108" }, - } - readable: "an Inverto MBN 108" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.11 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM-MBN106; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)" - result: - { - engine: { name: Webkit, version: "538.11" }, - device: { type: television, manufacturer: Inverto, model: "MBN 106" }, - } - readable: "an Inverto MBN 106" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; Inverto; Volksbox; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH)" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: { type: television, manufacturer: Inverto, model: Volksbox }, - } - readable: "an Inverto Volksbox" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; inverto; QUANTUM - IDL9000; 1.0; 1.0;) CE-HTML/1.0 hdplusinteraktiv/1.0 (NETRANGEMMH;)" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: { type: television, manufacturer: Inverto, model: "IDL 9000" }, - } - readable: "an Inverto IDL 9000" -- headers: "User-Agent: Mozilla/5.0 (X11; Linux) AppleWebKit/538.8 HbbTV/1.1.1 (+DL+PVR; selevision; Selevision EMC1000i; 1.0; 1.0;) CE-HTML/1.0" - result: - { - engine: { name: Webkit, version: "538.8" }, - device: { type: television, manufacturer: Selevision, model: EMC1000i }, - } - readable: "a Selevision EMC1000i" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Boxee/1.0.1 bxapi/7.1" - result: - { - browser: { name: Boxee, version: 1.0.1, type: "app:mediaplayer" }, - engine: { name: Webkit, version: "533.4" }, - device: { type: television }, - } - readable: "Boxee 1.0.1 on a television" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/533.4 (KHTML, like Gecko) Boxee/1.0.1 bxapi/7.1" - result: - { - browser: { name: Boxee, version: 1.0.1, type: "app:mediaplayer" }, - engine: { name: Webkit, version: "533.4" }, - device: { type: television }, - } - readable: "Boxee 1.0.1 on a television" -- headers: "User-Agent: Mozilla/5.0 (X11; U; Linux i686; xx) AppleWebKit/534.1 (KHTML, like Gecko) HbbTV/1.1.1 (;Mstar;OWB;Arcelik;J5;)" - result: - { - engine: { name: Webkit, version: "534.1" }, - device: { type: television, manufacturer: MStar, model: PVR }, - } - readable: "a MStar PVR" -- headers: "User-Agent: Opera/10.60 (Linux i686 ; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat MultyVision ISIO; de) Presto/2.6.33 Version/10.60" - result: - { - browser: { name: "Opera Devices", version: "2.8", type: browser }, - engine: { name: Presto, version: 2.6.33 }, - device: - { - type: television, - manufacturer: TechniSat, - model: "MultyVision ISIO", - }, - } - readable: "Opera Devices 2.8 on a TechniSat MultyVision ISIO" -- headers: "User-Agent: Opera/10.60 (Linux sh4 ; U; HbbTV/1.1.1 (+PVR; Loewe; SL121; LOH/3.10;;) CE-HTML/1.0 Config(L:deu,CC:DEU); xx) Presto/2.6.33 Version/10.60" - result: - { - browser: { name: "Opera Devices", version: "2.8", type: browser }, - engine: { name: Presto, version: 2.6.33 }, - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL121", - series: "Smart TV", - }, - } - readable: "Opera Devices 2.8 on a Loewe Connect SL121 Smart TV" -- headers: "User-Agent: Opera/10.60 (Linux sh4 ; U; HbbTV/1.1.1 (+PVR; Loewe; SL150; LOH/3.10;;) CE-HTML/1.0 Config(L:deu,CC:DEU); en) Presto/2.6.33 Version/10.60" - result: - { - browser: { name: "Opera Devices", version: "2.8", type: browser }, - engine: { name: Presto, version: 2.6.33 }, - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL150", - series: "Smart TV", - }, - } - readable: "Opera Devices 2.8 on a Loewe Connect SL150 Smart TV" -- headers: "User-Agent: Opera/10.60 (Linux sh4 ; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat DIGIT ISIO S; en) Presto/2.6.33 Version/10.60" - result: - { - browser: { name: "Opera Devices", version: "2.8", type: browser }, - engine: { name: Presto, version: 2.6.33 }, - device: - { type: television, manufacturer: TechniSat, model: "DIGIT ISIO S" }, - } - readable: "Opera Devices 2.8 on a TechniSat DIGIT ISIO S" -- headers: "User-Agent: Opera/9.80 (Linux 7325b0; U; HbbTV/1.1.1 (; Humax; HD NANO; 1.00.16; 1.0; ); ce-html/1.0; en) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { - type: television, - manufacturer: Humax, - model: "HD NANO", - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.1 on a Humax HD NANO Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux 7325b0; U; HbbTV/1.1.1 (; Humax; IR2000HD; 1.01.06; 1.0; ); ce-html/1.0; xx) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { - type: television, - manufacturer: Humax, - model: IR2000HD, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.1 on a Humax IR2000HD Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux 7325b0; U; HbbTV/1.1.1 (; Humax; IRHD-5100S; 1.01.26; 1.0; ); ce-html/1.0; en) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { - type: television, - manufacturer: Humax, - model: IRHD-5100S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.1 on a Humax IRHD-5100S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux 7335b0-smp; U; HbbTV/1.1.1 (; Humax; iCord MINI; 0.90.02; 1.0; ); ce-html/1.0; en) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Humax, - model: "iCord MINI", - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.2 on a Humax iCord MINI Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux 7335b0-smp; U; HbbTV/1.1.1 (; Humax; iCord MINI; 1.00.33; 1.0; hdplusSmartTV/1.0 (NETRANGEMMH; )); ce-html/1.0; xx) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Humax, - model: "iCord MINI", - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.2 on a Humax iCord MINI Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux 7405b0-smp; U; HbbTV/1.1.1 (; Humax; HD 7000i; 1.00.36; 1.0; ); ce-html/1.0; xx) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { - type: television, - manufacturer: Humax, - model: "HD 7000i", - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.1 on a Humax HD 7000i Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux 7405b0-smp; U; HbbTV/1.1.1 (; Humax; HD-FOX-C/DELTA; 1.00.01; 1.0; ); ce-html/1.0; xx) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Humax, - model: HD-FOX-C/DELTA, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.2 on a Humax HD-FOX-C/DELTA Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;IKEA LF1V358; en) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: IKEA, - model: LF1V358, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.2 on an IKEA LF1V358 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;PEAQ LF1V350; en) Presto/2.8.115 Version/11.10" - result: - { - browser: { name: "Opera Devices", version: "3.0", type: browser }, - engine: { name: Presto, version: 2.8.115 }, - device: - { - type: television, - manufacturer: PEAQ, - model: LF1V350, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.0 on a PEAQ LF1V350 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;TCL LF1V349; en) Presto/2.8.115 Version/11.10" - result: - { - browser: { name: "Opera Devices", version: "3.0", type: browser }, - engine: { name: Presto, version: 2.8.115 }, - device: - { - type: television, - manufacturer: TCL, - model: LF1V349, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.0 on a TCL LF1V349 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;THOM LF1V375; en) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Thomson, - model: LF1V375, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.2 on a Thomson LF1V375 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux armv6l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;THOMSON LF1V017; en) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Thomson, - model: LF1V017, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.2 on a Thomson LF1V017 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.1.1 (; LOEWE; SL32x; LOH/0.3.5.0;;) CE-HTML/1.0 Config(L:ger,CC:DE) NETRANGEMMH) Presto/2.12.407 Version/12.50" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL32", - series: "Smart TV", - }, - } - readable: "Opera Devices 3.4 on a Loewe Connect SL32 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; U; HbbTV/1.1.1 (; INTEK; VANTAGE-ibox; 1.0; 1.0;) CE-HTML/1.0; FXM-U2FsdGVkX1+SeQgKwMxDHwbkH5VtZb8Wpivfvs2Rqd0yf/FVDeLDABtbH9UngCaD-END; xx) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: { type: television, manufacturer: INTEK, model: VANTAGE-ibox }, - } - readable: "Opera Devices 3.1 on an INTEK VANTAGE-ibox" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; U; HbbTV/1.1.1 (;tv2n;videoweb;1.0.0;1.0;); xx) Presto/2.8.115 Version/11.10" - result: - { - browser: { name: "Opera Devices", version: "3.0", type: browser }, - engine: { name: Presto, version: 2.8.115 }, - device: { type: television, manufacturer: TV2N, model: Videoweb }, - } - readable: "Opera Devices 3.0 on a TV2N Videoweb" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/JVC;SW-Version/V8-MT51F07-LF1V309;Cnt/DNK;Lan/dan) Presto/2.12.362 Version/12.11" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.362 }, - device: { type: television, manufacturer: JVC, series: "Smart TV" }, - } - readable: "Opera Devices 3.4 on a television" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/JVC;SW-Version/V8-MT51F07-LF1V309;Cnt/DNK;Lan/dan) Presto/2.12.362 Version/12.11" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.362 }, - device: { type: television, manufacturer: JVC, series: "Smart TV" }, - } - readable: "Opera Devices 3.4 on a television" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/THOMSON;SW-Version/V8-MT51F01-LF1V419;Cnt/GBR;Lan/eng) Presto/2.12.362 Version/12.11" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.362 }, - device: { type: television, manufacturer: Thomson, series: "Smart TV" }, - } - readable: "Opera Devices 3.4 on a television" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;Vendor/THOMSON;SW-Version/V8-MT51F01-LF1V419;Cnt/GBR;Lan/eng) Presto/2.12.362 Version/12.11" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.362 }, - device: { type: television, manufacturer: Thomson, series: "Smart TV" }, - } - readable: "Opera Devices 3.4 on a television" -- headers: "User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR+DRM; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.3.30552 (BANGOLUFSEN, A3, wired)" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: "Bang & Olufsen", - model: A3, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR+DRM; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.5.32855 (BANGOLUFSEN, A3, wired)" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: "Bang & Olufsen", - model: A3, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.5.33043 (BANGOLUFSEN, A3, wired)" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: "Bang & Olufsen", - model: A3, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux i686; HbbTV/1.1.1 (+PVR; BANGOLUFSEN; A3; ; ; ) CE-HTML/1.0 NETTV/4.3.9) Presto/2.12.407 Version/12.50 A3/1.0.5.33981 (BANGOLUFSEN, A3, wired)" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: "Bang & Olufsen", - model: A3, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.4 on a Bang & Olufsen A3 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux mips; ) Presto/2.12.407 Version/12.51 HbbTV/1.1.1 (; Vestel; S7720; 1.0; 1.0;)" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: { type: television, manufacturer: Vestel, model: S7720 }, - } - readable: "Opera Devices 3.4 on a Vestel S7720" -- headers: "User-Agent: Opera/9.80 (Linux mips; ) Presto/2.12.407 Version/12.51 MB95/3.3.6.k (MEDION, Si2157LG32, wired) HbbTV/1.1.1 (; MEDION; MB90; 3.3.6.k; 1.0;) CE-HTML/1.0 FXM-U2FsdGVkX1+oZew0140/QGladdDUZDDIO4+B71P3Onne0Z4OH8l/qzolGsZMPYPk-END" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Medion, - model: MB90, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.4 on a Medion MB90 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux mips; HbbTV/1.2.1 (; Freesat/1.0; hdr1000s; 1.0.0; 1.0.0; wired); ce-html/1.0) Presto/2.12.407 Version/12.50" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Humax, - model: HDR-1000S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.4 on a Humax HDR-1000S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux mips; HbbTV/1.2.1 (PVR; jcom; WA-7000; 1.0.0; 1.0.0; ); ce-html/1.0) Presto/2.12.407 Version/12.50" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: { type: television, manufacturer: jcom, model: WA-7000 }, - } - readable: "Opera Devices 3.4 on a jcom WA-7000" -- headers: "User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5477) Presto/2.12.362 Version/12.10 Model/Changhong-MST6328" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.362 }, - device: { type: television }, - } - readable: "Opera Devices 3.4 on a television" -- headers: "User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5547; HbbTV/1.1.1 (PVR; Humax; hms1000s; 1.0.0; 1.0.0; UX-PRISM--OP-NONE); ce-html/1.0) Presto/2.12.362 Version/12.10" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.362 }, - device: - { - type: television, - manufacturer: Humax, - model: HMS-1000S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.4 on a Humax HMS-1000S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5896; HbbTV/1.2.1 (PVR; freesat/1.0; hms1000sph2; 1.0.0; 1.0.0; UX-PRISM--OP-NONE); ce-html/1.0) Presto/2.12.407 Version/12.50 Model/Humax-TestingDevice" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Humax, - model: HMS-1000S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.4 on a Humax HMS-1000S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux mips; Opera TV Store/5921; HbbTV/1.2.1 (PVR; Humax; hms1000sph2; DESFAB 1.01.01; 1.0.0; wired; UX-PRISM--OP-NONE); ce-html/1.0) Presto/2.12.407 Version/12.50 Model/Humax-TestingDevice" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Humax, - model: HMS-1000S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.4 on a Humax HMS-1000S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux armv7l; HbbTV/1.2.1 (+PVR; Humax; hgs1000s; DESNAG 0.90.10; 1.0.0; wired; UX-PRISM--OP-SES; hdplusSmartTV/1.0 (NETRANGEMMH; )); ce-html/1.0) Presto/2.12.407 Version/12.50" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Humax, - model: HGS-1000S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.4 on a Humax HGS-1000S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux mips; Opera TV Store/6162; HbbTV/1.2.1 (; Altech UEC; PVR9600; ; ; )) Presto/2.12.407 Version/12.51 Model/AltechMultimedia-TestingDevice" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: { type: television, manufacturer: "Altech UEC", model: PVR9600 }, - } - readable: "Opera Devices 3.4 on an Altech UEC PVR9600" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:EUROFIX; S7700; 1.0; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: EUROFIX, model: S7700 }, - } - readable: "Opera Devices 3.2 on an EUROFIX S7700" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:OEM; MB90; 0.6.8; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, model: MB90 }, - } - readable: "Opera Devices 3.2 on a MB90" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:TELEFUNKEN; MB95; 1.0; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: Telefunken, model: MB95 }, - } - readable: "Opera Devices 3.2 on a Telefunken MB95" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; CUS:VESTEL; MB95; 3.1.8; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: Vestel, model: MB95 }, - } - readable: "Opera Devices 3.2 on a Vestel MB95" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; VESTEL; MB90; 1.0; 1.0;) CE-HTML/1.0 NETRANGEMMH iplayerV3" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: Vestel, model: MB90 }, - } - readable: "Opera Devices 3.2 on a Vestel MB90" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 HbbTV/1.1.1 (; Vestel; MB95; 1.0; 1.0;)" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: Vestel, model: MB95 }, - } - readable: "Opera Devices 3.2 on a Vestel MB95" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (+PVR+RTSP;Airties;Air7210;16999168;;); xx) Presto/2.10.287 Version/12.00" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: Airties, model: Air7210 }, - } - readable: "Opera Devices 3.2 on an Airties Air7210" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Humax; HM-9504HD; 0.01.06; 1.0; scrlgnnew; ); ce-html/1.0; xx) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Humax, - model: HM-9504HD, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.2 on a Humax HM-9504HD Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; HbbTV/1.1.1 (; Humax; hdr1000s; 1.0.0; 1.0.0; ); ce-html/1.0; xx) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Humax, - model: HDR-1000S, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.2 on a Humax HDR-1000S Digital Receiver" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; NETRANGEMMH;HbbTV/1.1.1;CE-HTML/1.0;TCL LF1V042; en) Presto/2.10.287 Version/12.00" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: - { - type: television, - manufacturer: TCL, - model: LF1V042, - series: "Smart TV", - }, - } - readable: "Opera Devices 3.2 on a TCL LF1V042 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (connect; 140223_0132_b6) CE-HTML/1.0 NETRANGEMMH" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: "Dune HD", model: Connect }, - } - readable: "Opera Devices 3.2 on a Dune HD Connect" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (polskytv__tv102; 130527_1328_b5) CE-HTML/1.0 NETRANGEMMH" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: "Dune HD", model: TV-102 }, - } - readable: "Opera Devices 3.2 on a Dune HD TV-102" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (tv102; 130515_2104_b6) CE-HTML/1.0 NETRANGEMMH" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: "Dune HD", model: TV-102 }, - } - readable: "Opera Devices 3.2 on a Dune HD TV-102" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; xx) Presto/2.10.287 Version/12.00 DuneHD/1.0 (tv303d; 130515_2104_b6) CE-HTML/1.0 NETRANGEMMH" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: "Dune HD", model: TV-303D }, - } - readable: "Opera Devices 3.2 on a Dune HD TV-303D" -- headers: "User-Agent: Opera/9.80 (Linux mn10300; U; HbbTV/1.1.1 (+PVR; Panasonic; DIGA M9031; 3.030; ; ); en) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: { type: television, manufacturer: Panasonic, series: Diga }, - } - readable: "Opera Devices 3.1 on a Panasonic Diga" -- headers: "User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (+PVR; Loewe; SL150; LOH/3.10;;) CE-HTML/1.0 Config(L:slv,CC:DEU); en) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: - { - type: television, - manufacturer: Loewe, - model: "Connect SL150", - series: "Smart TV", - }, - } - readable: "Opera Devices 3.2 on a Loewe Connect SL150 Smart TV" -- headers: "User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (; INTEK; VT-100 HD+;;;) hdplusSmartTV/1.0 (NETRANGEMMH;) Bee/3.2 CE-HTML/1.0; en) Presto/2.10.250 Version/11.60" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.250 }, - device: { type: television, manufacturer: INTEK, model: "VT-100 HD+" }, - } - readable: "Opera Devices 3.2 on an INTEK VT-100 HD+" -- headers: "User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat DigiCorder ISIO C; xx) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { - type: television, - manufacturer: TechniSat, - model: "DigiCorder ISIO C", - }, - } - readable: "Opera Devices 3.1 on a TechniSat DigiCorder ISIO C" -- headers: "User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat Digit ISIO C; xx) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { type: television, manufacturer: TechniSat, model: "Digit ISIO C" }, - } - readable: "Opera Devices 3.1 on a TechniSat Digit ISIO C" -- headers: "User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1 (;;;;;); CE-HTML; TechniSat Digit ISIO S; xx) Presto/2.9.167 Version/11.50" - result: - { - browser: { name: "Opera Devices", version: "3.1", type: browser }, - engine: { name: Presto, version: 2.9.167 }, - device: - { type: television, manufacturer: TechniSat, model: "Digit ISIO S" }, - } - readable: "Opera Devices 3.1 on a TechniSat Digit ISIO S" -- headers: "User-Agent: Opera/9.80 (Linux sh4; U; HbbTV/1.1.1(;;;;;); CE-HTML; TechniSat DIGIT ISIO S; xx) Presto/2.8.115 Version/11.10" - result: - { - browser: { name: "Opera Devices", version: "3.0", type: browser }, - engine: { name: Presto, version: 2.8.115 }, - device: - { type: television, manufacturer: TechniSat, model: "DIGIT ISIO S" }, - } - readable: "Opera Devices 3.0 on a TechniSat DIGIT ISIO S" -- headers: "User-Agent: Sraf/3.0 (Linux i686 ; U; HbbTV/1.1.1 (+PVR+DL;NEXUS; TV44; sw1.0) CE-HTML/1.0 Config(L:eng,CC:DEU); en/de)" - result: - { - browser: { name: "Seraphic Sraf", version: "3.0", type: browser }, - device: { type: television, manufacturer: NEXUS, model: TV44 }, - } - readable: "Seraphic Sraf 3.0 on a NEXUS TV44" -- headers: "User-Agent: XBMC/PRE-11.0 Git:20110623-62171b3 (iOS; 11.0.0 AppleTV2,1; http://www.xbmc.org)" - result: - { - browser: { name: XBMC, version: "11.0", type: "app:mediaplayer" }, - device: { type: television, manufacturer: Apple, model: AppleTV }, - } - readable: "XBMC 11.0 on an AppleTV" -- headers: "User-Agent: Mozilla/4.0 WebTV/2.8 (compatible; MSIE 4.0)" - result: - { - browser: { name: "Internet Explorer", version: "4.0", type: browser }, - device: { type: television, manufacturer: Microsoft, model: WebTV }, - } - readable: "Internet Explorer 4.0 on a Microsoft WebTV" -- headers: "User-Agent: Mozilla/5.0 (DTV; Media-Highway Evolution/CI.0220(08.02.03); like Gecko; TV) NetFront/4.2" - result: - { - browser: { name: NetFront, version: "4.2", type: browser }, - engine: { name: NetFront }, - device: { type: television, manufacturer: Cisco, model: MediaHighway }, - } - readable: "NetFront 4.2 on a Cisco MediaHighway" -- headers: "User-Agent: Mozilla/5.0 (DTV; Media-Highway Evolution/CI.0244(05.01.05); like Gecko; TV) NetFront/3.5" - result: - { - browser: { name: NetFront, version: "3.5", type: browser }, - engine: { name: NetFront }, - device: { type: television, manufacturer: Cisco, model: MediaHighway }, - } - readable: "NetFront 3.5 on a Cisco MediaHighway" -- headers: "User-Agent: opera/9.80, DI384 TKC/0.5.20(Sagemcom_Broadband_SAS,DI384_UHD_TKC,Wired)" - result: - { - browser: { name: "Opera Devices", type: browser }, - device: { type: television, manufacturer: Sagemcom, model: DI384 }, - } - readable: "Opera Devices on a Sagemcom DI384" -- headers: "User-Agent: opera/9.80, M350/0.1.46_flash (Sagemcom_Broadband_SAS,DIW350_TP,Wired)" - result: - { - browser: { name: "Opera Devices", type: browser }, - device: { type: television, manufacturer: Sagemcom, model: DIW350 }, - } - readable: "Opera Devices on a Sagemcom DIW350" -- headers: "User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; changhong TV) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19,STB/01.00.00.01(changhong,dvb,wired)" - result: - { - browser: { name: Chrome, version: "18", type: browser }, - engine: { name: Webkit, version: "535.19" }, - os: { name: Android, version: 4.1.1 }, - device: { type: television, manufacturer: Changhong, series: "Smart TV" }, - } - readable: "Chrome 18 on a Changhong Smart TV running Android 4.1.1" -- headers: "User-Agent: HbbTV/1.1.1 (+PVR; ADB; undefined-model-name; undefined-software-version; undefined-hardware-version; )" - result: { device: { type: television, manufacturer: ADB } } - readable: "an ADB" -- headers: "User-Agent: Opera/9.80 (Linux mips; HbbTV/1.3.1 (PVR; Humax; hdr4000t; UKTFAE 0.99.23; 1.0.0; wired;); ce-html/1.0) Presto/2.12.407 Version/12.50 FVC/1.0 (Humax; hdr4000t;) (Core 2.12.407)" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: - { - type: television, - manufacturer: Humax, - model: HDR-4000T, - series: "Digital Receiver", - }, - } - readable: "Opera Devices 3.4 on a Humax HDR-4000T Digital Receiver" -- headers: "User-Agent: Mozilla/5.0 (Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 OPR/22.0.1481.0 OMI/4.2.12.31.Vespa2.0 MB100/0.0.20.0 (OEM, Si2158LG32, wired) HbbTV/1.2.1 (; CUS:OEM; MB100; 0.0.20.0; 1.0;) CE-HTML/1.0 NETRANGEMMH ipl" - result: - { - browser: - { - name: "Opera Devices", - family: { name: Chrome, version: 35 }, - version: "4.2", - type: browser, - }, - engine: { name: Blink }, - device: - { - type: television, - manufacturer: OEM, - model: MB100, - series: "Smart TV", - }, - } - readable: "Opera Devices 4.2 on an OEM MB100 Smart TV" -- headers: "User-Agent: HbbTV/1.1.1 ( PVR RTSP;vendorName;modelName;3.2.0.25.05.devel;hw_v_1_1_1;) ANTGalio/3.2.0.25.05.devel.50029" - result: - { - browser: { name: "ANT Galio", version: 3.2.0, type: browser }, - device: { type: television }, - } - readable: "ANT Galio 3.2.0 on a television" -- headers: "User-Agent: Mozilla/5.0 (avdn/onyx.stb.2010; avui/tv; avvp/ssl; avrt/cehtml; avkb/pc,B:1572866; avst/off; Onyx Windows; U; Windows NT 5.1; xx; rv:1.8.1.13) CE-HTML/1.0 OreganMediaBrowser/4.25.2" - result: - { - browser: { name: "Oregan Browser", version: "4.25", type: browser }, - device: { type: television }, - } - readable: "Oregan Browser 4.25 on a television" -- headers: "User-Agent: Mozilla/5.0 (Unknown; Linux mips) AppleWebkit/536.7 (KHTML, like Gecko) WebShell/1.0.0.0 Safari/536.7 (avvp/ssl; avui/tv; avkb/pc; avrt/html5; avst/off) CE-HTML/1.0 OreganMediaBrowser" - result: - { - browser: { name: "Oregan Browser", type: browser }, - engine: { name: Webkit, version: "536.7" }, - device: { type: television }, - } - readable: "Oregan Browser on a television" -- headers: "User-Agent: Mozilla/5.0 (N; Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) AwoX Browser CE-HTML/1.0 ()/AwoX-Software:W37-2011 Safari/534.34" - result: - { - browser: { name: AwoX, type: browser }, - engine: { name: Webkit, version: "534.34" }, - device: { type: television }, - } - readable: "AwoX on a television" -- headers: "User-Agent: Mozilla/5.0 (N; Windows NT 6.1; WOW64) AppleWebKit/534.34 (KHTML, like Gecko) AwoX/1.0 Browser CE-HTML (HD_UIPROF MP3 MPEG_TS_SD_NA_T) - FLA Safari/534.34" - result: - { - browser: { name: AwoX, version: "1.0", type: browser }, - engine: { name: Webkit, version: "534.34" }, - device: { type: television }, - } - readable: "AwoX 1.0 on a television" -- headers: "User-Agent: Mozilla/5.0 (Windows; N; Windows NT 6.1; xx) AppleWebKit/533.3 (KHTML, like Gecko) AwoX Browser CE-HTML/1.0 ()/AwoX-Software:W37-2011 Safari/533.3" - result: - { - browser: { name: AwoX, type: browser }, - engine: { name: Webkit, version: "533.3" }, - device: { type: television }, - } - readable: "AwoX on a television" -- headers: "User-Agent: Mozilla/5.0 (Windows; N; Windows NT 6.1; xx) AppleWebKit/533.3 (KHTML, like Gecko) AwoX/1.0 Browser CE-HTML (HD_UIPROF MP3 MPEG_TS_SD_NA_T) - FLA Safari/533.3" - result: - { - browser: { name: AwoX, version: "1.0", type: browser }, - engine: { name: Webkit, version: "533.3" }, - device: { type: television }, - } - readable: "AwoX 1.0 on a television" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 UID(00:1C:A8:A0:2D:46/IP7600/OEM/3)+CE-HTML;MEM:LOW" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, model: IP7600 }, - } - readable: "Opera Devices 3.2 on an IP7600" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 UID(00:0a:2d:71:5b:b6/T7670/VESTEL/1.0)+CE-HTML" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: Vestel, model: T7670 }, - } - readable: "Opera Devices 3.2 on a Vestel T7670" -- headers: "User-Agent: Opera/9.80 (Linux mips; U; ; xx) Presto/2.10.287 Version/12.00 UID(00:09:DF:2B:67:C2/MB95/HOTEL/8.1.9.b)+CE-HTML;MEM:HIGH" - result: - { - browser: { name: "Opera Devices", version: "3.2", type: browser }, - engine: { name: Presto, version: 2.10.287 }, - device: { type: television, manufacturer: HOTEL, model: MB95 }, - } - readable: "Opera Devices 3.2 on a HOTEL MB95" -- headers: "User-Agent: Opera/9.80 Presto/2.12.407 Version/12.51 UID(00:09:df:33:55:78/S7830/VESTEL/332.8)+CE-HTML;MEM:HIGH" - result: - { - browser: { name: "Opera Devices", version: "3.4", type: browser }, - engine: { name: Presto, version: 2.12.407 }, - device: { type: television, manufacturer: Vestel, model: S7830 }, - } - readable: "Opera Devices 3.4 on a Vestel S7830" -- headers: "User-Agent: UID(00:09:df:01:c0:c1/MB70/TECHWOOD/0.11.14)+CE-HTML" - result: { device: { type: television, manufacturer: TECHWOOD, model: MB70 } } - readable: "a TECHWOOD MB70" -- headers: 'User-Agent: HbbTV/1.1.1 (;TechnoTrend Goerler/Kathrein;S-855/S-955/UFS-925;3.2.0.25.08;;) CE-HTML/1.0 (truetrue { device.setIdentification({ manufacturer: 'Sony', - model: 'Playstation 4', + model: 'PlayStation 4', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, }); expect(device.toObject()).equal({ manufacturer: 'Sony', - model: 'Playstation 4', + model: 'PlayStation 4', type: Constants.deviceType.GAMING, subtype: Constants.deviceSubType.CONSOLE, });