programing

브라우저에서 클라이언트의 컴퓨터 이름을 읽으려면 어떻게 해야 합니까?

muds 2023. 6. 10. 09:49
반응형

브라우저에서 클라이언트의 컴퓨터 이름을 읽으려면 어떻게 해야 합니까?

브라우저에서 클라이언트의 컴퓨터 이름을 읽으려면 어떻게 해야 합니까?
JavaScript 및/또는 ASP.NET을 사용할 수 있습니까?

제가 인트라넷(IE 전용)의 내부 응용 프로그램에 대해 수행한 적이 있기 때문에 IE로 '가끔' 수행할 수 있습니다.다음을 시도합니다.

function GetComputerName() {
    try {
        var network = new ActiveXObject('WScript.Network');
        // Show a pop up if it works
        alert(network.computerName);
    }
    catch (e) { }
}

브라우저가 ActiveX 개체에 액세스할 수 있도록 IE에서 특정 보안 설정을 설정해야 할 수도 있고 그렇지 않을 수도 있습니다.

다음은 WScript에 대한 추가 정보 링크입니다.추가 정보

브라우저, 운영 체제, 화면 색상, 화면 해상도, 플래시 버전 및 Java 지원은 모두 JavaScript(및 몇 가지 이상)에서 감지할 수 있어야 합니다.그러나 컴퓨터 이름은 사용할 수 없습니다.

편집: 적어도 일부 브라우저에서는 가능하지 않습니다.

asp.net 을 사용하여 IP 주소를 얻은 다음 IP에서 역 DNS 조회를 수행하여 호스트 이름을 가져올 수 있습니다.

ASP.NET 개발자의 요리책에서...DNS 조회를 수행하는 중입니다.

Javascript로 사용자 컴퓨터 이름을 가져올 수 없습니다.브라우저 및 네트워크에 대한 모든 세부 정보를 얻을 수 있습니다.하지만 그 이상은 아닙니다.

누군가가 오늘 이전 질문 중 하나에서 대답한 것처럼.

저는 이미 당신의 웹사이트를 방문하는 것에 호의를 베풀었습니다. 아마도 저는 다시 돌아오거나 다른 친구들을 소개할 것입니다.제가 어디에 있는지, 어떤 OS, 브라우저, 화면 해상도를 사용하는지도 알려드렸습니다. 왜 속옷 색깔을 알고 싶으세요? ;-)

asp.net 을 통해서도 할 수 없습니다.

아래에 지정된 코드를 사용하여 Mozilla Firefox에서 클라이언트 컴퓨터 이름을 가져옵니다.

netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect' ); 

var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"]; 
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;

또한 동일한 코드 조각을 내선 번호로 입력할 수 있으며 웹 페이지에서 호출할 수 있습니다.

아래 샘플 코드를 찾아주세요.

확장 코드:

var myExtension = {
  myListener: function(evt) {

//netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect' ); 
var dnsComp = Components.classes["@mozilla.org/network/dns-service;1"]; 
var dnsSvc = dnsComp.getService(Components.interfaces.nsIDNSService);
var compName = dnsSvc.myHostName;
content.document.getElementById("compname").value = compName ;    
  }
}
document.addEventListener("MyExtensionEvent", function(e) { myExtension.myListener(e); }, false, true); //this event will raised from the webpage

웹 페이지 코드:

<html>
<body onload = "load()">
<script>
function showcomp()
{
alert("your computer name is " + document.getElementById("compname").value);
}
function load()
{ 
//var element = document.createElement("MyExtensionDataElement");
//element.setAttribute("attribute1", "foobar");
//element.setAttribute("attribute2", "hello world");
//document.documentElement.appendChild(element);
var evt = document.createEvent("Events");
evt.initEvent("MyExtensionEvent", true, false);
//element.dispatchEvent(evt);
document.getElementById("compname").dispatchEvent(evt); //this raises the MyExtensionEvent event , which assigns the client computer name to the hidden variable.
}
</script>
<form name="login_form" id="login_form">
<input type = "text" name = "txtname" id = "txtnamee" tabindex = "1"/>
<input type="hidden" name="compname" value="" id = "compname" />
<input type = "button" onclick = "showcomp()" tabindex = "2"/>

</form>
</body>
</html>

JavaScript는 컴퓨터 이름, 파일 시스템 및 기타 로컬 정보에 액세스할 수 없기 때문에 그렇게 할 방법이 없습니다.보안이 주요 목적입니다.

아니요 이 데이터는 노출되지 않습니다.사용할 수 있는 유일한 데이터는 HTTP 요청을 통해 노출되는 데이터이며, 여기에는 해당 OS 및 기타 정보가 포함될 수 있습니다.하지만 확실히 기계 이름은 아닙니다.

<html>
<body onload = "load()">
<script>
  function load(){ 

     try {
       var ax = new ActiveXObject("WScript.Network");
       alert('User: ' + ax.UserName );
       alert('Computer: ' + ax.ComputerName);
     }
     catch (e) {
       document.write('Permission to access computer name is denied' + '<br />');
     } 
  }
</script>
</body>
</html>

웹에 구문 분석할 정보가 있습니다.RTC 헤더.

var p = new window.RTCPeerConnection();
p.createDataChannel(null);
p.createOffer().then((d) => p.setLocalDescription(d))
p.onicecandidate = (e) => console.log(p.localDescription)

Kelsey의 업데이트 버전:

$(function GetInfo() {
    var network = new ActiveXObject('WScript.Network');
        alert('User ID : ' + network.UserName + '\nComputer Name : ' + network.ComputerName + '\nDomain Name : ' + network.UserDomain);
        document.getElementById('<%= currUserID.ClientID %>').value = network.UserName;
        document.getElementById('<%= currMachineName.ClientID %>').value = network.ComputerName;
        document.getElementById('<%= currMachineDOmain.ClientID %>').value = network.UserDomain;
});

값을 저장하려면 다음 컨트롤을 추가합니다.

<asp:HiddenField ID="currUserID" runat="server" /> <asp:HiddenField ID="currMachineName" runat="server" /> <asp:HiddenField ID="currMachineDOmain" runat="server" />

뒤에서 이렇게 부를 수도 있는 곳:

Page.ClientScript.RegisterStartupScript(this.GetType(), "MachineInfo", "GetInfo();", true);

음, 당신이 HttpRequest를 그냥 사용할 수 없는 이유가 있습니까?이것은 서버 측에 있을 것이지만 필요하다면 자바스크립트로 전달할 수 있습니까?

Page.Request.UserHostName

HttpRequest.사용자 호스트 이름

이와 관련된 한 가지 문제는 인트라넷 환경에서만 작동할 수 있다는 것입니다. 그렇지 않으면 라우터 또는 프록시 주소를 선택하게 됩니다.

언급URL : https://stackoverflow.com/questions/922476/how-can-i-read-the-clients-machine-computer-name-from-the-browser

반응형