Come può un server internet trovare il mio indirizzo IP locale? [duplicare]

3

Questo sito mostra il mio IPv6 pubblico, il mio IPv4 pubblico e il mio indirizzo IP locale . Il primo e il secondo sono chiari, ma come può un servizio web localizzato nel WWW determinare il mio indirizzo IP locale dal momento che viene creato un router per impedire tali pratiche ed è fatto per isolare la rete domestica privata dalla rete pubblica globale.

Quindi la mia domanda è: come può un webserice situato in internet determinare il mio indirizzo ip locale che il mio computer usa per parlare con gli altri nella mia rete privata locale?

    
posta Valor Naram 13.02.2018 - 12:24
fonte

2 risposte

4

Come risulta, la recente estensione WebRTC di HTML5 consente a javascript di interrogare l'indirizzo IP del client locale. Una dimostrazione del concetto è disponibile qui: link

Questa funzione è apparentemente di progettazione e non è un bug. Tuttavia, data la sua natura controversa, sarei cauto nel fare affidamento su questo comportamento. Ciononostante, penso che indirizzi perfettamente e in modo appropriato il tuo scopo (rivelando all'utente ciò che il browser sta perdendo).

link

    
risposta data 13.02.2018 - 12:35
fonte
3

Tali servizi web come whatismyip.com utilizzano javascript per determinare il tuo indirizzo IP locale. Di seguito è riportato il codice estratto dal sito che hai menzionato sopra:

function checkLocal() {
            window.RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;   //compatibility for firefox and chrome
            var pc = new RTCPeerConnection({iceServers: []}), noop = function () {
            };
            pc.createDataChannel("");    //create a bogus data channel
            pc.createOffer(pc.setLocalDescription.bind(pc), noop);    // create offer and set local description
            pc.onicecandidate = function (ice) {  //listen for candidate events
                if (!ice || !ice.candidate || !ice.candidate.candidate) return;
                //reads out local ip
                var myIP = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/.exec(ice.candidate.candidate)[1];
                jQuery(document).ready(function () {
                    jQuery("#local-ip").append("Your Local IP is: " + myIP);
                    jQuery("#local-ip").show("slow");
                });

                pc.onicecandidate = noop;
            };

}

Il codice si collega al tuo pc (il PC è auto-referente), ma con l'interfaccia sei in grado di leggere i dettagli del socket e che include l'ip locale in cui il tuo computer è conosciuto nella tua rete locale. Questa è una pratica comune per ottenere il tuo indirizzo IP locale. È nuovo per me che può essere fatto con javascript.

Per ulteriori informazioni sull'API RTCPeerConnection js: link

    
risposta data 13.02.2018 - 12:37
fonte

Leggi altre domande sui tag