V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ruoyuan
V2EX  ›  程序员

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

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

    设备唯一标识?说说具体业务吧,不然又是个 X-Y 问题
    beichenhpy
        19
    beichenhpy   8 天前
    服务端如何获得客户端地址?顺着网线传送??
    arloor
        20
    arloor   8 天前
    netty 4.x 版本有 MacAddressUtil

    public static void main(String[] args) {
    String mac = MacAddressUtil.formatAddress(MacAddressUtil.defaultMachineId());
    System.out.println(mac);
    }
    arloor
        21
    arloor   8 天前
    public static void main(String[] args) {
    String mac = MacAddressUtil.formatAddress(MacAddressUtil.bestAvailableMac());
    System.out.println(mac);
    }

    用这个吧
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2166 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 17ms · UTC 13:36 · PVG 21:36 · LAX 06:36 · JFK 09:36
    ♥ Do have faith in what you're doing.