我正在开发一个分析工具。我希望能够合理地识别独特的用户(或更可能是独特的机器)——某种程度的不准确是可以的。我需要同时支持低级设备(Android/iOS)和网络(JS/Flash),因为我在 Haxe 中构建客户端。(另一个需要注意的是,我不能使用特定于语言的 API。)
以前,我使用元组(ip, mac address)
来唯一标识用户。但是,在 Flash(和 Javascript)中,您无权访问 mac 地址。我突然想到我应该在服务器端存储和管理身份,也许使用 GUID。客户端将从服务器请求一个 GUID(或某种 ID),并将其用于来自同一设备的任何后续请求。
但是,我不确定 GUID 是否是个好主意。或者我是否应该用 IP 或其他信息来补充它。(我确实有权从客户端获取 IP。)
客户端的工作流程是:
- 检查存储的唯一标识符
- 如果存在,将其与所有请求一起发送
- 如果没有,请调用以请求唯一标识符并将其存储
- 在所有后续调用中发送唯一标识符
当然,这只会在每个设备上都是唯一的,并且可能有某种方法可以通过删除本地设备上的标识符来获得两个用户的误报。
在服务器端,它就像生成一个新的 GUID 并在用户请求唯一标识符时将其发送给用户一样简单。
这是一个好方法吗?有更好的方法吗?