我试图识别一台PC来检查登录尝试的数量。
目前我正在使用代码来识别PC的IP地址。
它运行良好,但是如果你使用的是动态IP,你会遇到一个每两秒钟更改一次IP的机器人,它就不会工作。
这是当前的代码
<script type="application/javascript"> $(document).ready(function() { $.getJSON("http://www.telize.com/jsonip?callback=?", function(json) { myIP = json.ip; } ); }); </script>
我可以获取其他一些独特的地址或代码吗? (比如MAC地址,但我知道这是不允许的。)
答案 0 :(得分:2)
没有设备或浏览器可以返回唯一ID。这将是一种安全漏洞的手段。尽管如此,这是一个很好的问题,许多应用程序会创建一个存储在设备上的uuid,以便至少在其服务器上进行识别。
你就是这样做的
http://jsfiddle.net/dq5oy6w2/1/
var uuid=function(){
var u = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,
function(c) {
var r = Math.random() * 16 | 0,
v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
return u;
}
var getDeviceId = function(){
var current = window.localStorage.getItem("_DEVICEID_")
if (current) return current;
var id = uuid();
window.localStorage.setItem("_DEVICEID_",id);
return id;
}
document.getElementById("deviceid").innerHTML=getDeviceId();
这里我使用localStorage,它快速可靠,但用户可以在大多数设备上清除它。如果你想要更强大的东西,可以考虑使用indexedDB或WebSql - 在某些方面更难以清除。
由于你在服务器上有ip,你可以在你的服务器调用中传递这个id,如果你将这个uuid与IP一起存储在你的服务器上,你可以将IP作为后备:你可以有一个补充的方法客户,如果它失去了uuid。但这可能会限制一个IP上的多个设备。