我有一个MVC应用程序,我想添加一些自定义统计信息。对于某些统计数据,最好为设备设置唯一标识符。
例如,如果我有RSS订阅者的唯一ID,我可以监视RSS订阅者的活动数量。
我想知道是否有人知道Web请求中的任何内容可以用作IP以外的ID(显然可以更改)。像设备ID之类的东西?
谢谢,
奥利弗
答案 0 :(得分:8)
以下是一些需要考虑的方法。
您可以查看一些可以帮助您识别唯一用户或设备的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
标头,其他一些标头,例如accept
,x-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,则您无法真正了解。