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

如何在Laravel/JS中获取可作为设备ID的浏览器唯一标识?

网页端实现类似Android设备ID的用户唯一标识方案

下面是几种常用的实现思路,各有优劣,你可以根据需求选择:

  • 浏览器指纹
    这是目前最贴近设备ID效果的方案——通过收集浏览器的各类属性(比如User-Agent、屏幕分辨率、时区、支持的语言、插件列表、WebGL参数等),组合生成唯一标识。不需要存在用户设备上,每次访问都能重新计算,但要注意部分属性会随浏览器版本更新而变化,可能导致标识改变。
    简化实现示例:

    async function generateFingerprint() {
      const canvas = document.createElement('canvas');
      const ctx = canvas.getContext('2d');
      ctx.textBaseline = "top";
      ctx.font = "14px 'Arial'";
      ctx.fillStyle = "#f60";
      ctx.fillText("Browser Fingerprint", 2, 2);
      const canvasHash = canvas.toDataURL();
      
      const userAgent = navigator.userAgent;
      const screenRes = `${screen.width}x${screen.height}`;
      const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
      
      return btoa(`${canvasHash}|${userAgent}|${screenRes}|${timezone}`);
    }
    
  • 本地存储生成的标识
    用户首次访问时生成一个随机UUID,存在LocalStorage里,之后每次访问直接读取就行。缺点很明显:用户清了浏览器存储,这个标识就没了;而且不同浏览器、设备之间不共享。
    示例代码:

    function getLocalId() {
      let id = localStorage.getItem('unique_device_id');
      if (!id) {
        id = crypto.randomUUID();
        localStorage.setItem('unique_device_id', id);
      }
      return id;
    }
    
  • Cookie标识
    服务器端生成唯一ID,设置成Cookie(可以设较长有效期),客户端每次请求都会带上这个Cookie。缺点是用户能禁用或清除Cookie,跨域场景还得额外配置。
    服务器端简化示例(以Python Flask为例):

    from flask import Flask, make_response, request
    import uuid
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
      device_id = request.cookies.get('device_id')
      if not device_id:
        device_id = str(uuid.uuid4())
      resp = make_response("Hello World")
      resp.set_cookie('device_id', device_id, max_age=31536000) # 有效期1年
      return resp
    
  • 重要提醒
    没有任何方案能做到100%永久唯一——用户清数据、换浏览器/设备都会让标识失效。另外必须遵守隐私法规,比如GDPR,得提前告知用户你在收集这类数据,必要时要获取用户同意。

内容的提问来源于stack exchange,提问作者Siddhartha Choubey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 03:40:29