我正在尝试识别一台 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 地址,但我知道这是不允许的。)
最佳答案
没有设备或浏览器可以返回唯一的 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,并将 IP 作为后备,如果你将这个 uuid 和 IP 一起存储在你的服务器上:你可以有一种方法来补充客户端,如果它丢失了 uuid。但这可能会限制一个 IP 上的多个设备。
关于javascript - 使用 JQuery 识别本地 PC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25302113/