通过Web请求从设备获取唯一的静态ID
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过Web请求从设备获取唯一的静态ID相关的知识,希望对你有一定的参考价值。
我有一个MVC应用程序,我想添加一些自定义统计数据。对于某些统计数据,拥有设备的唯一标识符会很不错。
例如,如果我有RSS订阅者的唯一ID,我可以监视RSS订阅者的活动数量。
我想知道是否有人知道Web请求中的任何内容可以用作IP以外的ID(这显然可以改变)。像设备ID之类的东西?
谢谢,
奥利弗
以下是一些需要考虑的方法。
HTTP Headers
您可以查看一些HTTP标头,可以帮助您识别唯一的用户或设备 - 有些会引用SIM卡,有些会引用设备。以下是我从Google Adsense Mobile用于帮助跟踪广告的标头中获取的列表:
x-dcmguid
x-up-subno
x-jphone-uid
x-em-uid
这些可能是一些非常受欢迎的,但会有更多供应商/设备特定的标题很受欢迎。您可以开始收集您的站点收到的所有标头,并计算您收到的每个标头的数量,并开始构建您自己的公共标头数据库。
Some other approaches
曲奇饼
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等)
简短的回答是他们不是任何(并且有充分的理由给予隐私问题)。更有用的答案是,这是你通常使用cookies做的事情。您设置了一个cookie,然后检查它以识别发出请求的特定浏览器。
当然,这绝不是万无一失的,因为用户可以拒绝cookie,删除它们,并且可以使用许多不同的浏览器(每个浏览器都有不同的cookie)。如果你是狡猾的(我不建议这样做)你可以使用Local Shared Object(Flash Cookie),因为这不太可能被删除。但是,在一天结束时,如果有人不想被跟踪,你就不能强迫他们这样做。
但是,一般来说,如果您想要分析和跟踪,那么请考虑使用像Google Analytics这样的第三方解决方案。这将为您提供有关访问者及其浏览习惯的非常详细的数据(尽管仍然依赖于cookie和javascript)。
除了知识产权
如果您的站点不需要任何类型的身份验证来提供此内容,那么IP地址是您唯一可以识别客户端的地方,甚至可能不是唯一的,例如您可能有两个客户端proxy =>在这种情况下无法区分这些请求。另一种可能性是使用cookie,但这种类型属于第一类=>身份验证。
没有标识符由浏览器提供,隐私问题使得任何供应商都不太可能实现这一点,现在至少。
你唯一的选择是某种形式的cookie。
对于RSS源,您可以想象每次呈现时在源URL中嵌入随机唯一ID,因此您可以知道检索该URL的人何时下载了您的Feed。但是,如果用户与其他人共享该URL,则您无法真正了解。
以上是关于通过Web请求从设备获取唯一的静态ID的主要内容,如果未能解决你的问题,请参考以下文章