使用JQuery识别本地PC

时间:2014-08-14 07:13:27

标签: javascript jquery json

我试图识别一台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地址,但我知道这是不允许的。)

1 个答案:

答案 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上的多个设备。