使用JavaScript扫码时如何获取唯一的手机序列号?
关于扫码时获取手机唯一序列号的问题
网页端无法直接获取手机唯一序列号:现代浏览器基于隐私安全机制,严格限制网页访问设备硬件级别的唯一标识(比如IMEI、硬件序列号这类),
navigator.mediaDevices接口本身就不提供这类信息,你之前得到的变化值应该是设备的临时标识或会话级别的ID,这类ID会随浏览器版本、会话重置而改变,并非硬件唯一序列号。核心原因:所有主流浏览器(Chrome、Safari、Firefox等)都遵循隐私规范,禁止网页脚本访问设备硬件唯一标识,防止用户被无差别追踪。即便是原生APP,当前安卓10+、iOS系统也对这类权限做了严格限制,网页端更是完全没有权限触及硬件级唯一标识。
替代方案:如果需要区分设备,你可以自行生成一个唯一标识,通过
localStorage或IndexedDB存储在用户浏览器中。示例代码:// 生成并存储自定义设备标识 let deviceId = localStorage.getItem('custom_device_id'); if (!deviceId) { deviceId = crypto.randomUUID(); // 生成标准UUID localStorage.setItem('custom_device_id', deviceId); }这个标识会一直保存在用户浏览器中,除非用户主动清除缓存或重置浏览器,能满足大部分设备区分需求,但它和硬件序列号无关,只是浏览器层面的持久化唯一标识。
原生APP场景补充:如果你的扫码功能是在原生APP中实现,安卓需要申请
READ_PHONE_STATE权限(但安卓10+该权限已无法获取IMEI,仅能获取有限的设备信息);iOS则需要特殊权限配置,且苹果仅允许企业级应用申请这类权限,普通应用很难通过审核。
内容的提问来源于stack exchange,提问作者Josley
相关产品推荐
相关产品推荐

