我正在制作一个简单的应用程序,用户可以对项目进行评分。
我想让应用程序非常易于使用,并希望避免登录,即使这意味着评级不太准确。
我发现这篇文章基于浏览器特征来识别用户: http://www.mediapost.com/publications/?fa=Articles.showArticle&art_aid=128563
如何在JS / Node.js中实现类似的东西?
答案 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):
但它仅适用于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