js检测是否时虚拟机

 //检测
        detectVM: function () {
           var userAgent = navigator.userAgent;
            var hardwareConcurrency = navigator.hardwareConcurrency || 1;
            var maxTouchPoints = navigator.maxTouchPoints || 0;
            // 增加更多的虚拟机标识符
            if (userAgent.includes('VirtualBox') || userAgent.includes('VMware')) {
                return true; // 用户代理字符串中包含虚拟机的信息
            }
            // 更准确地检测硬件并发性和最大触摸点数
            if (hardwareConcurrency < 4 && maxTouchPoints < 5) {
                return true; // 硬件指纹信息表明可能是虚拟机环境
            }
            var canvas = document.createElement('canvas');
            var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');
            // 如果WebGL上下文存在,则进一步检查渲染器信息
            if (gl && gl instanceof WebGLRenderingContext) {
                var debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
                // 如果调试信息存在,则进一步检查渲染器字符串
                if (debugInfo) {
                    var renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
                    if (renderer.indexOf('llvmpipe') > -1 || renderer.indexOf('Mesa') > -1) {
                        return true; // 可能在虚拟机中运行
                    }
                }
            }
            // 使用更准确的方法检测iOS和Android模拟器
            if (navigator.platform.includes('Mac') && userAgent.includes('iPhone') ||
                navigator.platform.includes('Android') && userAgent.includes('Linux')) {
                return /(simulator|x86_64)/.test(userAgent); // 如果User Agent中包含"simulator"或"x86_64"则表示为模拟器
            }
            return false; // 以上检测都未能确定在虚拟机中运行
        },
        detectMobile: function () {
            const ua = navigator.userAgent.toLowerCase();
            return /mobile|android|iphone|ipad|phone/i.test(ua);
        },

你可能感兴趣的:(JavaScript,jq,前端,javascript,开发语言,ecmascript)