如何在不使用activex的情况下获取客户端的mac地址

时间:2011-06-30 10:22:56

标签: activex client unique

我的主要目的是为每台使用网站的机器提供一个唯一的ID,一种方法是查找客户端的mac地址,但不使用activex,也不能使用cookie分配ID,因为cookie可以删除而不是也使用最后修改日期方法,所以任何关于我如何分配唯一ID的想法,谢谢

2 个答案:

答案 0 :(得分:1)

可能能够使用java applet执行此操作,但HTML和Web浏览器策略经过精心设计,以阻止您做这样的事情,因为它将被视为主要的安全风险。如果没有activex控件(如果发现可能会被禁止向javascript提供此类个人信息,除非您真的已经仔细规划了安全性),或者至少需要一个Java applet,那么Mac地址肯定无法获取。用户授予它提升的权限。

大多数公司只是分配一个唯一的ID并将其存储在浏览器的cookie中。有FireBreath之类的技术可以轻松创建浏览器插件(activex控件和npapi插件),但是再一次 - 你所谈论的内容有可能是一个非常非常糟糕的主意,所以小心。

答案 1 :(得分:0)

我知道回复这篇文章已经太晚了..但是为了分享我的经验,我发布了我的答案。(我也面临同样的问题)

我使用了applet并将其部署在客户端的计算机上。

import java.applet.Applet;
import java.applet.Applet;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;


public class app extends Applet{

public String macAddr="";

public void init()
 {
    try
        {
            System.out.println("Start");
            InetAddress ip = InetAddress.getLocalHost();
            System.out.println((new StringBuilder("Current IP address:"+ip.toString())));
            NetworkInterface network = NetworkInterface.getByInetAddress(ip);
            byte mac[] = network.getHardwareAddress();
            System.out.println("mac : "+mac.toString());
            System.out.print("Current MAC address : ");
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < mac.length; i++)
                sb.append(String.format("%02X%s", new Object[] {
                        Byte.valueOf(mac[i]), i >= mac.length - 1 ? "" : "-"
                }));

            System.out.println(sb.toString());
            macAddr=String.valueOf(sb);
            System.out.println("okay good");

        }
     catch(SocketException e)

        {
            macAddr=e.toString();
            e.printStackTrace();
            System.out.println("not good");
        }
        catch (Exception e) {
            macAddr=e.toString();
            e.printStackTrace();
            System.out.println("bad good");
        }    
     }
       }

制作这个小程序后我遇到的问题是[当我在本地机器上运行它时工作正常(RUN AS APPLET)],它没有在服务器上工作`` 为此你必须签署你的jar

Keytool -genkey -alias signFiles -keystore compstore -keypass KEYPASS -dname“cn = XYZ”-storepass KEY -validity 125000 jarsigner -keystore compstore -storepass PASS -keypass KEYPASS appletname.jar signFiles

之后它工作但不顺利..每次我运行它。浏览器要求许可。 这不好。 我希望我的经验有所帮助

相关问题