我目前正在研究移动设备网络应用程序,我想知道是否每种设备都有某种可以通过浏览器检测到的唯一ID号。
目的是存储此号码,以便识别已访问过该网站的人。
我正在使用蓝牙很多,当你检测到一个设备时,你可以存储某种mac地址,而我正在使用它作为Id编号,所以这是我的问题,是否有我可以使用的通用ID号从浏览器中检测到......?
感谢。
答案 0 :(得分:30)
经过进一步研究后,答案是:不,现在不可能从浏览器中获取移动设备ID号...
我找到的解决方案是生成一个“唯一”数字(在我的情况下,我使用php,所以我使用了session_id()编号与rand()函数生成的数字混合,它最终是一个相当的很难发生两次的大数字...)然后将它存储在一个永不过期的cookie中。
这不是一个完美的解决方案,因为如果禁用cookie或者用户清除cookie,它将无法工作,但实际上现在有时使用它后,事实证明它运行良好,移动设备大多数都有cookie启用,用户似乎不经常清除它们......
另外(取决于您的应用程序)如果您存储电子邮件或用户名然后将其与此“唯一”号码关联到数据库中,您甚至可以通过询问他的用户名或电子邮件来恢复某人的身份并存储新的cookie再次...
希望这会对某些人有所帮助!
答案 1 :(得分:4)
Sam Greenhalgh刚刚找到了一种通过" Super Cookie"设置设备ID的方法:
http://www.radicalresearch.co.uk/lab/hstssupercookies (断开的链接)
答案 2 :(得分:3)
这是一个老问题。希望这对将来的人有所帮助。
虽然是“实验性的”,但 MDN Web Docs 现在有一种获取设备 ID 的方法。目前支持除 IE 之外的所有浏览器。这个解决方案似乎总比没有好 - 因为 ID 不可靠,我必须用一些自定义的解决方法来填补空白。
<块引用>MediaDeviceInfo 接口的 deviceId 只读属性 返回一个 DOMString ,它是所代表设备的标识符 并且跨会话持久化。这是其他人无法猜测的 应用程序,并且对于调用应用程序的来源是唯一的。它 当用户清除 cookie 时重置。对于隐私浏览,一个 使用了不同的标识符,不会跨会话保留。
var deviceID = MediaDeviceInfo.deviceId
答案 3 :(得分:2)
我知道这已经过时了 - 但我发现了这一点,并希望使用GUID类型编号分享我对OP的下一个最好的事情。
除非你需要一个巨大的不可猜测的标识符的安全性 - 服务器创建一个简单的计数器更有意义 - 例如从~100开始,并且对于每个尚未使用你的cookie的访问者来说( counter)+ 1来创建他们的新cookie。
现在,您可以为客户端和服务器存储一个非常短且100%的唯一标识符。
此外,正如您所提到的,存储电子邮件地址也很有用,理论上电子邮件地址应该是唯一的 - 不仅如此 - 它是跨浏览器兼容的。即他们的cookie存在于一个浏览器上 - 但是当他们进入新的浏览器时,如果他们输入相同的电子邮件地址,您可以映射到他们的原始连接配置文件。
虽然你提到这一点及其真实性,但同样重要的是要注意任何人放入狡猾的数据,例如: anon@anon.com可能会加载其他用户历史记录。即在您的情况下 - 放入anon@anon.com的全新用户将无法查看介绍页面。
答案 4 :(得分:0)
在某些国家/地区,当消费者浏览WAP网关时,运营商会在http标头中包含一些ID。有一些聚合器带有用于识别消费者的API,通常它只适用于消费者浏览WAP网关的情况。
答案 5 :(得分:0)
我正在做类似的事情,但是对于本地存储中的存储ID的HTML本地页面,最终更新到服务器: - 在epoch ms中取日期 - 然后用随机数替换前导号码(愚蠢希望限制号码的大小) 不知怎的,我认为移动更有可能准时。