操作系统版本可以通过
navigator.userAgent进行获取,可以得到操作系统的版本以及相关位数,使用的浏览器
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
关于是否使用了虚拟机这方面可能通过WebGL API 进行探测,当处于虚拟机时Unmasked Renderer会显示Google SwiftShader
https://browserleaks.com/webgl
也可以通过打印screen.widht以及height查看是否是奇怪的值来辨别是否处于虚拟机之中,Window窗口处于虚拟机运行时屏幕的分辨率宽度会随着窗口而改变,而这种行为检测通常不会引起用户的注意
https://blog.jeremiahgrossman.com/2009/08/web-pages-detecting-virtualized.html
查询相关信息也有提到可以根据浏览器的频率等方式进行计算并通过辅助表的形式查看性能之间的差距问题来判断是否是虚拟机,但是感觉过于超前,所以忽略不计,相关参考链接如下,但是由于个人能力问题不保证真实性
https://www.securitygalore.com/site3/vmd1-advisory
信息表示也可以通过WebRTC的数据进行检测,但这部分我没有测试成功,所以没办法考察。
关于网络状况可以通过请求服务的时候收集客户端的IP以及相关特征信息,确定用户的大概所处位置,同时可以根据TLS指纹以及客户端指纹等综合起来再无登录保持的情况下识别为同一用户。
参考资料
https://stackoverflow.com/questions/5643014/can-the-accessed-website-detect-if-im-using-a-virtualized-like-machine-vmware