You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何获取可唯一标识用户设备的客户端特征

客户端设备唯一标识采集方案

你当前使用的$worker_ip = $request->IP();方法拿到的是用户网络的公网出口IP,同个WiFi下的所有设备共享同一个公网IP,确实无法区分独立设备。以下是几类可落地的采集维度,你可以根据业务场景选择组合使用:

无授权类:浏览器/设备环境指纹

这类特征不需要向用户申请权限,前端加载页面时即可自动采集,通过多特征组合哈希生成唯一设备ID,常见采集维度包括:

  • 基础环境属性:User-Agent信息、屏幕分辨率/色深、系统时区、默认语言、操作系统版本、CPU核心数、设备内存大小、触控支持情况
  • 硬件级差异特征:Canvas指纹(不同显卡、驱动、渲染引擎绘制同一张图形的输出结果存在微小差异)、WebGL指纹、音频处理指纹(不同音频硬件处理标准音频信号的输出差异)、系统已安装字体列表、浏览器支持的API集合
  • 网络层辅助特征:请求头排列顺序、TCP/IP栈特征、TLS握手指纹
    普通特征组合的指纹重合率约千分级,加入Canvas、WebGL这类强硬件特征后,重合率可降至百万分之一级别,适合纯网页场景的无感知识别。缺点是用户升级浏览器/系统、使用强力隐私插件时指纹可能发生变化。

主动写入类:本地持久化标识

这类方案是在用户首次访问时,生成一个随机UUID写入客户端本地存储,后续每次请求主动上报该ID,稳定性比纯指纹更高,常见存储方式:

  • 第一方Cookie:设置超长过期时间存储UUID,缺点是用户清理Cookie、开启隐私模式时会丢失
  • 前端本地存储:localStorage、IndexedDB、WebSQL、Cache API多端冗余存储,避免单一存储被清理后标识丢失
  • 协议层存储:利用HTTP ETag、Cache-Control缓存机制在协议层留存标识,用户常规清理浏览器数据时不容易被清除
    这类方案的缺点是用户主动清理全站数据、重装浏览器后标识会失效,属于你主动给设备下发的身份标记,不是设备原生特征。

高准确类:原生系统标识(仅App场景可用)

如果你有对应的移动端/桌面端独立App,可直接调用系统API获取设备级标识,识别准确率最高:

  • 安卓端:安卓10以下可采集IMEI/MEID,安卓10及以上版本推荐使用ANDROID_ID,也可结合主板、CPU等硬件信息自行生成唯一ID
  • iOS端:可采集IDFV(同开发者账号下的App共享,卸载重装不会失效),用户授权广告追踪权限后可获取IDFA
  • 桌面端:可采集主板序列号、CPU ID、网卡MAC地址等硬件信息组合生成ID
    这类标识除非用户刷机、恢复出厂设置,否则基本不会变化,缺点是纯网页场景无法获取,且需要向用户申请对应权限,符合合规要求才能采集。

注意:不存在100%永久不变的设备唯一标识,建议根据业务场景组合多维度特征生成设备ID,同时采集过程需要遵守《个人信息保护法》等合规要求,采集前明确告知用户信息用途,获得用户授权后再采集敏感信息。

内容的提问来源于stack exchange,提问作者Shady Hesham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:48:18