Skip to content

Instantly share code, notes, and snippets.

@megaacheyounes
Last active April 18, 2024 09:53
Show Gist options
  • Save megaacheyounes/e1c7eec5c790e577db602381b8c50bfa to your computer and use it in GitHub Desktop.
Save megaacheyounes/e1c7eec5c790e577db602381b8c50bfa to your computer and use it in GitHub Desktop.
Simple example showing the detection of Huawei devices using the UserAgent
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Huawei device detection using user agent</title>
</head>
<body>
<h1 id="h1">Loading...</h1>
<script>
//you can find more device models on GSM Arena: https://www.gsmarena.com/huawei-phones-58.php
const huaweiDevicesRegex =
/ALP-|AMN-|ANA-|ANE-|ANG-|AQM-|ARS-|ART-|ATU-|BAC-|BLA-|BRQ-|CAG-|CAM-|CAN-|CAZ-|CDL-|CDY-|CLT-|CRO-|CUN-|DIG-|DRA-|DUA-|DUB-|DVC-|ELE-|ELS-|EML-|EVA-|EVR-|FIG-|FLA-|FRL-|GLK-|HMA-|HW-|HWI-|INE-|JAT-|JEF-|JER-|JKM-|JNY-|JSC-|LDN-|LIO-|LON-|LUA-|LYA-|LYO-|MAR-|MED-|MHA-|MLA-|MRD-|MYA-|NCE-|NEO-|NOH-|NOP-|OCE-|PAR-|PIC-|POT-|PPA-|PRA-|RNE-|SEA-|SLA-|SNE-|SPN-|STK-|TAH-|TAS-|TET-|TRT-|VCE-|VIE-|VKY-|VNS-|VOG-|VTR-|WAS-|WKG-|WLZ-|JAD-MLD-|RTE-|NAM-|NEN-|BAL-|JLN-|YAL|MGA-|FGD-|XYAO-|BON-|ALN-|ALT-|BRA-|DBY2-|STG-|MAO-|LEM-|GOA-|FOA-|MNA-|LNA-/i;
const isHuaweiDevice = huaweiDevicesRegex.test(navigator.userAgent);
document.getElementById("h1").innerText = isHuaweiDevice
? "Its a Huawei device"
: "Not Hauwei device!";
/** more examples **/
const hauweiBrowser =
" Mozilla/5.0 (Linux; Android 10; LIO-AL00; HMSCore 5.0.4.301) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 HuaweiBrowser/11.0.4.300 Mobile Safari/537.36";
const chromeBrowserOnHuaweiDevice =
"Mozilla/5.0 (Linux; Android 10; LIO-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.114 Mobile Safari/537.36";
const samsungBrowserUserAgent = "Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Mobile Safari/537.36"
const iosSafariUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X) AppleWebKit/603.1.23 (KHTML, like Gecko) Version/10.0 Mobile/14E5239e Safari/602.1"
//open the console to see the result
console.log("test huaweiBrowser:", "isHuaweiDevice =",huaweiDevicesRegex.test(hauweiBrowser))
console.log("test chromeBrowserOnHuaweiDevice:", "isHuaweiDevice =",huaweiDevicesRegex.test(chromeBrowserOnHuaweiDevice))
console.log("test samsungBrowserUserAgent:", "isHuaweiDevice =",huaweiDevicesRegex.test(samsungBrowserUserAgent))
console.log("test iosSafariUserAgent:", "isHuaweiDevice =",huaweiDevicesRegex.test(iosSafariUserAgent))
// huawei devices list
//device name => device models
const huaweiTablets = {
"Huawei MatePad Pro 12.6 (2021)": ["WGR-W09", "WGR-W19", "WGR-AN19"],
"Huawei MatePad Pro 10.8 (2021)": "MRR-W29",
//"Huawei MatePad Pro 10.8 5G (2019)", "SCMR-AL00",
"Huawei MatePad 10.8 (2020)": ["SCMR-W09", "SCMR-AL00"],
"Huawei MatePad 10.8 (2019)": [
"MRX-AL09",
"MRX-AL19",
"MRX-W09",
"MRX-W19",
],
"Huawei MatePad 5G": "BAH3-AN10",
"Huawei MatePad": ["BAH3-W09", "BAH3-AL00", "BAH3-L09"],
// "Huawei MatePad Pro 11 (2021)", "MRR-W29",
"Huawei Enjoy Tablet 2": "AGS3-W00D",
// Series M
//"Huawei MatePad M6 10.8", "MRX-W19",
"Huawei MatePad M6 Turbo 8.4": ["VRD-AL10", "VRD-W10", "VRD-W09"],
//"Huawei MatePad M6 8.4": "VRD-W09"
"Huawei MediaPad M5 Pro 10.8": ["CMR-AL19", "CMR-W19"],
"Huawei MediaPad M5 10.8": ["CMR-AL09", "CMR-W09"],
"Huawei MediaPad M5 Lite": ["BAH2-L09", "BAH2-W09", "BAH2-W19"],
"Huawei MediaPad M5 8": ["SHT-AL09", "SHT-W09"],
"Huawei MediaPad M5 Lite 8": "JDN2-L09",
"Huawei MediaPad M3 Lite 10": ["Bach-L09", "Bach-W09"],
"Huawei MediaPad M3 8.4": ["BTV-DL09", "BTV-W09"],
"Huawei MediaPad M3 Lite 8": ["CPN-AL00", "CPN-W09", "CPN-L09"],
"Huawei MediaPad M2 10.1": ["M2-A01W", "M2-A01L"],
"Huawei MediaPad M2 8.0": "M2-801L",
//"Huawei MediaPad M2 7.0", "FDR-A01L",
// Series T
"Huawei MatePad T 10S": ["AGS3-L09", "AGS3-W09"],
"Huawei MediaPad T5": ["AGS2-W09", "AGS2-W19", "AGS2-L09"],
"Huawei MediaPad T3 10": ["AGS-W09", "AGS-L09", "AGS-L03"],
"Huawei MediaPad T3 8.0": ["KOB-L09", "KOB-W09"],
"Huawei MediaPad T3 7.0": ["BG2-U01", "BG2-W09", "BG2-U03"],
"Huawei MediaPad T2 10.0 Pro": ["FDR-A01L", "FDR-A03L", "FDR-A04L"],
"Huawei MediaPad T2 Pro 7.0": ["PLE-701L", "PLE-703L"],
"Huawei MediaPad T2 7.0": ["BGO-DL09", "BGO-L03"],
"Huawei MediaPad T1 Plus 7.0": "T1-701u",
//"Huawei MediaPad T1 7.0", "T1-701ua",
"Huawei MediaPad T1 10": "T1-A21L",
//"Huawei MediaPad T1 8", "T1-A21L",
// Series X
"Huawei MediaPad X2": ["GEM-701L", "GEM-702L", "GEM-703L"],
// Old ones
"Huawei EE Eagle": ["Eagle Build", "Eagle_4G Build"],
"Huawei MediaPad 7": ["MediaPad 7 Youth", "MediaPad 7 Lite II"],
"Huawei MediaPad 10": "MediaPad 10 LINK",
"Huawei MediaPad M1": "MediaPad M1 8.0",
};
const huaweiPhones = {
// Y Series
"Huawei Y9s / P Smart Pro": "STK-L21",
"Huawei Y9s": ["STK-LX3", "STK-L22"],
"Huawei Y9a": ["FRL-L22", "FRL-L23"],
"Huawei Y9 (2019) / Y8s": "JKM-LX", // exp : 1,2,3 ,
"Huawei Y9 (2019)": ["JKM-AL00", "JKM-TL00"],
"Huawei Y9 (2018)": ["FLA-LX", "FLA-AL", "FLA-TL"], // exp : 1,2,3 ; 00,10,20 ; 10 ,
"Huawei Y8p": "AQM-LX1",
"Huawei Y7 Pro (2019)": "DUB-LX2",
"Huawei Y7 Pro (2019) / Enjoy 9": ["DUB-AL", "DUB-TL"], // exp : 00,20 ; 00 ,
"Huawei Y7 Prime (2018)": ["LDN-L21", "LDN-LX2", "LDN-TL10"],
"Huawei Y7 Prime (2017)": [
"TRT-L53",
"TRT-L21A",
"TRT-AL00",
"TRT-TL10",
"SLA-TL10",
"SLA-AL00",
],
// "Huawei Y7 Pro (2018)", "DUB-TL00", "" // Missing No https://www.gsmarena.com/huawei_y7_pro_(2018)-9188.php ,
"Huawei Y7 (2019)": "DUB-LX", // exp : 1,3 ,
"Huawei Y7 (2018)": ["LDN-L01", "LDN-LX3"],
"Huawei Y7 (2017)": "TRT-LX", // exp : 1,2,3 ,
"Huawei Y7p / P40 Lite E": ["ART-L28", "ART-L29"],
"Huawei Y7a / P Smart 2021": "PPA-LX", // 1-3 ,
"Huawei Y6s": ["JAT-LX3", "JAT-L29", "JAT-L41"], // exp : 1,3 ,
"Huawei Y6p": "MED-LX9",
"Huawei Y6 Pro (2019)": "MRD-LX2",
"Huawei Y6 Prime (2018)": ["ATU-L31", "ATU-L42"],
"Huawei Y6 (2019)": "MRD-LX", // exp : 1,3 ; https://www.gsmarena.com/huawei_y6_(2019)-9620.php ,
"Huawei Y6 (2018)": ["ATU-L11", "ATU-LX3", "ATU-L21", "ATU-L22"],
"Huawei Y6 (2017)": ["MYA-AL10", "MYA-TL10"],
"Huawei Y5 / Y6 (2017)": ["MYA-L03", "MYA-L02", "MYA-L23", "MYA-L22"],
"Huawei Y6 (2017)": ["MYA-L11", "MYA-L41"],
"Huawei Y6II Compact": ["LYO-L01", "LYO-L21", "CAM-L21"],
"Huawei Y5 Prime (2018)": [
"DRA-LX",
"DRA-L01",
"DRA-L21",
"DUA-LX2",
"DUA-L21",
"DRA-AL00",
"DRA-TL00",
"ATU-AL10",
], // exp : 2,3 ,
"Huawei Y5p": "DRA-LX9",
"Huawei Y5 Lite (2018)": "DRA-LX5",
"Huawei Y5 (2019)": "AMN-LX", // exp : 1,2,3,9 ,
"Huawei Y5 (2017)": ["MYA-L13", "MYA-U29"],
"Huawei Y5II": [
"CUN-U29",
"CUN-U19",
"CUN-U09",
"CUN-L33",
"CUN-L2",
"CUN-L0",
"LUA-U",
"LUA-L",
], // exp : LUA-U 9,3,2,03,02 ; CUN-L2 1-3 ; CUN-L0 1-3 ; LUA-L 01,02,03,13,22,23 ,
"Huawei Y3 (2018)": ["CAG-L", "CRO-L", "CRO-U"], // exp : CAG-L02,03,22,23 ; exp : CRO-L02,03,22,23 ; CRO-U00 ,
"Huawei Y Max": ["ARS-L22", "ARS-AL00"],
// P Smart Series ,
"Huawei P Smart 2020": "POT-LX1A",
"Huawei P Smart+ 2019": "POT-LX1T",
"Huawei P Smart 2019": [
"POT-LX1AF",
"POT-LX2J",
"POT-LX1RUA",
"POT-LX3",
],
"Huawei P Smart 2017": [
"FIG-LX1",
"FIG-LX2",
"FIG-LX3",
"FIG-LA1",
"FIG-TL10",
"FIG-AL10",
],
"Huawei P Smart Z": "STK-LX1",
// P Series ,
"Huawei P40 Pro+": ["ELS-N39", "ELS-AN10"],
"Huawei P40 Pro": ["ELS-NX9", "ELS-N04", "ELS-AN00", "ELS-TN00"],
//"Huawei Mate 40 RS Porsche Design", "NOP-AN00", "" ,
//"Huawei P40 Lite E", "ART-L29N", "" ,
"Huawei P40 Lite": ["CDY-NX9A", "JNY-LX1"],
"Huawei P40 Lite / Nova 7i": [
"JNY-L21A",
"JNY-L01A",
"JNY-L21B",
"JNY-L22A",
"JNY-L02A",
],
"Huawei P40 Lite / Nova 7i / P20 Lite (2019)": "JNY-L22B",
"Huawei P40": [
"ANA-AL00",
"ANA-AN00",
"ANA-TN00",
"ANA-NX9",
"ANA-LX4",
],
"Huawei P30 Pro": [
"VOG-L29",
"VOG-L09",
"VOG-AL00",
"VOG-TL00",
"VOG-L04",
"VOG-AL10",
"HW-02L",
],
"Huawei P30": ["ELE-L29", "ELE-L09", "ELE-AL00", "ELE-TL00", "ELE-L04"],
"Huawei P30 Lite New Edition": "MAR-LX2B",
"Huawei P30 Lite": [
"MAR-LX1M",
"MAR-AL00",
"MAR-TL00",
"MAR-LX2",
"MAR-LX1A",
"MAR-LX3A",
"MAR-LX1B",
"MAR-LX3Bm",
],
//"Huawei Nova 4e", "MAR-LX1B" // MAR-AL00 - https://www.gsmarena.com/huawei_nova_4e-9627.php ,
"Huawei P20 Pro": [
"CLT-L29",
"CLT-L09",
"CLT-L04",
"CLT-AL00",
"CLT-AL01",
"CLT-TL01",
], //"",C ,
"Huawei P20 Lite": ["ANE-LX", "ANE-L2", "ANE-AL00", "ANE-TL00"], // exp : 1-3 (x2) ,
"Huawei P20": ["EML-L09", "EML-L29", "EML-AL00", "EML-TL00"], //C ,
"Huawei P10 Plus": ["VKY-L09", "VKY-L29", "VKY-AL00"],
"Huawei P10 Lite": ["WAS-LX", "WAS-L03T", "WAS-AL00", "WAS-TL10"], // exp : 1-3 ,
"Huawei P10": ["VTR-L09", "VTR-L29", "VTR-AL00", "VTR-TL00"],
"Huawei P9 Lite Mini": ["SLA-L0", "SLA-L2"], // exp : 02,03,22,23 ,
"Huawei P9 Lite": [
"VNS-L62",
"VNS-L53",
"VNS-L52",
"VNS-L31",
"VNS-L2",
"VNS-TL00",
"VNS-DL00",
"VNS-AL00",
], // VNS-L2 1-3 ,
"Huawei P9 Plus": ["VIE-L09", "VIE-L29", "VIE-AL10"],
"Huawei P9": [
"EVA-L09",
"EVA-L19",
"EVA-L29",
"EVA-AL10",
"EVA-AL00",
"EVA-DL00",
"EVA-TL00",
],
"Huawei P8 Lite": [
"PRA-AL00",
"PRA-TL10",
"PRA-TL20",
"PRA-LA1",
"PRA-LX1",
"PRA-L21",
"PRA-L32",
], // exp : PRA-LX 1-3 ,
// G Series ,
"Huawei G9 Plus": ["MLA-UL00", "MLA-TL10"],
// Mate Series ,
"Huawei Mate 40 Pro+": "NOP-AN00",
"Huawei Mate 40 Pro": ["NOH-NX9", "NOH-AN00"],
"Huawei Mate 40E": "OCE-AN50",
"Huawei Mate 40": "OCE-AN10",
"Huawei Mate 30 RS Porsche Design": "LIO-AN00P",
"Huawei Mate 30E Pro 5G": "LIO-AN00", //00m ,
"Huawei Mate 30 Pro 5G": ["LIO-N29", "LIO-AL10", "LIO-TL10"],
"Huawei Mate 30 Pro": ["LIO-L09", "LIO-L29", "LIO-AL00", "LIO-TL00"],
"Huawei Mate 30 5G": ["TAS-AN00", "TAS-TN00"],
"Huawei Mate 30": ["TAS-L09", "TAS-L29", "TAS-AL00", "TAS-TL00"],
"Huawei Mate 20X 5G": ["EVR-N29", "EVR-AN00"],
"Huawei Mate 20X": ["EVR-L29", "EVR-AL00", "EVR-TL00"],
"Huawei Mate 20 RS Porsche Design": "LYA-AL00P",
"Huawei Mate 20 Pro": [
"LYA-L09",
"LYA-L29",
"LYA-AL00",
"LYA-AL10",
"LYA-TL00",
"LYA-L0C",
],
"Huawei Mate 20 Lite": ["SNE-AL00", "SNE-LX"], // exp : SNE-LX 1-3 ,
//"Huawei Mate 20 Lite", "INE-LX2" ,
"Huawei Mate 20": [
"HMA-L29",
"HMA-L09",
"HMA-LX9",
"HMA-AL00",
"HMA-TL00",
],
"Huawei Mate 10 Pro": ["BLA-A09", "BLA-L09", "BLA-L29", "BLA-AL00"],
//"Huawei Mate 10 Porsche", "BLA-A09" // missing no https://www.gsmarena.com/huawei_mate_10_porsche_design-8899.php ,
"Huawei Mate 10 Lite": ["RNE-L0", "RNE-L11", "RNE-L2", "RNE-AL00"], // exp : RNE-L0 1-3 ; RNE-L2 1-3 ,
"Huawei Mate 10": ["ALP-L09", "ALP-L29", "ALP-AL00", "ALP-TL00"],
// "Huawei Mate 9 Porsche Design", "LON-L29" ,
"Huawei Mate 9 Pro": ["LON-L29", "LON-AL00"],
"Huawei Mate 9": ["MHA-L09", "MHA-L29", "MHA-AL00"],
"Huawei Mate RS Porsche Design": ["NEO-L29", "NEO-AL00"],
"Huawei Mate XS": "TAH-N29m",
"Huawei Mate X": "TAH-AN00",
"Huawei Mate X2": "TET-AN00",
// Nova Series ,
"Huawei Nova 8 Pro": "BRQ-AN00",
"Huawei Nova 8 5G": "ANG-AN00",
"Huawei Nova 8 SE": "JSC-AN00",
"Huawei Nova 7 SE": ["CDL-AN50", "CDY-AN00", "CDY-NX9B"],
"Huawei Nova 7 Pro 5G": "JER-AN10",
"Huawei Nova 7 5G": ["JEF-AN00", "JEF-NX9", "JEF-AN20"],
"Huawei Nova 7i": "JNY-LX2",
"Huawei Nova 6 SE": ["JNY-AL10", "JNY-TL10"],
"Huawei Nova 6 5G": ["WLZ-AN00", "WLZ-TN00"],
"Huawei Nova 6": ["WLZ-AL10", "WLZ-TL10"],
"Huawei Nova 5z": ["SPN-AL00", "SPN-TL00"],
//"Huawei Nova 5i Pro", "SPN-AL00", "" ,
"Huawei Nova 5t": ["YAL-L21", "YAL-L61", "YAL-L71"],
"Huawei Nova 5i": ["GLK-LX", "GLK-AL00", "GLK-TL00"], // experimental 1, 1U, 2, 3 ,
"Huawei Nova 5 Pro": ["SEA-AL10", "SEA-TL10"],
"Huawei Nova 5": ["SEA-AL00", "SEA-TL00"],
"Huawei Nova 4": ["VCE-AL00", "VCE-TL00", "VCE-L22"],
"Huawei Nova 3i": ["INE-LX", "INE-AL00", "INE-TL00"], // 1-2 gros bazar : https://www.gsmarena.com/huawei_nova_3i-9632.php ,
"Huawei Nova 3": [
"PAR-AL00",
"PAR-LX1",
"PAR-LX9",
"PAR-TL20",
"PAR-TL00",
],
"Huawei Nova 2s": ["HWI-AL00", "HWI-TL00"],
"Huawei Nova 2 Plus": ["BAC-L03", "BAC-L2", "BAC-AL00"], // BAC-L2 1-3 ,
"Huawei Nova 2": ["PIC-LX9", "PIC-AL00", "PIC-TL00"],
"Huawei Nova Plus": ["MLA-L0", "MLA-L1", "MLA-AL10"], // exp : MLA-L0 1-3 ; MLA-L1 1-3 ,
"Huawei Nova": ["CAN-L0", "CAN-L1", "CAZ-AL10", "CAZ-TL10"], // exp : CAN-L0 1-3 ; CAN-L1 1-3 ,
// Enjoy Series ,
"Huawei Enjoy 20 Plus 5G": "FRL-AN00", // FRL-AN00a ,
"Huawei Enjoy 20 SE": "PPA-AL20",
"Huawei Enjoy 20 Pro": "DVC-AN20",
"Huawei Enjoy 20 5G": "WKG-AN00",
"Huawei Enjoy 10s": ["AQM-AL00", "AQM-TL00"],
"Huawei Enjoy 10 Plus": ["STK-AL00", "STK-TL00"],
"Huawei Enjoy 10": ["ART-TL00", "ART-AL00"],
"Huawei Enjoy 9s": ["POT-AL00", "POT-TL00"],
"Huawei Enjoy 9e": ["MRD-AL00", "MRD-TL00"],
"Huawei Enjoy 6s": [
"DIG-L01",
"DIG-L03",
"DIG-L21",
"DIG-L23",
"DIG-AL00",
"DIG-TL10",
],
"Huawei Enjoy 6": ["NCE-AL10", "NCE-TL10", "NCE-AL00", "NCE-TL00"],
"Huawei Enjoy Z 5G": "DVC-AN00",
//new models
"Huawei Nova 9 SE":"JLN-L",
"Huawei P50 Pro":["JAD-AL50", "JAD-LX9"],
"Huawei P50 Pocket":["BAL-AL00", "BAL-L49"],
"Huawei nova Y60":["WKG-LX9", "Wukong-L29A"],
"Huawei Enjoy 20e":"MLD-AL10",
"Huawei nova 9 Pro":"RTE-AL00",
"Huawei nova 9":[ "NAM-AL00", "NAM-LX9"],
"Huawei nova 8i":["NEN-L22", "NEN-LX1"]
};
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment