2009-06-25 9 views
1

Ist es möglich mit nur JavaScript die IP-Adresse des Benutzers zu erhalten? Wenn das so ist, wie?JavaScript: Wie bekomme ich die IP-Adresse der Benutzer?

+1

Grundsätzlich eine exakte Kopie von http://stackoverflow.com/questions/391979/get-client-ip-using-just-javascript – merkuro

+1

die mit json hier gelöst: http://stackoverflow.com/ Fragen/102605/can-i-lookup-die-ip-adresse-eines-hostname-from-javascript – Vladiat0r

Antwort

1

Ich glaube nicht. Sie müssen eine serverseitige Sprache verwenden. Oder finden Sie einen Dienst, den Sie vielleicht mit AJAX verwenden könnten, aber ich bin mir nicht sicher, ob einer existiert.

0

Nein. Es ist streng Client-Seite, so dass es einige sekundäre Technologie verwendet, um die IP-Adresse zu finden.

Eine Google-Suche bietet viele Optionen.

+0

Sie können ein Beispiel für diesen sekundären Dienst geben. Wie würde das denn funktionieren? Dann würde * mein * Webserver die Anfrage weiterleiten ... also würde der sekundäre Dienst einfach die IP-Adresse meines Webservers und nicht den Client-Browser –

+0

zurückgeben 'wie PHP oder .NET, die auf Ihrem Server ausgeführt werden. Ihre Frage wurde speziell gefragt, ob Sie NUR Javascript verwenden könnten, was nicht möglich ist. Sie benötigen ein serverseitiges Skript, um diese Informationen bereitzustellen. Wenn Sie den Prototyp oder jQuery verwenden, können Sie problemlos AJAX-Anforderungen ausführen und den gewünschten Wert zurückgeben. Für weitere Informationen empfehle ich eine der oben genannten SO Fragen oder siehe http://javascript.about.com/library/blip.htm, die beschreibt, wie man es mit Java, PHP, ASP, .NET und CF macht – Paulo

0

Wie wäre es mit einem dieser Online-Dienste, die Ihnen die IP-Adresse des Anfordernden mitteilen? Ich habe sie nur im Kontext einer HTML-Ansicht gesehen. Aber meine Idee ist, dass Sie eine Anfrage stellen, und die Antwort würde die IP-Info enthalten (auf eine grobe Art und Weise).

0

Ich habe selbst mit diesem selbst gespielt. Sie können die lokale IP-Adresse des Benutzers abrufen, wenn sie bestimmte Browser verwenden, die JavaScript mit WebRTC verwenden. WebRTC wird derzeit von Chrome, Firefox und Opera unterstützt. Es funktioniert also nicht in allen Browsern, aber es ist ein Anfang. Eine großartige Lösung bietet mido in einer früheren Frage mit dem Titel How to get client’s IP address using javascript only?.

Dies ist der Code, den ich gerade versuche zu ändern, also kann ich die IP-Adressen in Variablen speichern, statt sie nur anzuzeigen. Ich habe diesen Teil noch nicht herausgefunden, aber es sollte dir helfen. Einfach ausschneiden und in eine Textdatei einfügen und in Ihrem Browser öffnen.

<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> 
Verwandte Themen