2010-01-26 4 views
5

Sto cercando di fornire un modo per gli utenti della mia LAN di "registrarsi" con l'amministratore di rete (io) senza dover a) ospitare una pagina sul mio computer b) ospitare uno script sul server centrale (poiché è solo un router, non un server HTTP solido) o c) sottoscrivere un dominio dinamico per uno dei primi due ed evitare la confusione di inviare un URL a un collegamento a un IP locale.Metodo lato non server per ottenere l'indirizzo IP locale nel browser?

C'è un modo semplice per visualizzare l'indirizzo IP locale sullo schermo tramite uno script sul lato client? Sto pensando che forse potrei avere un iframe che punta ad un url generico con qualche javascript nel percorso, in modo che possa far andare gli utenti in un sito non locale, e l'iframe potrebbe apparire con il loro indirizzo IP che loro può quindi entrare in un modulo nella pagina principale remota.

Se tutto il resto fallisce, c'è un modo per loro di cercare il loro IP che è multipiattaforma e non implica l'uso della riga di comando (penso che il primo, anche se impossibile, sia probabilmente più realistico del secondo).

+0

Sembra una domanda sistema di amministrazione per me - mossa per serverfault.com – Oded

+0

E 'solo amministratore di sistema fino a quando la necessità per javascript/iframes entra in esso. Non ero sicuro se quella fosse la loro borsa. Ma darò un colpo. – Anthony

risposta

1

Sì, c'è effettivamente. Penso che ci sia un esempio di ciò che si sta cercando di fare qui: http://www.whatsmyip.org/more/

se si visualizza sorgente in quella pagina si vede il seguente per la sezione IP interno:

      <p><b>Internal (LAN) IP</b>: <span id="localip">Checking...</span> 
         <script> 
          function MyAddress(IP) 
           { document.getElementById("localip").innerHTML = IP; } 
         </script> 
         <applet code="MyAddress.class" MAYSCRIPT width=0 height=0> 
          Sorry You Need Java For This To Work 
         </applet> 

Quindi vi sto pensando avere un paio di opzioni, puoi scaricare la copia dell'applet java compilata su quel sito, o scrivere la tua. L'idea generale di come funziona, è che i carichi di applet java leggono l'ip locale, quindi chiamano nel DOM e aggiornano l'html interno di quell'elemento. (btw, non ti sto dicendo di rubare l'applet, ma è un suggerimento se volessi provarlo a scopo didattico)

Spero che questo aiuti. Mark

7

Grazie a Webrtc è possibile accedere all'IP locale da javascript.

Date un'occhiata a: http://net.ipcalf.com/ (fonte)

(Funziona in cromo)

Tuttavia accesso IP locale da JavaScript potrebbe essere un problema di privacy e sicurezza.

e sotto più semplice esempio poi net.ipcalf.com

e sul jsfiddle

var RTCPeerConnection = window.webkitRTCPeerConnection || window.mozRTCPeerConnection; 

var configuration = { "iceServers": [] }; 
var pc; 
var localIP; 

if(RTCPeerConnection){ 

    pc = new RTCPeerConnection(configuration); 
    pc.onicecandidate = function (evt) { 
     if (evt.candidate) { 
      if (!localIP) { 
       localIP = getIpFromString( evt.candidate.candidate); 
       console.log(localIP); 
      } 
     } 
    }; 

    pc.createOffer(function (offerDesc) {; 
     pc.setLocalDescription(offerDesc);          
    }, function (e) { console.warn("offer failed", e); }); 

    function getIpFromString(a) 
    { 
     var r = a.match(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/); 
     return r[0]; 
    } 

} else { 
//browser doesn't support webrtc 
} 
+1

Com'è un problema di privacy? Il fatto che il tal dei tali sia all'IP pubblico A.B.C.D e l'ip locale D.E.F.G è in qualche modo più un ID allora tutte le altre cose che puoi controllare sulla macchina di un utente? Oppure puoi conoscere la loro sottorete e iniziare la scansione anche se probabilmente già conosci per la maggior parte degli utenti è 192.168.xy o 10.0.xy ecc. Dove x = 0 o 1. È solo curioso di sapere se c'è qualcosa? m mancante. – gman

+0

@gman Forse dovrei rimuovere la parola "enorme" :) Al momento è stato rispondere alla domanda che avevo alcune preoccupazioni su cose come: Non puoi nasconderti usando un browser diverso (due browser avranno lo stesso locale ip) + pochi altri bit per impronte digitali del browser. Enumerazione della sottorete, accesso al router, stampante di altri dispositivi locali ed esecuzione del codice tramite XSS - È solo un altro vettore di attacco.Forse anche alcuni problemi con l'attacco a tempo. –

+0

Grazie, mi hai salvato la giornata! –