如何根据浏览器特征识别访问者?

时间:2011-05-19 15:20:39

标签: javascript

我正在制作一个简单的应用程序,用户可以对项目进行评分。

我想让应用程序非常易于使用,并希望避免登录,即使这意味着评级不太准确。

我发现这篇文章基于浏览器特征来识别用户: http://www.mediapost.com/publications/?fa=Articles.showArticle&art_aid=128563

如何在JS / Node.js中实现类似的东西?

5 个答案:

答案 0 :(得分:15)

您可以使用Cookie,而不是根据可能有或没有的浏览器特征做很多诡计。浏览器可能会随时间更改/升级。在任何一种情况下,您都无法避免浏览器更改导致新用户。但是,将通过浏览器升级来维护cookie。只需将cookie设置为某个(半)唯一值(例如包括毫秒+ IP地址的时间),您就可以全部设置。如果您有这么多用户,(半)唯一值存在问题,那么无论如何您都将重新构建您的网站(并且可能有一组人为您工作)。

答案 1 :(得分:5)

如果由于某种原因你想避免使用cookies,你可以使用PHP获取客户端的IP地址:

<?php
echo ' Client IP: ';
if ( isset($_SERVER["REMOTE_ADDR"]) )    {
    echo '' . $_SERVER["REMOTE_ADDR"] . ' ';
} else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )    {
    echo '' . $_SERVER["HTTP_X_FORWARDED_FOR"] . ' ';
} else if ( isset($_SERVER["HTTP_CLIENT_IP"]) )    {
    echo '' . $_SERVER["HTTP_CLIENT_IP"] . ' ';
}
?> 

如果IP地址不存档,您可以添加一个要求输入用户名的功能,并将新IP与旧用户名等关联起来。当然,Cookie工作得更好:)

另一种选择,比cookies更容易localStorage

为客户提供UUID:

localStorage.setItem('user',UUID);

获取客户端的UUID:

localStorage.getItem('user');

这比使用cookie要好一些,例如在Firefox中(根据MDC):

  • DOM存储可以通过“工具 - &gt;清除最近历史记录 - &gt;清除 饼干“当时间范围是”一切“(通过 nsICookieManager ::的removeAll)
    • 但不是在指定了另一个时间范围时:(错误527667)
    • 未显示在工具中 - &gt;选项 - &gt;隐私 - &gt;删除个人 cookies(bug 506692)
  • DOM存储未通过工具清除 - &gt;选项 - &gt;高级 - &gt; 网络 - &gt;离线数据 - &gt;现在清楚。
  • 未显示在“工具 - &gt;选项 - &gt;高级 - &gt;网络 - &gt;中 脱机数据“列表,除非该站点也使用脱机缓存。如果 该站点确实出现在该列表中,其DOM存储数据被删除 单击“删除”按钮时,以及脱机缓存。

但它仅适用于HTML 5。

答案 2 :(得分:2)

我同意evan使用cookies更容易做到。

如果你想写类似的东西,你需要从服务器和浏览器(如ip,浏览器,flash,java,cookies ......)获取数据:加权这些数据,创建变化规则,如浏览器升级闪存升级,这将增加或减少权重,而不是创建神经元神经网络,收集大量的训练数据和教你的网络。 (你可以采取不使用神经网络的其他方法)

这是一个不错的项目,但似乎就像使用坦克或战舰来杀死鼠标

我认为使用简单的Cookie和此浏览器特征收集之间的区别大约是10%,所以请选择Cookie。

答案 3 :(得分:2)

你可以看看这里: http://www.w3schools.com/js/js_browser.asp

但我强烈建议您使用Cookie。 另请注意,用户可能会修改Cookie。 如果可以 - 只需使用类似PHP $ _SESSION

的内容

答案 4 :(得分:2)

我会在js中寻找特定的对象检测而不是浏览器嗅探... check this link out