El entorno web no es "adecuado" para lo que quieres hacer. Los navegadores tienen cada vez más restricciones por motivos obvios.
La opción más simple y efectiva es que montes un formulario donde sea el usuario el que te ponga la información que necesites (cpu, ram, etc).
Si se tratara de un entorno real no me plantearía otra opción.
Puesto que es un proyecto, vamos a darte más opciones...
La opción más cutre jamás pensada... javascript.
spoilerLo primero es que para que funcione debes usar protocolo https o estar en una máquina local... pero si cumples eso, por javascript puedes recuperar fácilmente la cpu/ram/gpu, y con eso deberías tener suficiente para lo que quieres. Teniendo los valores por javascript, enviarlo al servidor no debería darte ningún problema.
Te dejo un ejemplo:
<html>
<head>
</head>
<body>
<table>
<tr><td>CPU Cores:</td><td id="cpu"></td></tr>
<tr><td>RAM:</td><td id="ram"></td></tr>
<tr><td>GPU:</td><td id="gpu"></td></tr>
</table>
<script>
var canvas = document.createElement("canvas");
var webgl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
var debugInfo = webgl.getExtension("webgl_debug_renderer_info");
var gpu = webgl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
document.getElementById("cpu").innerHTML = navigator.hardwareConcurrency;
document.getElementById("ram").innerHTML = navigator.deviceMemory + 'GB';
document.getElementById("gpu").innerHTML = gpu;
</script>
</body>
</html>
La mejor opción... ActiveX
spoilerRemarco que aunque sea la mejor opción, no es que sea una buena opción... pero vamos allá.
docu.
Ahí te explica como crear un activeX y registrarlo para que lo considere seguro. Si el navegador está configurado para ejecutar activex, sería lo más transparente.
La opción fea, pero buena... lo que propone #2.
Dando la opción al usuario para que se descargue un script y lo ejecute en su máquina, por sesiones puedes relacionar la información que recibes con el usuario que toca.
Yo personalmente no me complicaría y metería un formulario donde sea el usuario el que entre los datos... puedes alegar temas de seguridad (que es totalmente cierto).
Si la opción de ejecutar un script no es una opción sino una obligación, tira por la opción que te comenta #2.
Del resto de opciones que he comentado: corred insensatos!!! (de verdad, como curiosidad está bien, pero no me planteo usarlo ni en un entorno de pruebas xD).