通过Web请求从设备获取唯一的静态ID

时间:2011-06-22 19:34:58

标签: asp.net asp.net-mvc-3 c#-4.0

我有一个MVC应用程序,我想添加一些自定义统计信息。对于某些统计数据,最好为设备设置唯一标识符。

例如,如果我有RSS订阅者的唯一ID,我可以监视RSS订阅者的活动数量。

我想知道是否有人知道Web请求中的任何内容可以用作IP以外的ID(显然可以更改)。像设备ID之类的东西?

谢谢,

奥利弗

4 个答案:

答案 0 :(得分:8)

以下是一些需要考虑的方法。

HTTP标头

您可以查看一些可以帮助您识别唯一用户或设备的HTTP标头 - 有些会引用SIM卡,有些会引用该设备。 以下是我从Google Adsense Mobile用于帮助跟踪广告的标题中获得的列表:

  • x-dcmguid
  • x-up-subno
  • x-jphone-uid
  • x-em-uid

这些可能是一些非常受欢迎的,但会有更多供应商/设备特定的标题很受欢迎。您可以开始收集您的网站收到的所有标题,并计算您收到的每个标题的数量,并开始构建您自己的公共标题数据库。

其他一些方法

缓存

Cookie可以在请求代理(例如浏览器)上设置,并在代理再次访问时返回。有关方法列表,请查看Ever Cookie - 几乎是永久性的cookie - 它使用以下方法之一,其中至少有一种方法可以使用:

 - Standard HTTP Cookies 
 - Local Shared Objects (Flash Cookies)
 - Silverlight Isolated Storage 
 - Storing cookies in RGB values of auto-generated, force-cached 
    PNGs using HTML5 Canvas tag to read pixels (cookies) back out
 - Storing cookies in Web History 
 - Storing cookies in HTTP ETags 
 - Storing cookies in Web cache 
 - window.name caching
 - Internet Explorer userData storage
 - HTML5 Session Storage 
 - HTML5 Local Storage 
 - HTML5 Global Storage 
 - HTML5 Database Storage via SQLite

组合

也可以提出自己的方案,例如:获取user-agent标头,其他一些标头,例如acceptx-fowarded-for,并且ip会创建一个唯一的哈希值,以便更准确地确定代理的唯一性。

many different mobile headers as seen here。我也点击了我的一个页面并在各个设备中存储移动标题,以用于我自己的目的http://wap.defza.com/ua/ua.txt(也是ua1.txt,ua2.txt等)

答案 1 :(得分:3)

简短的回答是他们不是(并且出于隐私问题而有充分理由)。更有用的答案是,这是您通常使用cookies执行的操作。您设置了一个cookie,然后检查它以识别发出请求的特定浏览器。

当然,这绝不是万无一失的,因为用户可以拒绝cookie,删除它们,并且可以使用许多不同的浏览器(每个浏览器都有不同的cookie)。如果你是狡猾的(我不建议这样做)你可以使用Local Shared Object(Flash Cookie),因为这不太可能被删除。但是,在一天结束时,如果有人不想被跟踪,你就不能强迫他们这样做。

但是,一般情况下,如果您需要分析和跟踪,请考虑使用第三方解决方案,例如Google Analytics。这将为您提供有关访问者及其浏览习惯的非常详细的数据(尽管仍然依赖于cookie和javascript)。

答案 2 :(得分:1)

  

除了IP

如果您的网站不需要任何形式的身份验证来提供此内容,那么IP地址是您唯一可以识别客户端的地方,甚至可能不是唯一的,例如您可能有两个客户端在同一个代理后面=>在这种情况下无法区分这些请求。另一种可能性是使用cookie,但这种类型属于第一类=>认证

答案 3 :(得分:1)

浏览器没有提供标识符,隐私问题使得任何供应商都不太可能实现这一点,现在至少。

你唯一的选择是某种形式的cookie。

对于RSS Feed,您可以想象每次呈现时都会在Feed网址中嵌入随机唯一ID,因此您可以知道检索该网址的人何时下载了您的Feed。但是,如果用户与其他人共享该URL,则您无法真正了解。