代码之家  ›  专栏  ›  技术社区  ›  Pierre

是否可以从移动设备获取唯一的标识号?

  •  24
  • Pierre  · 技术社区  · 14 年前

    我目前正在开发移动设备的web应用程序,我想知道是否每个设备都有某种可以通过浏览器检测到的唯一id号。

    目的是存储此号码,以便识别已访问过网站的用户。

    5 回复  |  直到 14 年前
        1
  •  36
  •   Pierre    14 年前

    经过进一步的研究,答案是:不,现在不可能从浏览器中获取移动设备id号。。。

    我发现的一个解决方案是生成一个“唯一”的数字(在我的例子中,我使用的是php,所以我使用session\u id()数字与rand()函数生成的数字混合,它最终是一个非常大的数字,几乎不会出现两次……),然后将它存储在一个永不过期的cookie中。

    这不是一个完美的解决方案,因为它不会工作,如果cookies被禁用或如果用户清除他的cookies,但实际上在使用它有时现在,它是相当好的工作,移动设备大多有cookies启用,用户似乎不常清除它们。。。

    此外(取决于你的应用程序),如果你存储一封电子邮件或用户名,然后将其与这个“唯一”的号码关联到数据库中,你甚至可以恢复某人的身份,并通过再次询问他的用户名或电子邮件来存储一个新的cookie。。。

    希望这能帮助一些人!

        2
  •  4
  •   Guido    5 年前

    Sam Greenhalgh刚刚找到了一种通过“超级Cookie”设置设备ID的方法:

    http://www.radicalresearch.co.uk/lab/hstssupercookies

        3
  •  3
  •   Roy    4 年前

    虽然是“实验性的”, MDN Web Docs

    MediaDeviceInfo接口的deviceId只读属性 并在会话间持久化。别人是猜不到的 应用程序,并且对调用应用程序的来源是唯一的。它 当用户清除cookies时重置。对于私人浏览 所使用的不同标识符不会在会话间持久化。

    var deviceID = MediaDeviceInfo.deviceId
    
        4
  •  2
  •   Aaron    9 年前

    我知道这是旧的-但我发现了这一点,并想分享我的想法对OP的下一个最好的事情使用GUID类型的数字。

    除非你需要一个巨大的不可猜测的标识符的安全性,否则服务器创建一个简单的计数器更有意义,例如从~100开始,对于每个还没有你的cookie的访问者,使用max(counter)+1来创建他们的新cookie。

    尽管你提到了这一点,而且这是真的,但同样重要的是要注意,任何人输入不可靠的数据,例如。anon@anon.com 可能会加载另一个用户的历史记录。i、 在你的情况下-一个全新的用户anon@anon.com 不会看到介绍页面。

        5
  •  0
  •   fravelgue    14 年前

        6
  •  0
  •   leDamien    13 年前

    我正在做一些类似的事情,但对于一个HTML本地页面,它将ID存储在本地存储中,并最终更新到服务器: -以毫秒表示日期 -然后用随机数替换前导数(愚蠢的希望限制数字的大小) 不知何故,我认为手机更可能准时。