V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ruoyuan
V2EX  ›  程序员

请教一个问题: Java 后端如何获取 mac 地址?

  •  
  •   ruoyuan · 2021-04-07 23:09:14 +08:00 · 4089 次点击
    这是一个创建于 1360 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:给计算机设备唯一标识,通过后端能获取到 mac 地址吗?
    或者有什么更好的解决方案吗?
    21 条回复    2021-04-09 16:46:45 +08:00
    chendy
        1
    chendy  
       2021-04-07 23:14:29 +08:00
    这句话打搜索框里:java get mac address
    a22271001
        2
    a22271001  
       2021-04-07 23:14:34 +08:00 via Android
    客户端获取了发回来
    ch2
        3
    ch2  
       2021-04-07 23:41:45 +08:00 via iPhone
    只有运行在客户端的代码才有可能获取到客户的辨识符,客户端运行的系统也可以使用各种方法拒绝不给你或者给你假的数据
    nvkou
        4
    nvkou  
       2021-04-08 00:32:15 +08:00 via Android   ❤️ 1
    所有技术问题都可以用工程问题解决。比如这种情况下让客户拍网卡标签并签名。
    手动狗头
    wd
        5
    wd  
       2021-04-08 08:27:56 +08:00 via iPhone   ❤️ 1
    这问题太可怕了……
    gitdoit
        6
    gitdoit  
       2021-04-08 08:41:23 +08:00
    iyangyuan
        7
    iyangyuan  
       2021-04-08 09:02:19 +08:00
    不可行
    ily433664
        8
    ily433664  
       2021-04-08 09:05:12 +08:00
    肯定是要在客户端获取,正常请求又没有携带相应的信息,你怎么可能获取得到
    kingfalse
        9
    kingfalse  
       2021-04-08 09:27:29 +08:00 via Android
    自己要是开发个客户端让用户安装,
    luozic
        10
    luozic  
       2021-04-08 10:18:28 +08:00
    客户端预装,or 特殊处理,不然不如照片+ocr
    sonyxperia
        11
    sonyxperia  
       2021-04-08 10:32:49 +08:00 via Android
    提交照片可太骚了
    Asuka0947
        12
    Asuka0947  
       2021-04-08 11:01:34 +08:00
    只能客户端获取,网络信息的只能获取到局域网内的机器信息,ie 借助 ActiveX 可以拿到,遇到过类型需求,说实话 mac 地址就算拿到了也不一定真实
    guyeu
        13
    guyeu  
       2021-04-08 11:08:24 +08:00
    mac 地址不能作为计算机唯一标识。
    bleepbloop
        14
    bleepbloop  
       2021-04-08 11:34:24 +08:00
    Internet 使用逻辑地址通信,只有在客户端所在子网中才可以获取到物理地址
    xiaoxinshiwo
        15
    xiaoxinshiwo  
       2021-04-08 13:55:43 +08:00
    no1xsyzy
        16
    no1xsyzy  
       2021-04-08 14:54:39 +08:00
    mac 地址实际上允许重复,只要不在同一个网络空间就不会造成问题。
    1. 对 00-15 的虚拟机 MAC 地址不重复性没有任何保证或期望
    2. CISCO 只确保合法途径购买的同区域机器的 MAC 不重复,这个期望弱到你大可相信在亚洲销售的一台交换机和北美销售的一台交换机。具有相同的 MAC 地址
    3. MAC 地址可以被伪造,只要有 ring0 权限?
    no1xsyzy
        17
    no1xsyzy  
       2021-04-08 14:59:21 +08:00
    @xiaoxinshiwo 指纹也可以伪造,不是 “唯一标识”,而是 “辅助追踪标识”
    似乎目前 Tor 浏览器的一个策略就是,放行指纹收集,但随着你使用的线路变动,所有已知的指纹信息源也会变动。
    raaaaaar
        18
    raaaaaar  
       2021-04-08 19:51:10 +08:00
    MAC 地址肯定不行吧。。别人搞出来就没想过往网络层上面用,你还要在应用层玩么。。

    设备唯一标识?说说具体业务吧,不然又是个 X-Y 问题
    uselessVisitor
        19
    uselessVisitor  
       2021-04-09 09:13:02 +08:00
    服务端如何获得客户端地址?顺着网线传送??
    arloor
        20
    arloor  
       2021-04-09 16:44:40 +08:00
    netty 4.x 版本有 MacAddressUtil

    public static void main(String[] args) {
    String mac = MacAddressUtil.formatAddress(MacAddressUtil.defaultMachineId());
    System.out.println(mac);
    }
    arloor
        21
    arloor  
       2021-04-09 16:46:45 +08:00
    public static void main(String[] args) {
    String mac = MacAddressUtil.formatAddress(MacAddressUtil.bestAvailableMac());
    System.out.println(mac);
    }

    用这个吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3066 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:13 · PVG 08:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.