此要求适用于收集封闭组织中连接到它的所有设备的信息的本地服务器。需要提取操作系统版本、软件版本、硬件属性等详细信息。
2 回答
您最好的选择是所有 HTTP 请求标头中的用户代理字符串。您可以通过以下方式访问它HttpServletRequest
:
String agent = request.getHeader("User-Agent");
它包含浏览器(客户端)名称、浏览器版本、操作系统、操作系统版本等信息。虽然不能保证这些信息是完整和有效的,但是你不能从服务器强制客户端发送完整和有效的信息本身。
例子
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/34.0.1847.131 Safari/537.36
这意味着(来源):
Mozilla:Mozilla产品切片。声称是基于 Mozilla 的用户代理,这仅适用于 Firefox 和 Netscape 等 Gecko 浏览器。对于所有其他用户代理,它意味着“Mozilla 兼容”。在现代浏览器中,这仅用于历史原因。已经没有真正的意义了
5.0: Mozilla 版本
Windows NT 6.1:操作系统:Windows 7
WOW64:(Windows-On-Windows 64 位)32 位应用程序正在 64 位处理器上运行
AppleWebKit: Web Kit 提供了一组核心类来在窗口中显示 Web 内容
537.36: Web 工具包构建
KHTML:由 KDE 项目开发的开源 HTML 布局引擎
像壁虎:像壁虎...
铬:名称:铬
34.0.1847.131:Chrome版本
Safari:基于 Safari
537.36: Safari 构建
用户代理字符串分析
关于分析用户代理字符串:寻找 Java 用户代理字符串解析器
useragentstring.com 也有一个API。
互联网上还有更多(谷歌)。
想象一下,如果任何网络服务器都可以请求有关连接到它的计算机的任意信息,这将意味着什么。有软件可以做到这一点,但它涉及客户端软件,至少是浏览器插件。
所以,就你提出这个问题的方式而言,我会说“不,这是不可能的”。但是,可以解决潜在问题,只是以与您的问题暗示您想去的方式不同的方式。这将如何工作超出了这里简单答案的范围。