java 代码如何获取用户的硬件信息,就是判断用户是否用同一个手机或者同一台电脑或者同一个ipad访问了

2024-11-08 08:51:21
推荐回答(4个)
回答1:

不可以,这属于用户隐私信息,再说如果可以的话,那我们的电脑你不觉得很危险吗?随便一个网页都可以看到你的硬件信息,很危险的。我原来遇到过用户想这样搞,最后跟用户谈,不能实现,修改成cookie验证了,像韩家_四少发的代码,只可以在特定环境下使用,还需要考虑网络状态,而且nbtstat -a是windows 下面的命令,根本不可行。

回答2:

你的意思是获取Mac地址么?
先获取ip通过request.getRemoteAddr();
通过ip获取mac
public String getMACAddress(String ipAddress) {
String str = "", strMAC = "", macAddress = "";
try {
Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress);
InputStreamReader ir = new InputStreamReader(pp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
for (int i = 1; i < 100; i++) {
str = input.readLine();
if (str != null) {
if (str.indexOf("MAC Address") > 1) {
strMAC = str.substring(str.indexOf("MAC Address") + 14,
str.length());
break;
}
}
}
} catch (IOException ex) {
return "Can't Get MAC Address!";
}
//
if (strMAC.length() < 17) {
return "Error!";
}

macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)
+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)
+ ":" + strMAC.substring(12, 14) + ":"
+ strMAC.substring(15, 17);
//
return macAddress;
}

回答3:

当用户登录进来时,把用户信息放入session中,对用户的每次行为都用一个计数器来记住,以此来达到限制用户操作的次数。

回答4:

public static List getAllMacAddresses()
{
List addresses = new ArrayList();

StringBuffer sb = new StringBuffer();
try
{
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while(networkInterfaces.hasMoreElements())
{
NetworkInterface netInterface = networkInterfaces.nextElement();
byte[] mac = netInterface.getHardwareAddress();
if(mac != null && mac.length != 0)
{
sb.delete(0, sb.length());
for(byte b : mac)
{
String hexString = Integer.toHexString(b & 0xFF);
sb.append((hexString.length() == 1) ? "0" + hexString : hexString);
}
addresses.add(sb.toString());
}
}
}
catch(SocketException e)
{
e.printStackTrace();
}

return addresses;
}

这段代码我测过,可以获取mac