请教一个问题: Java 后端如何获取 mac 地址?
- 0次
- 2021-06-03 22:45:08
- idczone
需求:给计算机设备唯一标识,通过后端能获取到 m国外服务器ac 地址吗?
或者有什么更好的解决方案吗?
这句话打搜索框里:java get mac address
客户端获取了发回来
只有运行在客户端的代码才有可能获取到客户的辨识符,客户端运行的系统也可以使用各种方法拒绝不给你或者给你假的数据
所有技术问题都可以用工程问题解决。比如这种情况下让客户拍网卡标签并签名。
手动狗头
这问题太可怕了……
https://lmbtfy.cn/s/XhtdVMn8Ls
不可行
肯定是要在客户端获取,正常请求又没有携带相应的信息,你怎么可能获取得到
自己要是开发个客户端让用户安装,
客户端预装,or 特殊处理,不然不如照片+ocr
提交照片可太骚了
只能客户端获取,网络信息的只能获取到局域网内的机器信息,ie 借助 ActiveX 可以拿到,遇到过类型需求,说实话 mac 地址就算拿到了也不一定真实
mac 地址不能作为计算机唯一标识。
Internet 使用逻辑地址通信,只有在客户端所在子网中才可以获取到物理地址
可以用信息指纹 https://github.com/fingerprintjs/fingerprintjs
mac 地址实际上允许重复,只要不在同一个网络空间就不会造成问题。
1. 对 00-15 的虚拟机 MAC 地址不重复性没有任何保证或期望
2. CISCO 只确保合法途径购买的同区域机器的 MAC 不重复,这个期望弱到你大可相信在亚洲销售的一台交换机和北美销售的一台交换机。具有相同的 MAC 地址
3. MAC 地址可以被伪造,只要有 ring0 权限?
指纹也可以伪造,不是 “唯一标识”,而是 “辅助追踪标识”
似乎目前 Tor 浏览器的一个策略就是,放行指纹收集,但随着你使用的线路变动,所有已知的指纹信息源也会变动。
MAC 地址肯定不行吧。。别人搞出来就没想过往网络层上面用,你还要在应用层玩么。。
设备唯一标识?说说具体业务吧,不然又是个 X-Y 问题
服务端如何获得客户端地址?顺着网线传送??
netty 4.x 版本有 MacAddressUtil
public static void main(String[] args) {
String mac = MacAddressUtil.formatAddress(MacAddressUtil.defaultMachineId());
System.out.println(mac);
}
public static void main(String[] args) {
String mac = MacAddressUtil.formatAddress(MacAddressUtil.bestAvailableMac());
System.out.println(mac);
}
用这个吧