跟踪使用动态IP地址的移动客户端的最佳方式

时间:2011-06-20 09:56:23

标签: java android mobile tracking

我需要跟踪移动应用的用户。当使用wifi连接它们时,它们具有永不改变的静态IP地址 - 这使得跟踪变得容易。但是,如果他们使用移动网络,他们的IP地址会因每次请求而改变,这使得跟踪变得困难。

我有兴趣了解其他人如何处理此问题,并在这种情况下实施了合适的跟踪策略?

编辑:解决方案需要尽可能安全,以防止用户绕过跟踪。

由于

2 个答案:

答案 0 :(得分:2)

我假设通过跟踪你的意思是网络服务知道两个不同的请求来自同一个用户?

如果是这样,那么您只需要使用标准的网络工具:会话和cookie。

让您的应用在启动时生成唯一ID,并将此唯一ID作为Cookie或变量发送给您对Web服务的每个请求。这样你就可以真正唯一地识别它们。

另请注意:Wifi可以在网络内部为您提供静态IP地址,而不是在Internet上连接设备。您可以检索的外部(公共)IP是您的路由器之一。大多数时候和大多数互联网提供商一样,如果由于某种原因连接失败,路由器将有一个新的IP受其影响。除非两个人使用相同的路由器连接到您的Web服务,否则它们将具有相同的公共IP地址。

编辑:更安全的常用方法是大多数网站使用的方式:用于验证用户的UID是由第一次请求时由Web服务器(而不是应用程序)生成的/会话认证。此UID从Web服务器传递到应用程序,然后随每次请求重新发送。这将“会话窃取”限制为会话持续时间。 不发送数据库中不存在的UID或UID的请求是非法的。

编辑2 :OP在下面的评论中添加了他真正想要的是限制单个用户在特定时间内发出的请求数量。实际上,这意味着唯一地识别设备。 一种方法是首次启动时在设备上计算UID并将其存储在设备上。然后使用每个请求将此UID发送到Web服务。 Web服务将负责限制特定UID的命中数。

注意:小心如何生成UID。 Android为Android_ID,但有时会知道它会随着时间的推移而变化。这家伙好像找到了not to easily spoofable Device UID

答案 1 :(得分:0)

您应该可以使用设备ID: http://developer.android.com/reference/android/telephony/TelephonyManager.html#getDeviceId()

编辑:或者在应用首次启动时创建UUID,此处提供更多建议和信息: http://android-developers.blogspot.com/2011/03/identifying-app-installations.html