wp_hardware_tracker/assets/tracker-dev.js
Hansjakob R. Florian 0771c54e6d
Update tracker-dev.js
2025-04-10 21:54:28 +08:00

82 lines
3.0 KiB
JavaScript

document.addEventListener('DOMContentLoaded', () => {
const collectData = async () => {
const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
let osName = 'unknown', osVersion = 'unknown';
if (navigator.userAgentData) {
try {
const data = await navigator.userAgentData.getHighEntropyValues([
'platform',
'platformVersion',
'architecture'
]);
osName = data.platform.toLowerCase();
osVersion = data.platformVersion;
if (osName === 'windows') {
const majorVer = parseInt(osVersion.split('.')[0]);
osVersion = majorVer >= 13 ? '11' : majorVer > 0 ? '10' : '8.1';
}
if (osName === 'macos') {
const macVersionMap = {
'13': 'Ventura', '12': 'Monterey',
'11': 'Big Sur', '10.15': 'Catalina'
};
osVersion = macVersionMap[osVersion.split('.')[0]] || osVersion;
}
} catch(e) {
// 错误静默处理
}
} else {
const ua = navigator.userAgent;
if (/Windows NT 10/.test(ua)) osName = 'windows', osVersion = '10';
if (/Mac OS X 10_15/.test(ua)) osName = 'macos', osVersion = 'Catalina';
if (/iPhone OS 16_/.test(ua)) osName = 'ios', osVersion = '16';
}
let cpuArch = 'unknown';
if (navigator.userAgentData?.architecture) {
cpuArch = navigator.userAgentData.architecture;
} else {
cpuArch = navigator.platform.includes('Win64') ? 'x64' :
/arm|aarch64/i.test(navigator.userAgent) ? 'arm' : 'x86';
}
let gpuVendor = 'unknown', gpuModel = 'unknown';
try {
const canvas = document.createElement('canvas');
const gl = canvas.getContext('webgl');
if (gl) {
const debugInfo = gl.getExtension('WEBGL_debug_renderer_info');
gpuVendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
gpuModel = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
}
} catch(e) {
// 错误静默处理
}
fetch(hardwareTrackerDev.ajax_url, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: new URLSearchParams({
action: 'hardware_tracker_dev',
security: hardwareTrackerDev.security,
os_name: osName,
os_version: osVersion,
cpu_arch: cpuArch,
cpu_cores: navigator.hardwareConcurrency || 0,
gpu_vendor: gpuVendor,
gpu_model: gpuModel,
timezone: timezone
})
});
};
setTimeout(collectData, 300);
// 延迟300ms错开稳定版
});