2009-06-25 3 views
1

JavaScript를 사용하면 사용자의 IP 주소를 가져올 수 있습니까? 그렇다면 어떻게?JavaScript : 사용자에게 IP 주소를 얻는 방법?

+1

기본적으로 여기에 JSON으로 해결된다 http://stackoverflow.com/questions/391979/get-client-ip-using-just-javascript – merkuro

+1

의 정확한 복제본 : http://stackoverflow.com/ 질문/102605/can-i-lookup-the-ip-address-of-a-hostname-from-javascript – Vladiat0r

답변

1

나는 그렇게 생각하지 않는다. 서버 측 언어를 사용해야합니다. 또는 AJAX에서 사용할 수있는 서비스를 찾을 수도 있지만, 만약 존재한다면 확실하지 않습니다.

0

아니요. 엄격하게 클라이언트 측에서 IP 주소를 찾기 위해 일부 보조 기술을 사용합니다.

Google 검색은 많은 옵션을 제공합니다.

+0

이 보조 서비스의 예를 들려주십시오. 또한 그 방법은 그때부터 * my * 웹 서버가 요청을 전달한다는 것을 의미 할 것입니다 ... 그래서 2 차 서비스는 단순히 클라이언트 브라우저가 아닌 웹 서버의 IP 주소를 반환 할 것입니다. –

+0

실제로 저는 '보조 기술 '서버 또는 서버에서 실행되는 PHP 또는. 귀하의 질문은 귀하가 할 수없는 자바 스크립트 만 사용할 수 있는지 특별히 물었습니다. 서버 측 스크립트에서 해당 정보를 제공해야합니다. Prototype 또는 jQuery를 사용하는 경우 쉽게 AJAX 요청을 수행하고 원하는 값을 반환 할 수 있습니다. 자세한 내용은 위의 관련 질문을 제안하거나 http://javascript.about.com/library/blip.htm에서 Java, PHP, ASP, .NET 및 CF로 수행하는 방법을 설명합니다. – Paulo

0

요청자의 IP 주소를 알려주는 온라인 서비스 중 하나를 사용하는 것은 어떻습니까? 나는 html보기의 맥락에서만 그들을 보았다. 하지만 내 아이디어는 당신이 어떤 요청을하는 것입니다, 그리고 응답은 IP 정보를 (일부 원유 방식으로) 포함됩니다.

0

나는 실제로 이것으로 놀고있다. WebRTC에서 JavaScript를 사용하는 특정 브라우저를 사용하는 경우 사용자의 로컬 IP 주소를 얻을 수 있습니다. WebRTC는 현재 Chrome, Firefox 및 Opera에서 지원되므로 모든 브라우저에서 작동하지는 않지만 시작됩니다. 위의 질문에 mido이라는 훌륭한 솔루션이 How to get client’s IP address using javascript only?이라는 제목으로 제공됩니다.

이것은 현재 변경하려고하는 코드이므로 IP 주소를 단지 변수를 표시하는 대신 변수에 저장할 수 있습니다. 나는 아직 그 부분을 알지 못했지만, 그것은 당신을 도울 것입니다. 잘라내어 텍스트 파일에 붙여넣고 브라우저에서여십시오.

<html> 
<body> 

<p id=saveIP> Replace this with IP </p> 

<script> 

function findIP(onNewIP) { // onNewIp - your listener function for new IPs 
    var myPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; //compatibility for firefox and chrome 
    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; 
    //window.saveIP = pc; 
    //window.saveIP = localIPs; // Returns [object, object] or JSON.stringfy returns {} 

    function ipIterate(ip) { 
    if (!localIPs[ip]) onNewIP(ip); 
    localIPs[ip] = true; 
    } 
    pc.createDataChannel(""); //create a bogus data channel 
    pc.createOffer(function(sdp) { 
    sdp.sdp.split('\n').forEach(function(line) { 
     if (line.indexOf('candidate') < 0) return; 
     line.match(ipRegex).forEach(ipIterate); 
}); 
    pc.setLocalDescription(sdp, noop, noop); 
    }, noop); // create offer and set local description 
    pc.onicecandidate = function(ice) { //listen for candidate events 
    if (!ice || !ice.candidate || !ice.candidate.candidate || !ice.candidate.candidate.match(ipRegex)) return; 
    ice.candidate.candidate.match(ipRegex).forEach(ipIterate); 
    }; 
} 


var ul = document.createElement('ul'); 
ul.textContent = 'Your IPs are: ' 
document.body.appendChild(ul); 

function addIP(ip) { 
    console.log('got ip: ', ip); 
    var li = document.createElement('li'); 
    li.textContent = ip; 
    window.saveIP = ip; // <--value captured is [object HTMLParagraph]; JSON.stringify returns {} 
    ul.appendChild(li); 
} 

findIP(addIP); 
document.getElementById('saveIP').innerHTML = JSON.stringify(window.saveIP); 
</script> 
</body> 
</html> 
관련 문제