【问题标题】:Identify Http Request Devices识别 Http 请求设备
【发布时间】:2020-03-15 00:07:48
【问题描述】:

我正在尝试制作一个 Spring Web 应用程序,它将被多个设备(例如 Android 手机和 iPhone)请求。我需要识别发送请求的设备,以便在稍后阶段识别它。我如何在 java 中实现这一点?

示例场景:用户使用三星 A7 登录,而另一个用户使用 iPhone 8 登录。

我需要跟踪和存储设备的操作。我想我需要设备的用户每次都登录才能显示此相关设备执行的所有操作。我需要在这里识别每个请求的设备,还需要向用户显示所有登录的设备。

我试过用mac地址来实现这个,但我觉得效果不好。

当在 cmd "ipconfig/all" 上键入时,会出现以下列表,但是应该在所有这些列表中选择哪个物理地址??!!!!

我尝试使用此 java 代码获取 mac 地址,但发生 NullPointerException

InetAddress address = InetAddress.getByName(HttpRequestHelper.getRemoteAddress());

NetworkInterface ni = NetworkInterface.getByInetAddress(address);

byte[] mac = ni.getHardwareAddress();

【问题讨论】:

  • 您好,请向我们提供您自己已经尝试过的任何内容。您是否努力搜索任何相关信息?你发现了什么,没有发现什么?你到底想达到什么目的?请参阅创建minimal reproducible example 了解更多信息。 “识别请求设备以稍后识别它”是什么意思?请详细说明。
  • @Barrosy 谢谢你的回复,我编辑了我的问题可以帮助我吗?
  • 首先,您似乎决定在java语言中使用spring框架。到目前为止,为了解决这个问题,你做了什么尝试?请分享任何 java 代码。你是说你试图使用mac地址,你是怎么做到的?如果您可以分享您尝试过的任何东西,我可能会提供帮助。也许我可以看出是什么阻止了你继续这项工作。
  • @Barrosy 好的,我已经编辑了我的问题并准确添加了我的问题
  • 您提供的图像中显示的信息列表仅显示了本地计算机可检测到的网络设备列表,因为这些设备安装在本地计算机上。如果你想得到你是supposed的MAC地址,请输入getmac /v /fo list。要在 Java 中获取 MAC 地址,您可以通过调用 NetworkInterface 类来获取它,如 here 所述。您可以使用.getHardwareAddress() 方法来获取它。

标签: java spring http web networking


【解决方案1】:

您是在使用原生移动应用还是您的只是一个网站?

唯一的方法是识别用户代理标头以了解设备,您可以使用例如设备令牌推送地址,该地址主要是唯一的 id。 如果您只是一个网站,您可以使用生成的 id 或随机存储设备,保存到您的数据库和浏览器 cookie 中

【讨论】:

  • 但是cookie也可以从浏览器中删除
  • 谷歌如何识别你用来登录的设备?
  • Google 从本机应用程序和用户代理中识别设备。在设备列表中,如果通过浏览器登录,则每个设备在客户端 cookie 中保存不同的令牌,如果在本机应用程序中连接,则在应用程序中保存。因此他们从保存的令牌中识别出设备唯一
猜你喜欢
  • 2015-04-04
  • 2023-03-11
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 2019-01-22
  • 1970-01-01
相关资源
最近更新 更多