Last active
March 4, 2025 09:13
-
-
Save megaacheyounes/e1c7eec5c790e577db602381b8c50bfa to your computer and use it in GitHub Desktop.
Simple example showing the detection of Huawei devices using the UserAgent
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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