Member 10386063 Ответов: 1

Как получить идентификатор системного процессора на стороне клиента


Всем Привет,

У меня есть один сценарий одного пользователя входа в систему,мне нужен идентификатор системного процессора, и если система содержит несколько IP-адресов, как мы можем получить.


Спасибо,
Шьям

Что я уже пробовал:

<script type="text/javascript">
        /**
 * Get the user IP throught the webkitRTCPeerConnection
 * @param onNewIP {Function} listener function to expose the IP locally
 * @return undefined
 */
        function getUserIP(onNewIP) { //  onNewIp - your listener function for new IPs
            //compatibility for firefox and chrome
            var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
            var pc = new myPeerConnection({
                iceServers: []
            }),
            noop = function () { },
            localIPs = {},
            ipRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/g,
            key;

            function iterateIP(ip) {
                if (!localIPs[ip]) onNewIP(ip);
                localIPs[ip] = true;
            }

            //create a bogus data channel
            pc.createDataChannel("");

            // create offer and set local description
            pc.createOffer().then(function (sdp) {
                sdp.sdp.split('\n').forEach(function (line) {
                    if (line.indexOf('candidate') < 0) return;
                    line.match(ipRegex).forEach(iterateIP);
                });

                pc.setLocalDescription(sdp, noop, noop);
            }).catch(function (reason) {
                // An error occurred, so handle the failure to connect
            });

            //listen for candidate events
            pc.onicecandidate = function (ice) {
                if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return;
                ice.candidate.candidate.match(ipRegex).forEach(iterateIP);
            };
        }

        // Usage

        getUserIP(function (ip) {
            alert("Got IP! :" + ip);
        });

        function showMacAddress() {
            var obj = new ActiveXObject("WbemScripting.SWbemLocator");
            var s = obj.ConnectServer(".");
            var properties = s.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration");
            var e = new Enumerator(properties);
            var output;
            output = '<table border="0" cellPadding="5px" cellSpacing="1px" bgColor="#CCCCCC">';
            output = output + '<tr bgColor="#EAEAEA"><td>Caption</td><td>MACAddress</td></tr>';
            while (!e.atEnd()) {
                e.moveNext();
                var p = e.item();
                if (!p) continue;
                output = output + '<tr bgColor="#FFFFFF">';
                output = output + '<td>' + p.Caption; +'</td>';
                output = output + '<td>' + p.MACAddress + '</td>';
                output = output + '</tr>';
            }
            output = output + '</table>';
            document.getElementById("box").innerHTML = output;
            alert(output);
        }

</script>


Я попробовал этот код,он работает на одном системном ip-адресе ..

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Вы не.

Javascript, работающий в браузере, вообще не имеет доступа к системе. Кроме того, в большинстве систем ProcessorID по умолчанию выключен, и никто его не включает.

MAC - адреса не принесут вам никакой пользы, поскольку они не являются уникальными адресами для каждой системы.

В веб-приложении вы действительно не можете запретить несколько входов в систему из нескольких систем. Единственное, что вы можете отслеживать со стороны сервера, - это IP-адрес, с которого пришел запрос на вход. Даже в этом случае вы должны разрешить истечение срока действия логина, потому что пользователь может никогда не выйти из системы и просто закрыть браузер. Для вашей системы это означает разрешение нескольких Логинов, возможно, с разных IP-адресов.

IP-адреса также арендуются в большинстве сред. Они не назначаются машинам постоянно и могут время от времени меняться, особенно если машина была выключена в течение какого-либо периода времени.