2011-06-20 41 views
2

我需要跟踪我的移动应用程序的用户。当他们使用wifi连接时,他们有一个永不改变的静态IP地址 - 这使得跟踪变得容易。但是,如果他们使用他们的移动网络,他们的IP地址会随着每次请求而改变,这使得跟踪变得困难。跟踪使用动态IP地址的移动客户端的最佳方式

我很感兴趣,看看其他人可能如何解决这个问题,并在这种情况下实施合适的跟踪策略?

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

感谢

回答

2

我想通过跟踪你的意思是一个WebService知道两个型动物的请求都来自同一用户?

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

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

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

EDIT:的是更安全的常用方法是通过大多数网站所使用的一个:用于验证用户的UID是由web服务器(而不是应用程序)上的一个第一请求/认证生成会话。这个UID从网络服务器传递到应用程序,然后重新发送每个请求。这限制了会话期间的“会话窃取”。 请求不发送数据库中不存在的UID或UID是非法的。

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

注意:请注意如何生成UID。 Android作为Android_ID,但它有时被称为空,并随时间而改变。这家伙似乎已经找到了一个not to easily spoofable Device UID

+0

你假设正确,我想跟踪来自同一用户的请求。此外,我需要一个“安全”的解决方案,防止用户绕过跟踪。我应该把它添加到原来的问题。 – Mylo

+0

好的,所以当用户向我的服务器发出请求时,我会返回一个带有响应的UID(并记录他的IP与UID?),我必须丢失一些东西,因为用户可以简单地更改其IP,以便随后生成请求一个新的UID? – Mylo

+0

我想我从一开始就误解了你的问题。也许你应该编辑你的问题,试图解释你在做什么。我以为你想在会话中跟踪用户,以确保他所做的只是影响帐户。但是现在您似乎正在寻找一种解决方案来跟踪应用程序生命周期的用户。请更具体地说明你正在尝试做什么。 – Yahel

0

您应该能够使用的设备ID:这里或创建一个UUID第一次应用程序启动,更多的建议和信息: http://developer.android.com/reference/android/telephony/TelephonyManager.html#getDeviceId()

编辑: http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

+0

设备ID需要READ_PHONE_STATE权限,我真的不想使用它。我想我可以使用UUID,但它可能很容易被欺骗。我可能应该添加到我原来的问题中,我还需要一个很难被用户绕过的解决方案。 – Mylo

+0

如果你知道所有设备都有wifi,我想你可以在可用时存储他们的mac地址。应用程序生成的UUID如何轻易被用户欺骗? –